Architectural proposal
Jordan K. Hubbard
jkh at apple.com
Sun Mar 23 18:36:46 PDT 2008
On Mar 23, 2008, at 11:34 AM, Michelangelo De Simone wrote:
> Thanks for your answer Jordan, hearing your opinion is very
> important to me. You are right, a classical Cocoa app would solve
> some of the basic tasks I mentioned, if all that we want is having
> MacPorts being used by one (experienced) user:); but this would lead
> to some major challenge once someone will want to setup another
> client, perhaps a web-based one or a Java-based one (it's just an
> example:)): he shall write from scratch the entire lower layers of
> his app to make it work the way he wants, dealing with permissions
> as well (Task 7). No word about cuncurrent MacPorts running on the
> same system or the fact that a solution of this kind would be future-
> proof, in case MacPorts evolved.
> Generally speaking Task 5 ("GUI") would be easily addressed with an
> upper layer to manage MacPorts Core.
OK, so, let's take your points on order:
1. A Cocoa app would actually be aimed at the inexperienced user, not
the experienced one, so I'm not sure I see your point. It's also an
unquestionable fact that 99.9% of all Macs are single user (even on an
XServe sitting in a rack somewhere, it's a single admin configuring it
to provide services to multiple people) so there's no need to add per-
user ACLs or have per-user interfaces.
2. Your raise the issue of multiple types of clients (Cocoa, web, etc)
and that's a fair one, particularly if the ports collection on a given
machine is going to need to be administered both locally and remotely,
but that's more of an argument for making the existing set of port(1)
APIs more robust and/or complete than adding an additional layer. In
other words, if we really want to support multiple interfaces (and
writing a web interface is a very different challenge, with different
constraints, than a Cocoa UI) then I think the right approach isn't to
create a complex interpositioning layer with a daemon managing the
collection, the right approach is to provide the right port APIs for
making the creation of such alternative UIs easier and more straight-
forward.
I also say this because the existing Tcl / C APIs for MacPorts were
designed with this kind of thing very much in mind (the ui_foo APIs,
for example, are implemented as abstractions for just this reason),
though their evolution may not be (and probably is not) complete. The
shortest distance between where we are and where you want to go would,
therefore, seem to be to enhance what we have rather than create
another layer. Again, MacPorts is already architected with
embedding / external management in mind, so the question would be more
one of "how can I make it do what I want" vs "how can I create another
management layer."
I see Rainer has already said many of the same things, so I'm clearly
not alone. :-)
> Anyway thank you and don't be concerned, I really appreciate direct
> approaches.:)
I'm glad to hear that since those are the kind I like best. :-)
I also really don't want you to read all this as "they don't like my
ideas!" or "clearly they do not see how another indirection layer
could be useful", since I think we DO like your ideas and, with our
academic researcher hats on, can always see the potential application
for another abstraction layer (dozens of such layers can, in fact, be
easily imagined if you put your mind to it). What we're trying to say
is that it's also sometimes very important to focus purely on the goal
and see how it can be done with the least amount of time and effort,
then pick an approach which is somewhere in between "most flexible"
and "quickest" if you want to successfully create software that people
actually use. I think your first approach is too oriented towards
flexibility and not enough towards the pragmatic and more quickly
achievable.
- Jordan
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/macports-dev/attachments/20080323/ce864e31/attachment.html
More information about the macports-dev
mailing list