Package Manager GUI mockup
Hello there!
I was thinking about how Haiku's package management front-end may look like. Here's my mockup:

Before continue reading my explanations, you may want study the mockup for yourself a bit, in order to point out un-intuitive parts.
The top row has settings to limit the list of available packages below.
The "Category" lists various categories of software, like "Audio", "Video", "Graphics", "Games", "Development", "Shell", "Miscellaneous" etc. It also offers "Haiku" for updates to the Haiku system.
Besides those, we'll also have "Installed packages" for active packages, "Uninstalled packages" for those that have been downloaded, but aren't active/installed at the moment. "Update available" will show all packages of your system (installed and currently uninstalled) that have an update available.
"Download in progress" will show all packages currently being downloaded.
"Depots" let's you choose all or specific repositories ("Depots") included in the list. It'll work like the "Disk" pop-up in Tracker's Find... panel. There's an entry "Manage depots..." that'll open the respective tab of the settings panel.
Lastly, you can filter the list with a search string tht will be applied to all visible columns of the list.
The list will behave like a Tracker window, i.e. you can choose what "attributes" are visible, their order and sorting order.
will delete a downloaded package.
will update when available.
will make a package inactive.
will download and install a package or make an inactive package active again.
The functions of all buttons are also available in a context menu.
To the left of the buttons is enough space for a status like a "Installation in progress..." with a barber pole.
The dotted line separating the bottm section is the handle for the split screen that lets you vertically resize the top section.
At the bottom are stats of the selected package to the left. The "Dependecies" will list other needed packages for that app.
To the right is a short description for the app, a screensh ot thumbnail that'll open the full size version in ShowImage and contact email address and homepage URL opening in Mail or Web+ respectively.
I hope this mockup and the possible discussion in this thread can serve as inspiration for the devs that'll work on this app.
Regards,
Humdinger

Comments
Re: Package Manager GUI mockup
Awesome, I like it. It would be nice if one could filter based only on the package name. Say I wanted to install Java, I wouldn't want a bunch of Java apps listed because they contain Java in their description.
Sort of off-topic: I don't like how yum extender takes five minutes to reload all packages after installing packages. Synaptic does a much better job. Hopefully Haiku Depot could cache package lists so it doesn't have this problem
Re: Package Manager GUI mockup
nice mockup, the only thing I dont like is the confusion that might occur between the words "Software" and "Package", at least to the average user. Is "software" the same thing as "package" ? or is "package" part of the "software" ? Is it technically called "software package" ?. I know these questions might seem obvious for the majority here but my experience with helping people around me taught me to question everything.
Another example of something obvious but not so much for a "simple user", wich is : "Whats the difference between delete and uninstall ?", "Is the delete more powerful than uninstall ?", "Why not only use Delete ?"
So all I want to say is that beside the mockups, we should agree also on some "official" and "easy to grasp" terminology in order to increase usability. And believe me, some concept are really difficult for average people even if they dont complain because "it just works like that and you have to get along", for example dealing with the question "should I click twice or once on that ?".
And again, nice work.
Re: Package Manager GUI mockup
Awesome, I like it. It would be nice if one could filter based only on the package name. Say I wanted to install Java, I wouldn't want a bunch of Java apps listed because they contain Java in their description.
In this specific example, I would question why Java should be installed in the first place. After all, apps needing it will automatically get it as a dependency. :)
Generally, this problem can be avoided by temporarily removing the "Description" column.
Another possibility is to slightly highlight the filter string where it occurs. Then you can quickly skim the "Name" column. Would be a nice touch for Trackers type-ahead filtering as well.
Regards,
Humdinger
Re: Package Manager GUI mockup
An awesome looking mockup, indeed! One thing that I find interesting when I update my software is a changelog, so I'd like to see it here too. There's no room for it currently, though.
Another possibility to reduce the clutter is to combine Install/Uninstall buttons.
Drag-n-drop support would be also a nice touch, if you want to get some packages for future purpose, like installing it on a system without Internet connection or if NIC is not yet supported, etc.
Great work!
Re: Package Manager GUI mockup
nice mockup, the only thing I dont like is the confusion that might occur between the words "Software" and "Package", at least to the average user.
"Software Center" in the title is just a place holder for the eventual name. But I do agree that we should come up and stick to a consistent terminology. "Software" is quite a broad, abstract term, that may include all software on your system. "Package" on the other hand can be quite specific, e.g. the "Java" package.
Another example of something obvious but not so much for a "simple user", wich is : "Whats the difference between delete and uninstall ?", "Is the delete more powerful than uninstall ?", "Why not only use Delete ?"
Believe it or not, that point did go around in my mind as well.
Install/uninstall is just such a nice word pair... I can install a package, no matter if I have it already locally on my computer or if I had to get it first from a depot. I can "de-activate" an installed package, but to re-activate a package, clicking "Install" doesn't feel right. Changing the labels of buttons and menu items depending on the contents isn't good design either...
Maybe tooltips like "Uninstall package without deleting" for the uninstall button and "Remove package from disk" for the delete button can help.
Thanks for the feedback so far!
Humdinger
Re: Package Manager GUI mockup
One thing was missing from my mockup: How to deal with other versions of a package.
I propose another button "Version history" in the far left of the button bar or maybe below the stats of the package at the lower left. Click it and you'll get something simple like this:
You'll see every version available for the selected package. Here you see that you currently have 2.1.0 installed and an older version 2.0 uninstalled (but locally still on your disk). Nothing prevents you to have two versions installed side by side (I guess... that depends how clever our package management really is...).
To update to the newest version, just select 2.1.2 and press "Install".
If that side-by-side thing doesn't work - think Haiku system packages including the kernel - that may automatically uninstall (not delete) the currently installed version.
@diver: was that what you had in mind for your changelog? If not, maybe that log could be accessible from the menu bar instead of appearing in the GUI of the main window to avoid clutter.
Regards,
Humdinger
Edit: removes the unnecessary space around the list view.
Re: Package Manager GUI mockup
My 5 cents:
- How about adding full category tree on the left, just like i've done it in SPM
- Info about package [down-left] could be made in outline style [just like apps categories]
Re: Package Manager GUI mockup
Very nice mockup, with a design centered on package categories + current status, which I really like.
So far, my only negative reaction concerns the screenshot area: it's clearly too small, and should definitively supports *multiple* screenshots (without having to click to see each ones at large enough size) not just a single one. Which means that somehow more space should be made for this when at least one screenshot is available.
Maybe the package info could be shown under some collapsable sections, for instance.
Another useful feature I like more and more: a way to see others packages by same publisher.
Re: Package Manager GUI mockup
So far, my only negative reaction concerns the screenshot area: it's clearly too small, and should definitively supports *multiple* screenshots (without having to click to see each ones at large enough size) not just a single one.
I could imagine that those screenshots will be too small regardless how big the thumbnails are. So, to actually see something useful, you'll have to open them fullsize anyway. The screenshot area could show a thumbnail that is resized so it fits best to the available space. If the package provides more than one, show 2 halfsized, 3 or 4 quarter sized (2 rows), 5 or 6 third sized (2 rows) thumbnails. Additionally, a mouse over could show a (relatively huge) half-sized full image.
Maybe the package info could be shown under some collapsable sections, for instance
Yes. The screenshot area could be moved to the left, with an expando stats section below.
Another useful feature I like more and more: a way to see others packages by same publisher.
This could be achived with the filter function. Just like in Tracker, where type-ahead filtering accepts AND linked strings (SHIFT+Space), we could use "|" to separate search strings. The author "YellowBites" under the Wonderbrush title could be clickable. That would automatically fill the filter box with the name of all YellowBites' apps plus the name "YellowBites" itself |-separated. (Also, the "Author" and "Name" columns would be activated if they weren't already).
Regards,
Humdinger
Re: Package Manager GUI mockup
Very nice! Makes me sorta wanta jump right in and code the thing... Anyway, what I would change is the bottom area. I think it's showing too much all at once. I would organize pretty much the whole area into a tab view, with the tabs (more or less) About, Version History, Package Info, Dependencies. That way you have more room for each individual page and there isn't so much different type of info.
Re: Package Manager GUI mockup
Which leads to another, maybe silly, question: for the query part, can't this be simply done by a (packagefs-based) live query, putting this central BeOS/Haiku fs feature back at core?
What would be needed, then, will be some sort of Tracker-live-preview support that will show the package info and the commands available.
IMHO, Tracker would greatly benefits from having live Preview support since long already, something that can't be achieved with tracker add-ons right now.
Re: Package Manager GUI mockup
My quick mockup, a mash of first and second example presented here (second is Synthetic) as sort of integrated into (Navi)Tracker with navigation bar on the left (here displaying package categories).
Also, it worth to think about web-interface for managing packages from localhost or another computer via network (password protected login, obviously). Website with official Haiku packages - HaikuDepot - sort of AppStore would be great, too.
Re: Package Manager GUI mockup
Very nice!
The package description, author(s), link(s), and possibly screenshots should be put in a scrollable TextControl IMHO because they will be variable size from package to package. At least that's what is done in BAboutWindow which contains basically the same info
Re: Package Manager GUI mockup
I have question about our PM, before the real design starts - how about PM that could be based and rely entirely on haikus tracker and specific BeFS Database attributes/extensions-*? No dedicated app for PM. Only modified tracker that reads specific directories and symlinks with info that will be sucked from repository. Then every haiku apps could benefit from this.. for example query / find.. of course tracker will need a small redesign or option to redesign himself when it jumps to 'special' directory where all files/symlinks to PM database lays..
im finding in it a lot of possibilities. for example using attributes and only thacker we could build a nice RSS viewer. Only thing we need is a tracker with GUI that "reacts" to attributes in specific folders and redesign self slightly using attributes in this 'specific directory'. How about that?
for example:
if tracker jumps into folder that has a "packagemanagement" attributes in directory then while jumping into that directory it adjust itself to view this directory like normal package manager [like humdinger proposed]
if tracker jumps into folder that has a "rss" attributes in directory then while jumping into that directory it adjust itself to view this directory like normal RSS Agregator [similar to LifeRea / QuiteRSS]
yeah, we could build even a database that could be used as professional ERP or Business Manager Soft , based on tracker and bfs. But we need tracker to be more flexible in GUI terms and GUI View in tracker should rely strongly on BeFS attributes
*-This idea continues a haiku way to DO things introduced in Beos era for example: with emails in BeFS attributes.
Im waiting for Your comments
cheers
StreaK
Re: Package Manager GUI mockup
im finding in it a lot of possibilities. for example using attributes and only thacker we could build a nice RSS viewer. Only thing we need is a tracker with GUI that "reacts" to attributes in specific folders and redesign self slightly using attributes in this 'specific directory'. How about that?
I really like the idea, but it seems complicated. I see two ways of doing this.
1) There would have to be a system settings file for each different filetype: pkg, rss, etc.
2) We could make the tracker code extendable from the Haiku API so that one could easily make a specialized tracker-like app for a specific filetype.
I think this is a very good idea and should be developed
Re: Package Manager GUI mockup
I like stippi's idea to use tabs to separate the amount of info of a package.
I don't see the point of streak's idea doing all in Tracker instead of a dedicated app. Sounds complicated to me, esp. also considering the managing of online depots. One might add the possibility to install/uninstall packages that are already on disk with a Tracker add-on. But even that seems to me easier from within one dedicated app instead of either having to know the different locations of the packages or starting a query "manually".
Anyway, this thread is to collect some ideas and anything might spark the creativity of the devs that will eventually come up with a PM front-end. So keep 'em coming!
Regards,
Humdinger
Re: Package Manager GUI mockup
Here is what I got so far:
Almost none of it is functional. It is based on dummy package info hard-coded into the application. I want to get a bit further along (if time permits) so that I can be sure of what I really need for the app to work as one would want. Ingo says Oliver and he are really close to having hybrid builds working and then they can merge into trunk. That will update the Haiku Package Kit so that HaikuDepot could actually connect to real repositories. Most of the information displayed in the screenshot will however have to come from other sources. I imagine an open Wiki type of webpage, where this information can be entered (and translated) by "anyone". But stuff like user-ratings will need more than a Wiki page, since the ratings should be entered directly in HaikuDepot and uploaded to the service.
Re: Package Manager GUI mockup
Very nice work, stippi! Watching you evolving the GUI was a pleasure to see.
Have you considered how to choose between different versions of a package? A user may want to have different versions installed in parallel or downgrade to an older version etc.
Thanks
Humdinger
Re: Package Manager GUI mockup
One thing that comes to mind is that the version in the package title area could be a drop-down. I don't think that multiple versions of the same package can be installed in parallel. A package defines where its files appear in the unified package FS. Two versions of WonderBrush would definitely clash in defining the same files in the same locations, for example. But the use-case of wanting to install an older version rather than a most current, possibly broken version, would be handled by the drop-down. The additional benefit would be that the user can get to all information in the package description area for the version chosen in the drop-down.
Re: Package Manager GUI mockup
One thing that comes to mind is that the version in the package title area could be a drop-down.
Maybe. If that is obvious enough. Maybe it can also be put into the "Changelog" tab (which might be renamed to "Versions".
Having different versions in parallel probably is not needed, you're right. Since de/activating a package seems to be pretty fast, switching versions shouldn't be very unconvenient. And will probably a quite uncommon use case anyway.
Keep up the great work!
Regards,
Humdinger
Re: Package Manager GUI mockup
Hi, whilst very nice mockups they make me think.
On any other sysem I'd welcome them. Oh Haiku however I'd have imagined something that utilizes the greatness of the core system i.e. the Tracker, the queries and small apps for particular tasks. What I had in mind:
Web service file system to feed the queries (eg one per repo)
Tracker add-ons to manipulate the packages and so on.
It would probably be rather big task to get everything in shape and I appreciate the tools for specific purpose would be easier to develop.
Just my 2 minor coins
Re: Package Manager GUI mockup
I don't really get it. I hear this so often that "everything" could be accomplished with Tracker. This gets limiting so quickly! Just because it sort of works for People files, and barely even works for Mails, it can't be abused for everything. It's not only that a dedicated app is easier to write, it's probably also far easier to use. I agree the list itself resembles what could be done in a Tracker window. Maybe every Tracker window should have the "filter" text field. But what about all the other controls? If I were to implement this in Tracker, I would have to rewrite Tracker to support having these flexible views. In the end, I would want it to look exactly like HaikuDepot looks now (or will look when its done), because I would want everything in one window. So what would be the point?
Re: Package Manager GUI mockup
Let me try to explain, at least my take on it.
I agree with your sentiment that an application dedicated to a task will have a friendlier UI compared to utilizing Tracker to manipulate the files directly, even in cases where Haiku makes use of file system attributes such as email and People files.
However, storing files such as emails or contacts as plain text with attributes editable by Tracker is useful as a way to create an application neutral file format. The user can switch applications without having to go through a complicated and potentially lossy export/import process.
For instance, say you are on Windows using Mozilla Thunderbird to manage your email and you'd like to switch to using Microsoft Outlook. Since the emails are stored in an application specific database you must first export the emails from Thunderbird, then import them into Outlook's database and hope for the best. Most of the time you'll lose some metadata associated with the emails and other data in the process. On Haiku switching from one email client to another, at least in theory, should be painless because all the data is stored in easily accessible file system attributes.
So, when thinking about metadata think about creating a file format useful for cross-application compatibility rather than trying to create files to be manipulated by Tracker directly, that way somebody can come along and write a better package manager application and carry forward the data you've generated.
Re: Package Manager GUI mockup
I fully agree with that. As far as packages go, there is the new Package Kit as an API abstraction for managing them. There will be lots of additional data per package needed to drive the representation in HaikuDepot. I will try to keep a clear layer between that data and the UI itself, it's just good design. I will however not make extra effort to faciliate writing alternative software centers. Like for example by putting parts of it into a library for no other purpose than to faciliate alternative front ends. If some developer deeply dislikes something about HaikuDepot, he has the choice of either pulling out a library himself and writing his GUI on top, or to simply improve HaikuDepot.
Re: Package Manager GUI mockup
great works here, everyone, these are exiting developments.
on terminology: in its menus and filestructure, haiku uses "apps"/"applications" and thanks to apple and google, "app" is now a part of the pop culture lexicon, however "package" as it relates to software is not. hell, are we even using packages? i've dragged and dropped binaries to find them immediately working, which is quite different from installing a .deb or a .ppa under ubuntu, why keep that terminology at all when we're functionally different?
oh, and i must say the ability to install older versions of an app from the manager is phenomenal.
Re: Package Manager GUI mockup
The interface is very nice, and I really love Stippi's simplifications...so friendly! Assuming users are coming to Haiku with no previous experience with package managers, it might be wise to use the most simple layman's terms possible. We can't assume they'll know what a depot is, or even what a package is. When we're in the middle of all this, it seems obvious, but for the sake of newcomers, I'd just suggest the labeling be made as unambiguous as possible.
Re: Package Manager GUI mockup
Also, I just want to echo the other comments that the tabbed info seems like a really nice approach.
Re: Package Manager GUI mockup
Looking good. Is HaikuDepot the final name though? Seems a little abstract. Something like "Software Installer" or "Software Center" would be much more user friendly IMHO.
Re: Package Manager GUI mockup
Just to remind our readers how SoftwareManager (part of SoftwareValet) looked like:
Re: Package Manager GUI mockup
Has this progressed any further than just a mock-up yet?
Re: Package Manager GUI mockup
Hi The123king,
Yes. All screenshots stippi has posted are from the actual app. It's included in current nightly images and does work to some extend. Lately, AnEvilYak was most active to improve HaikuDepot, as it's currently named.
Regards,
Humdinger
Re: Package Manager GUI mockup
i tried haikudepot , and it's a good start, but I think it needs more threads. The UI is too often blocking/hanging.
If you type in the searchfield: "a" then the haikudepot should not block you from adding also let's say "b" after the "a" . At the moment it blocks till list is displaying all software with "a".. etc...
I would put them in different threads. I think stippi needs to experiment with it, till he manages to give the user a smooth experiance.
Re: Package Manager GUI mockup
Hmm, I can't seem to reproduce it over here in vbox. There is a slight delay (less than half a second) but I can't say it blocks the UI. Although, I have these two patches applied https://dev.haiku-os.org/ticket/8007#comment:95 so maybe it has something to do with it.
Re: Package Manager GUI mockup
i tried it too in vbox , yes, might be that is just 1 second or half a second, but it's a little inconvenient that you can not write fluently. And I can imagine that after we have more packages, it will increase.
The same is true, when you have clicked on a package, then the information is updated in the info-panel (bottom of the window), but you can not click fast on one, and then on another.
Or When you are in list of packages, and you are switching with keyboard from one to another package, there it blocks too for also let's say 1 second in vbox.
I would prefer that it works like that:
For example I'm at package.1 in the list, then i go with the keyboard down the list, to package.2 and package.3... etc.. till say package.5
I would like that haikudepot can continue downloading the "info" of package.1 , while I'm going down the list.
Then the thread of the info-panel could from time to time check if the list-view is still pointing at package.1 , if not, interrupt the process of downloading/displaying and moving to the actual position of the list.
Re: Package Manager GUI mockup
I think these sort of usability issues will be fixed/improved once the fundamentals and backend stuff is more complete. And that can probably only be done in earnest when the online repository is in a working state.
I got to say, although PM takes a bit of getting used to (after over a decade of being with a non-PM Haiku) and is still having some rough edges, it's a great user experience already. Also Haiku development is currently quite exciting. Much in flux... PM, two contracts. It's all good!
Regards,
Humdinger