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