Architectural proposal

William Siegrist wsiegrist at apple.com
Sat Mar 22 17:42:08 PDT 2008


By the way,  Michelangelo is proposing this in general, but is also  
looking to do part of this for GSoC.  I wanted him to solicit  
feedback, especially since this idea touches on a lot of the tasks  
we're looking for in GSoC (privilege separation, GUIs, etc).

-Bill



On Mar 22, 2008, at 5:21 PM, Michelangelo wrote:
> Hello,
>
> I've been thinking about this proposal for the whole day; William  
> has suggested me to write it here, to hear directly from you, to  
> hear your feedbacks and, most thing important for me, your objections.
> Ah! I was about to forget, my name's Michelangelo De Simone, I'm  
> very pleased to meet you all.:)
>
> Synopsis
> MacPortsDaemon (“MaPoD”) is an additional layer above the existing  
> MacPorts utilities and API that provides asynchronous access to  
> MacPorts functionalities (and new ones) to upper layer clients. It’s  
> based on a pluggable architecture.
>
> Visionary scenarios
> Mike (limited user) wants to use an Adium version built on his own,  
> to accomplish that he launches a MacPorts/MaPoD client, search for  
> Adium in the search box, once he has found it he chooses to build  
> and install it.
> The client confirms the action to Mike and giving him a notification  
> that his version of Adium will be delivered directly into his ~/ 
> Applications folder once the build process is over. The client  
> becomes immediatly available for new commands.
>
> Amanda (limited user) already built Cyberduck but she needs it no  
> more and then she decides to uninstall it. To accomplish that Amanda  
> launches a MacPorts/MaPoD client, search for installed apps, once  
> she has found Cyberduck she select it and mark it for removal. Her  
> client confirms the action and becomes immediatly available for new  
> commands.
>
> John (administrator on his own system) decides that Mike and Amanda  
> need Gimp, so he decides to build and install it in order to let  
> Amanda and Mike use it. To do that he launches a MacPorts/MaPoD  
> client, search for Gimp; once he has found it he tells the client to  
> install Gimp system wide, for users to use it. His client confirms  
> the action and becomes immediatly available for new commands.
>
> Amanda (limited user) needs Gimp, so she starts looking for it with  
> her MacPorts/MaPoD client and asks the client to build and install  
> it. Client notifies Amanda that Gimp is already being built because  
> of John choice to deploy it system wide and that she we’ll be able  
> to use in some time; MacPorts/MaPoD will notify her with a Growl  
> notification when Gimp will be ready to be used.
>
> Mike (limted user) asks himself how to remove objects and “stuff”  
> produced by MacPorts/MaPoD and finds out that there’s no reason to  
> be concerned about because MacPorts/MaPoD mantains itself scheduling  
> maintance operations at the right time.
>
> Amanda (limted user) worries about tree sync and tries to manually  
> update it using her client but it notifies her that the latest sync  
> has been done automatically by MacPorts/MaPoD itself yesterday night.
>
> MaPoD Architecture Overview
> MaPoD aims to provide MacPorts additional features applying de- 
> coupling among actual and future software components. See pic here: http://snipurl.com/22dyy
>
> The whole architecture of MaPoD shall be developed as a system  
> service (LaunchDaemon), letting the clients at the upper layer  
> request services asynchronously  (“Build Adium, notify me when you  
> are done”); users could also benefit from scheduled/automatic  
> maintance operations such as self-update, application upgrades, tree  
> syncs, objects cleanup.
>
> MaPoD Core ‘s task is to accomplish basic functionalities, wrapping  
> those already provided by MacPorts’ port and adding them mechanism  
> such scheduling, permission managment, event notifications (“Adium  
> succesfully built by John”). No user on the system should sudo to  
> build an app for his own use.
>
> MaPoD Interface is the real glue between MaPoD/MacPorts and GUI.  
> Clients and MaPoD are completely loosly coupled because MaPod  
> Interface provides a neutral way for them to communicate.
>
> Third party MacPorts developers could develop plugins to extend core  
> functionalities (“Build Adium, notify me when you are done with a  
> Growl notification” or “Build Adium, notify me when you are done  
> with an email to jdoe at apple.com”).
>
> Conclusions
> With the appropriate choices any user on the same system, even  
> limited ones, would see a full-featured MacPorts “distribution”; any  
> user will have the possibility to search, install (from source or  
> normal binary), remove his application with no touch to MacPorts at  
> all. System administrator would also benefit from a fine grained  
> permission system (“Do not let Mike build Adium” or “John can build  
> and install only between 3pm and 9pm”). MacPorts installation would  
> be “piloted” by MaPoD itself, so there will be no need to sudo-run  
> it for occasional users. It’s clean, it’s “secure” (you know, Santa  
> believes in security...:)).
>
> Whis this architecture possibilities are endless: how long would be  
> needed to develop a plugin to mirror the tree among multiple nodes?  
> How long to develop a web client and an adapter to manage the same  
> build on multiple nodes?
>
> Obviuosly MacPorts core should never be used by users/clients,  
> preferring MaPoD way to accomplish tasks.
>
> Back to the ground, there is much effort to spend and many issues to  
> solve; first of all: how should MaPoD be launched, with whose  
> privileges and permissions? Which technology should be used to  
> develop all this stuff? Obj-C or C++ would be either good choices,  
> once a good threading model has been decided (NSThread in 10.5 is a  
> slightly forced choice).
>
> What about dependencies overlap?
>
> To respect decoupling how should MaPoD interface expose its own  
> services? Stream/Socket interface?
> -- 
> // Et quid amabo nisi quod rerum enigma est?
>
> _______________________________________________
> macports-dev mailing list
> macports-dev at lists.macosforge.org
> http://lists.macosforge.org/mailman/listinfo.cgi/macports-dev




----
William Siegrist
Software Support Engineer
Mac OS Forge
http://macosforge.org/
wsiegrist at apple.com
408 862 7337





-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 2421 bytes
Desc: not available
Url : http://lists.macosforge.org/pipermail/macports-dev/attachments/20080322/65c4825e/attachment-0001.bin 


More information about the macports-dev mailing list