On 26/01/2011 22:45, Andrei Alexandrescu wrote:
Seems to be unduly difficult in Python:

http://www.google.com/buzz/michael.bruntonspall/AcMtiMEUgZ2/Packaging-and-deploying-python-web-apps


We need to have a good solution for D.


Andrei


I'm not really familiar with Python so I didn't understand all the implications with the issues he encountered on that article. From what I understand, Python on its own (the Python installation) does not allow multiple versions of the same library to be installed on it, thus the necessity of virtualenv. If that is the case, that seems a pretty bad design to me, for the reasons he mentioned. virtualenv should be the default way to do things. I mean, it's DLL Hell all over again, only in a different platform (Python runtime instead of Windows). People keep making the same mistakes...


As for the rest of the article, well, it's mostly about web application deployment, which is a different concern (although related) to a package and version management system. We don't even have anything to deploy to in D, AFAIK.


In my view, these are the features/concerns that should be considered for a package management system:

1: "package" version and dependency management (ie, verifying the correct dependencies are present) 2: A well defined, structured, and hopefully platform independent, way to compile source "packages", transforming them into binary "packages". 3: Adding, removing, or updating "packages" from some shared repository online (either a central repository or not). 4: A way to publish new "packages" into shared repositories (either a central repository or not).

5: Additional I would also like the possibility to add another layer of visibility/encapsulation to "packages", that is, to specify which modules/types/packages/etc should be visible to external "packages". This idea is taken from OSGi, and it would subsume the need for this:
http://d.puremagic.com/issues/show_bug.cgi?id=2529
, and is generally a very nice mechanism to expose a clean API, that may not be possible with D's protection modifiers (public, private, etc.) alone, for large projects at least.


I think concerns 1, 2, 5 are the most important ones (4 not so much). Concern 2 however, is likely also the hardest one to implement, by far. (note the "structured" and "platform-independent" qualifiers... we should strive to stay clear from make/automake crap and the likes as far away as possible)

1 and 5 are particularly of interest to me, because it is the way I would like to implement project dependencies in DDT, from the start, instead of having something which is just IDE specific. Much better to have a toolchain standard.

--
Bruno Medeiros - Software Engineer

Reply via email to