The DUB package manager
Jacob Carlborg
doob at me.com
Sat Feb 16 10:10:24 PST 2013
On 2013-02-16 18:10, Sönke Ludwig wrote:
> With the recent talk about Orbit, I thought it is time to also announce
> the package manager that we have been working out based on the simple
> VPM system that has always been in vibe.d. I don't really like stepping
> into competition with Jacob here (*), but the approach is different
> enough that I think it should be put on the table.
>
> Some may already have noticed it as it's mentioned already on the vibe.d
> website and is currently hosted on the same domain as the old VPM registry:
>
> http://registry.vibed.org/
>
>
> DUB has two important development goals:
>
> - Simplicity:
>
> Making a DUB package, as well as using one as a dependency should be
> as simple as possible to facilitate broad usage, also and especially
> among language newcomers. Procedural build scripts often scare away
> people, although their added complexity doesn't matter for bigger
> projects. I think they should be left as an option rather than the
> default.
>
> Turning a library/application into a DUB package can be as simple as
> adding a package.json file with the following content (mysql-native
> is automatically made available during the build in this example):
>
> {
> "name": "my-library",
> "dependencies": {"mysql-native": ">=0.0.7"}
> }
Using a full blow language can look pretty declarative as well:
name = "my-library";
dependencies = ["mysql-native": ">=0.0.7"];
I don't see why something like the above would scare away people. It's
even less code than the JSON above.
> If the project is hosted on GitHub, it can be directly registered on
> the registry site and is then available for anyone to use as a
> dependency. Alternatively, it is also possible to use a local
> directory as the source for a particular package (e.g. for closed
> source projects or when working on both the main project and the
> dependency at the same time).
>
> - Full IDE support:
>
> Rather than focusing on performing the build by itself or tying a
> package to a particular build tool, DUB translates a general
> build receipt to any supported project format (it can also build
> by itself). Right now VisualD and MonoD are supported as targets and
> rdmd is used for simple command line builds. Especially the IDE
> support is really important to not simply lock out people who prefer
> them.
I think it looks like you're tying the user to a particular build tool.
I don't think it's the business of the package manager to build
software. That's the job of a build tool. The package manager should
just invoke the build tool. You just need to support a few build tools,
like rdmd, make and then also support shell script.
Things like setting compiler flags does really not belong in a package
manger.
I have not looked at the source code for DUB at all. In general how is
it organized. Can it be used as a library to easily build, say a GUI or
directly integrate into an IDE?
--
/Jacob Carlborg
More information about the Digitalmars-d
mailing list