dubuntu-team team mailing list archive
-
dubuntu-team team
-
Mailing list archive
-
Message #00103
Re: cli frontend
Ok, let's take a break from this. I think it's time I see it in action.
I would however like to seem you're ideas on the database first.
Charl
On Wed, 2009-07-08 at 16:39 +0300, Jay I. wrote:
> > I think its actually more of a matrix! Categories/pacakages on the
> > left, Requirements (search categories) on top. Refer to my initial
> > e-mail. This is the ways a "spec sheet" is normally presented, e.g.
> > when you are comparing different cars/computers/programs with each
> > other.
>
> it's a 'relation' (in mathematical terms) and yes it can be viewed as a matrix so basically i agree.
> on the left - paths to packages/normal categories, on the top - search categories. but i think it's better to treat search categories
> exactly as normal one's.
>
> something like this:
>
> [pack 1] [pack 2] [pack 3] ...
>
> [path 1] X X
> [path 2] X
> [path 3] X X
>
> actually there's no principal difference between search categories and normal categories. for every normal category in fact we define
> a requirement - items inside it must be related in some way. when we create a normal category 'c++/ide's' we actually define a requirement
> that all packages in that category must be ides and support c++.
>
> > NO! The categories you'll be presented with will be determined by the
> > requirements you select. E.g. if you select Web development as a
> > requirment, you'll have a "web server" category, which will allow you
> > to
> > select which (or whether at all) you want to install a web server.
> > The
> > same does not apply to doing Gnome desktop development.
>
> i meant that you will show only those categories that contain some items
> that match requirements and hide those that don't but both visible and
> invisible categories will make up the same tree. you can put all web
> related packages in 'Web server' but after this you cannot add some of
> them also to say 'Web client' but normally you would need it caz there
> will be some common packages. of course you can create categories:
>
> web/
> web server
> web client
> common
>
> but a newbie would like to see only 'web server' and 'web client'
> because the role of common packages can be understood much easier inside
> a more specific context (web server or web client). for example you can
> add some javascript related packages to 'common' but what a description
> will you attach? 'this package is about javascript programming language
> that's used both clientside and serverside'? i would place such packages
> in both 'web client/scripting' and 'web server/scripting/asp'. it makes
> much more sense because when a newbie first looks at these packages
> inside 'web client/scripting' he already knows that javascript is used
> for clientside scripting because it's mentioned in description of this
> category. when he looks at the same packages inside 'web
> server/scripting/asp' he already knows that javascript is one of the
> languages supported by asp technology. this makes much more sense. but
> anyway we will have to add the packs to exactly one normal category so
> we may need to have that web/common but we can hide it from the user
> (without hiding any packages as you see).
> >
> > I'm not hardcoding "search categories". Step 2 merely presents the
> > packages that meets the specifications in there categories. This step
> > is actually "package selection". To avoid giving the guy all the
> > packages in one long list, the are grouped in categories.
> >
> right, you are not hardcoding search categories but you are hardcoding
> the way you represent data to user. let me explain. let's imagine you
> have these two cats:
>
> - web development
> - gnome development
>
> netbeans can be used to do both things so as these are normal categories
> you will have to put netbeans into a separate category - say 'ide's'.
> it'd be just incorrect to put it into web development or gnome
> development.
>
> normally i'd be nice if you could see netbeans both inside 'web
> development/ide's' and 'gnome development/ide's' but as you are using
> only normal categories you can't. so when user tells the installer that
> he wants to do some web development it shows him 'web development' and
> 'ide's' and hides 'gnome development'. but it's not good as user may not
> know what ide's are and of course he will expect to see all relevant
> stuff inside 'web development'.
>
> > > in my approach for items inside any category (including
> > > the root category or a search category) a new layout can be defined
> > > using search categories.
> >
> > I don't see how this really differs. You insist in doing it a tree, I
> > insist in splitting it up into two steps. We achieve the same.
>
> no, these things really differ. in your approach you filter the same
> tree of normal categories so if you have two categories - 'ide's' and
> 'debuggers' - after filtering you will see them both but they will
> contain only relevant debuggers and ide's. so you will see the same tree
> but with only relevant items made visible. for 'c++ development' i would
> like to put ide's into 'ide's' and debuggers into 'debuggers' but for
> something else i may need to arrange the same items differently. using
> my approach i can define a search category named 'a small set of tools
> for c++ development that every newbie can use' and put only 4 packages
> into this category:
>
> - gcc
> - g++
> - dbg
> - eclipse
>
> see the difference? in my approach items are grouped together - in your
> approach you will anyway have eclipse put into 'ide's', gcc - into
> 'compilers' etc. when user will see this cats he will think - oops, i
> don't know what ide's are! oops, i don't know what compilers are! etc.
> so he will have to learn something about compilers, debuggers and ides.
> but my user will only see these four packages and the category
> description will give him a brief info about this packs and how they
> work together but he won't need to have a good understanding of what
> compilers are, what ide's are etc - the description will just tell him
> how to launch eclipse and what buttons to press to build and launch his
> programs. this way user will concentrate on learning the language
> without understanding the basic concepts behind compilers and ide's - he
> doesn't need to know them yet. for example when i started learning
> 'basic' at school i had no idea about compilers or interpreters - i only
> knew how to write some code and how to execute it - i didn't need to
> know that 'basic' is actually an interpreter and when i launch my
> programs he parses my source code, performs some actions based on
> expressions he finds in it etc.
>
> > Actually the requirements is linked to all the categories. You simply
> > define it in the frist step. The categories and packages that match
> > these search categories are then displayed in step two.
>
> right. but you make user define all his requirements in one step.
> there's no step-by-step approach. it can be very hard for him to define
> all his requirements at once. i think it's more psychological - it makes
> a pressure on user when he has to do it all in one step. lets split this
> task into more steps. actually every such task will need different
> number of steps as some requirements can be very complex while others
> can be very simple.
>
> > The reason for splitting it is to prevent you from having to make the
> > same selection over and over, e.g.
> > Gnome / IDE / C++
> > / compiler / C++
> >
> > Now you had to select C++ twice because you didn't do it from the
> > start.
> > Search categories must be applied in the beginning. Categories is the
> > last step.
> >
> taking your categories as a basis i would have this:
>
> gnome / ide / c++
> / compilers / c++
>
> and
>
> / language specific tools / c++
>
> first user realizes that he wants to do some gnome development so he
> goes to 'gnome', then he can select only c++ tools but maybe he's more
> advanced and he wants to browse all supported ide's for example. your
> user would have no such freedom at this step - he'll have to go back to
> step one and rearrange his requirements. it can take him a while to
> understand what he needs to adjust but my user will have enough freedom
> at any level, he will think less and switching back/forth between the
> two steps is just annoying.
>
> > The reason why I'm not
> > presenting it in a tree the way you do is because
> >
> > a. you may want to select more than one option for each search, e.g.
> > you
> > might want to do web development and do HTML + PHP + Python + CGI with
> > C
> > ++. How do you put that in a tree?
>
> simply. user will go to say 'web development/languages' and select
> HTML/PHP/Python/etc. 'languages' can be implemented as a search
> category. so it's basically the same approach but it's MUCH MUCH easier
> to navigate through a tree like hierarchy then to switch back and forth
> between a filter and results. remember that user may not know what he
> needs when he launches the installer. after my user has selected say
> HTML editor and realized that it'd be nice to have a Python editor also
> - he just goes one step back (from /web development/languages/HTML
> to /web development/languages) and then goes to /web
> development/languages/Python. your user will have to go to requirements,
> find where he can select a different language, select it, then go back
> to results, find where he needs to select an editor and finally select
> it. my approach allows him to do it all in one place thus i don't make
> user think more than he needs.
>
> > > on the other hand
> > > your user *must* use a filter in order to take advantage of
> > filtering.
> >
> > No, you can simply leave the default, e.g everything. You choose
> > whether you want to change it.
>
> i mean that my user needs to perform explicit searching only when
> existing search categories are not enough but your user uses filtering
> explicitly all the time - he does have to specify at least some
> requirements as it's silly to install every package that we have in our
> database.
>
> > > in my model filtering is implemented underthehood so user doesn't
> > need
> > > to know about it.
> >
> > I don't get it. If he needs to add search categories, filtering is a
> > very "above-the-hood" process. I would rather say that the guy might
> > step into the trap of forgetting to apply a filter or not
> > understanding
> > the relevance of a filter, because he has to add it manually.
>
> he needs to add a search category only when he's not satisfied with our
> classification (with those search and normal categories that we have
> added for him). remember that with search categories you can create
> several classifications that can overlap. when he really needs to
> perform some pattern-matching he opens a 'search' dialog and specifies
> his requirements - be it a couple of words that must be present in a
> package description or something else. we could even tag packages - e.g.
> eclipse would have these tags - ide, java etc. this will simplify
> searching.
>
> > > search categories don't have any visible differences
> > > from normal ones.
> >
> > I dissagree. A normal category defines what something is, e.g. an
> > IDE.
> > A search category applies to what applies to, e.g. Gnome, C++, etc
>
> you misunderstood me. by 'visible difference' i mean something that user
> can see like you can see this letter. if you take say ten audio files
> and make a copy of them and put the original files into 'By Date'
> directory and the copy into 'By Artist' directory will you see any
> difference? both directories are just directories - they are displayed
> the same way but their actual implementation is hidden from user and in
> fact can differ. this is what mean.
>
> normally you will put your music files into directories by artist like:
>
> music/
> red hot chili peppers/
> scorpions/
>
> this is similar to normal categories. then you can create a directory
> 'by date' and populate in will links to files from /music directory.
> this is analogous to search categories.
>
> in fact it can be even desirable to see which category is 'real' and
> which was created by applying a search criteria however you don't always
> need to know it.
>
> > Agree, but I'm sticking to my point that haveing all search categories
> > visible up front but chosing which ones you want to refine is much
> > easier.
>
> using my approach you combine refinement with navigation. when you go
> into /sbin directory you in fact specify a requirement that you want to
> view only administrative tools. see what i mean? navigation ==
> refinement. in your approach you first navigate thru the tree of search
> categories and the navigate thru the normal categories - too much work.
>
> > > another note. in your scenario you show user a set of 'questions'.
> > but
> > > what if he doesn't understand/like your questions (even after
> > reading
> > > all descriptions)?
> >
> > Then he skips it and simply stick to the defaults.
> >
> not a good solution. if he goes to
>
> desktop development/
> ide's/
> compiler's/
> ...
> language specific tools/
>
> and he doesn't know what ide's or compilers are he will probably go to
> language specific tools where he will select his favorite language and
> only then hit [add recommended/apply defaults].
>
> > But not everything can be presented in a tree, e.g if you want to
> > choose
> > multiple languages and not just one. That's like haveing to choose
> > multiple branches.
>
> when user will navigate to 'desktop development/language specific tools'
> he will see a list of categories named after languages so if he needs to
> select ide's for several languages he'd better go to 'desktop
> development/ide's'. we can add as many different classifications as we
> need to represent all the most popular requirements but you can always
> perform some pattern-matching like you do it in your file system. in
> your file system you can create as many links as you need and you can
> group them into any hierarchy. we can define only the most popular
> classifications and leave the rest to the user.
>
> ok. lets have a break. as i've got a solid vision of how i'm gonna
> implement the database and the backend/cli front end i will go on with
> development and when i'm done with the basic features i will show you
> some actual code and you will tell then whether you like it or not.
>
> regards,
> jay
>
>
References