Building a GUI for MacPorts

March 24, 2008 § 5 Comments

In a fit of enthusiasm/hubris, I volunteered to be a mentor for MacPorts participation in the Google Summer of Code. Specifically, I’m taking on the issue of Graphical User Interfaces, because I once wrote one for DarwinPorts (the predecessor to MacPorts. Unfortunately, the code seems to be long gone; FreeBSD mirrored the dp-cocoa and PortsManager projects, but all the folders appear to be empty. :-(The current “state of the art” in MacPorts GUIs is the clever Port Authority by Kevin Walzer.  Kevin did a fine job,  but there is community interest in something that is:

  1. Native Cocoa
  2. Fully Open Source (and thus free, not shareware)
In addition, I personally believe the biggest challenges to  greater MacPorts adoption are:
  •  removing the need to run as root
  •  installing built packages, rather than needing to compile ports
Thus, I believe the most important task for this GSOC is not so much writing a pretty GUI (though that’s essential!) but devising a compelling user experience for “non-geeks” to use MacPorts; which may well mean co-developing the necessary infrastructure!
Anyway, the steps I would recommend to anyone interesting in this are:
  1. Installing and using MacPorts, both via the command-line and Port Authority
  2. Comparing that user experience with Fink Commander (from the parallel Fink project)
  3. Exploring the internal Tcl libraries used by the port(1) command-line tool
  4. Identifying the key functionality to provide to user, both now and in the future 
  5. Designing an Objective-C (or Ruby, or Python) wrapper for those Tcl calls (perhaps leveraging Objective-C/Tcl or tclobjc.)
  6. Developing a reusable MacPorts Framework, for both this GUI and potentially other projects
  7. Working with the MacPorts team (perhaps including other GSOC members) to address the pre-compiled packages and non-root-user issues
  8. Building a simple GUI to “prove out” the framework 
  9. Develop an extensible architecture (palettes, services, etc.) for future GUI development
  10. Integrate nifty Leopard features (Core Data? Animation? Scriptability?)

Of course, that would be a lot to do in one Summer! For those submitting applications (due March 26th, I believe) the key is to demonstrate that you understand the larger problem and what you can realistically accomplish within the time available — and how others can build on it in the future.

Where Am I?

You are currently browsing entries tagged with dp-cocoa at iHack, therefore iBlog.