Hi guys,

Attached is a pure-text file (made with vi), containing my ideas so far
for a new MacPorts GUI.  Comments, suggestions and reviews are
welcome.

It is intended to be a simple tool for first-time users (in Basic mode)
and a more versatile tool for more advanced users (in Advanced
mode) to browse the huge amount of information stored in MacPorts.

Fossick is a working title for the GUI --- as explained in the attached.

I have been slowly getting to grips with Xcode 4.6, Cocoa, the
Interface Builder and Objective C in the last few weeks.  It
certainly has a different philosophy from Qt and C++.

A rough prototype layout is now running.  It can load and search
all the ports, but needs more menus and toolbar items and the
functionality that goes with them.  The screenshot is 160 Kbytes.
Should I attach it?

I have also worked out a scheme to launch "port" commands in
the background and monitor the output, requesting an admin
password in the usual Apple OS X popup, when required.

BTW none of the above uses Macports Framework.  It works directly
with the port index file and the "port" command.  IMHO that will
provide a more stable interface than MacPorts Framework, long-term,
and its speed is adequate.

The main window has three panes: top, bottom left and bottom
right, all of which are resizable within the overall window size.

The top pane is a table view of all ports or all those found by the
most recent search (case-insensitive) of name and description and
(optionally) a category.  There will probably also be a way to
select installation statuses (analogous to "port installed", etc.).

The bottom two panes will run a more advanced search, monitor
the output from a background run of "port" commands or provide
various kinds of information about ports clicked on and selected
in the top pane.

Please have a look and send your comments.

All the best, Ian W.

FOSSICK - Specification for a MacPorts GUI
------------------------------------------

Fossick is an Australian word for free, unlicensed exploring of a mine site.
Some fossickers have been known to find valuable gold nuggets, even in recent
years.  "Fossick" also begins with the letters FOSS, so it contains the idea of
searching for and finding Free Open Source Software.

Target Users
------------

1.  People who have just bought their first Apple Mac.
2.  People who have used a Mac for some time, but have not encountered OS X
    "up close" or are not aware of FOSS (Free Open Source Software) available
    on the Mac.
3.  Users of FOSS on the Mac who would prefer to use a GUI or at least have a
    simplified way of installing and updating FOSS.
4.  Expert users of FOSS and MacPorts who would like an alternative tool to
    explore the huge amount of information available in a MacPorts environment
    (16,000+ ports and counting).

Objectives
----------

1.  Make it easy for user groups 1 and 2 to install, update or uninstall the
    basic provider software such as  MacPorts itself.
2.  Make it easy to find FOSS that a particular user might find interesting,
    especially users in groups 1 and 2.
3.  Make it easy to install, update and keep track of selected FOSS in the
    user's system.
4.  Avoid surprises and uncertainty involving long installation times.
5.  When an installation or update fails, make it easy for the user to gather
    and report the necessary diagnostic information and to recover to a
    pre-installation state --- maybe even to attempt to diagnose the problem
    him/herself.
6.  During an installation or update, provide a selectable level of detail re
    what is happening.
7.  Spend less time on handling tickets and mailing list queries (see 5 above).

Requirements
------------

1.  For each FOSS provider (initially only MacPorts), retrieve a complete list
    of all software items provided and their attributes.
2.  Make the list of items selectable and filterable by a range of attributes
    and values, similar to what is possible in MacPorts commands, but possibly
    including an additional list of "root" items on which no other items depend.
3.  Display retrieved lists in table form, with name, installation status,
    version, short description, categories and variants of each item.
4.  Provide a one-click display of full details (as in "port info") for any
    item in in the table view.
5.  For Basic user mode, provide a default search method and basic information
    on each software item (e.g. info, dependencies and home page).
6.  For Advanced user mode, provide an advanced search method and a full range
    of information on each software item (e.g. portfiles, contents, etc.).
7.  Provide menu/toolbar actions for install, upgrade, uninstall, etc. for any
    item in the table view, putting the required action in a list or queue of
    actions to be performed.
8.  Analyse the dependencies and dependency actions implied by an action, before
    it is run, and warn the user if the total number of actions exceeds a limit
    set by Preferences and so the run could take a long time.
9.  When the user signals he/she is ready, perform the collected list of
    actions in background mode, first soliciting a password if required.
10. Collect and store all output from a background run, in case anything goes
    wrong later.
11. Progressively display the results of a background run at a selectable level
    of detail, of which the least detailed would be "<action><item><status>",
    e.g. "install inkscape DONE", "installing inkscape - step 6/13 - libpng",
    "install inkscape FAILED - step 7/13 - poppler".
12. If a run failed, provide options to see more detail of the output, report
    a problem or generate a proforma of an email to a mailing list.
13. If there are notes or post-installation actions for a software item, collect
    them and display them at the end of the run.
14. Keep a history of previous installation actions, dates and times.
15. Save preferences and selections from a previous Fossick session.
16. In saved selections, include the last-used filter and sort-order.
17. In saved preferences, include at least the following:-
        - Whether to run the GUI in Basic or Advanced user mode (default Basic).
        - The number of dependencies that triggers a warning (default 10).
        - The preferred level of detail in output from installation runs
          (default is minimal detail).
        - The number of previous versions of an installed software item to keep
          as deactivated, not including the provider's revisions, which should
          be automatically superseded (default 1).
        - Default filters selected by the user (e.g. Python, games).
        - The set of table-columns to be displayed/hidden.
        - Options dependent on the provider (initially MacPorts only).
18. Support staged installation when there are many dependencies (e.g. qt4-mac,
    then kdelibs4, then digikam or other KDE apps the user requires).
19. If possible, allow the GUI to be terminated, with a warning, when a
    background run is in progress, letting the background run continue.
20. If possible, allow background run results to be picked up and displayed by a
    later run of the GUI application.
21. If possible, allow the GUI application to abort a background run.
22. Provide a cleanup function for a background run that has failed or been
    terminated prematurely for any reason at all.  This needs to be AFTER any
    error handling actions (see 10 above).
23. Provide functions to install, uninstall and update the provider's own
    software (initially only MacPorts and its ports info).

_______________________________________________
macports-dev mailing list
macports-dev@lists.macosforge.org
https://lists.macosforge.org/mailman/listinfo/macports-dev

Reply via email to