GSoC Project: Revitalizing Pallet

Kevin Walzer kw at codebykevin.com
Fri May 29 06:12:42 PDT 2015


On 5/29/15 1:49 AM, Ian Wadham wrote:
>> My project for this year is to get Pallet, the MacPorts GUI, up and running with the support for newest versions of OS X and XCode. After that, I intend to give it, and the Framework, some more modern-day-MacPorts features. No features are set in stone as of yet, but I'm considering adding doctor, reclaim, rev-upgrade, a progress bar, or possibly even the ability to edit portfiles.
> Instead, I started to work on a new GUI which I named Fossick.  It takes rather
> a different design approach - similar to that of Guigna and PortAuthority.  Fossick
> uses only Objective C, Cocoa and Unix utilities and it interfaces to MacPorts by
> using only the "port" command and the portindex file.  My idea is that this is not
> only easy and straightforward, but also more "future proof" than a special-purpose
> library, because the "port" command does not change much over time and edits
> to canned commands can easily be made if/when it does.
As the developer of PortAuthority, the longest-maintained GUI for 
MacPorts (over a decade now), I'd be happy to offer a perspective on the 
state of GUI clients for the project.

MacPorts has never had a fully functioning, actively maintained GUI 
component as part of the project. When I first started using MacPorts in 
2004 or so, there was a Cocoa client in some alpha stage of development, 
but it was never released. At that time the Fink project was MacPorts' 
main competition, and it had a superb, FOSS Cocoa-based client called 
FinkCommander that was actively developed--that was the model.  In that 
environment, I developed PortAuthority, first as FOSS, then later as 
what was then called "shareware." PA took a similar design approach to 
FinkCommander and the approach Ian's project did--sitting on top of the 
command-line client, parsing its output and sending commands back. There 
were other, later projects to develop a MacPorts GUI--Porticus, a 
free-but-closed-source app, and Pallet, first developed by Randall Wood 
and then donated to the MacPorts project, with intermittent maintenance 
since.

Among all these projects, PortAuthority is the only one that has stuck 
around. It's not as heavily used as it used to be (it once made real 
money, now it brings in a little bit each month), but it's still 
standing and advancing when others have stopped. There are a few reasons 
for this:

1. The design decisions of most of the MacPorts-based Cocoa clients to 
work with MacPorts internals rather than following the Unix paradigm of 
having a GUI sit of on top of a CLI make those apps much more complex. 
GUI programming is hard enough without having to translate between 
MacPorts' C- and Tcl-based internals and Cocoa/Objective-C datatypes, 
not to mention the elevation of privileges that is required for many 
operations.

2. GUI programming, by definition, is hard and is a different discipline 
than the programming skills required to maintain MacPorts itself. Cocoa 
is exceptionally complex and hard to learn. I chose to program PA using 
Tk, which simplified things, but only to an extent--the entire process 
of coding to a graphical interface paradigm is simply different than the 
{cmd args} approach and one that fewer devs in the open-source community 
have taken the time to learn.

3. GUI projects, like any other, need ongoing maintenance and 
development to improve and stay relevant. Pallet never got beyond alpha 
stage in my view and has never had a single owner devoted to improving 
it: someone may work on it for a while as part of the GSOC project, and 
add a few features, but then it just sits moribund again. Porticus was a 
more sophisticated project by an experienced Cocoa developer, but he 
apparently lost interest in continuing on it, absent a financial 
incentive. FinkCommander itself has not been touched in years, apart 
from being recompiled for Intel, but it was so well-done that it has 
continued for all these years on the sheer momentum of its initial 
polish. PA continues to receive periodic, annual-or-so updates from me, 
none of which are dramatic in themselves but which do add up over time.

It would be great if Pallet developed into a viable, ongoing GUI client 
for the MacPorts project. My guess is that it will need a lot of work, 
and ongoing maintenance from a single owner or team, to get there.

--Kevin

-- 
Kevin Walzer
Code by Kevin/Mobile Code by Kevin
http://www.codebykevin.com
http://www.wtmobilesoftware.com



More information about the macports-dev mailing list