Expanding Phobos from a flat hierachy

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Wed Feb 6 14:00:05 PST 2013


On 2/6/13 4:24 PM, David Nadlinger wrote:
> On Wednesday, 6 February 2013 at 18:56:49 UTC, Brad Anderson wrote:
>> What is needed to get Orbit off the ground (Kepler's law, I guess,
>> would be the joke answer)?
>
> Somebody actually working on it.
>
> No offense, Jacob, but to me it seems like you have quite a few
> interesting projects (DVM, DStep, Orbit, …), and although you are
> usually quick to advertise them here, it seems that none of them is
> quite ready for prime time.
>
> Maybe concentrating your efforts on one of them would be a good idea?
> Otherwise, you'll inevitably leave behind a trail of broken expectations
> as you cannot realistically expect to support all of them at the same time…
>
> David

I think one demotivating factor for both Jacob and the loosely-defined 
core D team is that we quickly reach irreducible positions on 
fundamental matter. It took literally two years for Jacob to decide to 
do away with Ruby. (Two years for real: 
https://github.com/jacob-carlborg/orbit/issues/1) Now we have 
dependencies on https://github.com/jacob-carlborg/dstack and 
https://github.com/jacob-carlborg/mambo. I took a look. This codebase is 
entirely neat and I'm glad a combination of author's talent and D makes 
the code so easy on the eyes, but there's no way we can ever make this 
part of the official distribution. It's parallel to the canon and some 
of it dedicates hundreds of lines to duplicating Phobos functionality 
with minor distinctions in functionality.

I'm looking at e.g. 
https://github.com/jacob-carlborg/mambo/blob/master/mambo/arguments/Arguments.d 
which I bet money does some cool things with command-line arguments, but 
I see no reason for using it over std.getopt. Similarly 
https://github.com/jacob-carlborg/mambo/blob/master/mambo/arguments/Formatter.d 
is yet another std.format. Then, 
https://github.com/jacob-carlborg/mambo/blob/master/mambo/core/Array.d 
seems to be in the midst of a retrofitting to use std.algorithm as much 
of what it does now is do algorithm-y work with slightly changed names.

Again, this is all fine and I'm not criticizing. If the purpose is to 
build a package manager for one's own use and to amass a community of 
users around it, great. But if the purpose is to make Orbit _the_ 
official package manager of the D programming language, there's no 
equivalent but distinct libraries for command-line arguments, no 
beginsWith that does what startsWith does, etc. etc. etc.

There are three ways I see out of this: (a) Jacob goes full bore and 
ports Orbit to Phobos, and proposes the generally useful parts of his 
library for inclusion in Phobos; (b) Jacob agrees for someone else to do 
a clean room implementation of his package manager design; (c) we agree 
with the status quo with the understanding there's no more dangling of 
Orbit as a possible official package manager.


Andrei


More information about the Digitalmars-d mailing list