On Tuesday, 29 September 2015 at 16:22:43 UTC, Adam D. Ruppe wrote:
I copy/pasted your arsd/dom.d code in a couple of projects. But none of them will receive updates unless I do 'm manually.

That means you don't have to put up with me randomly breaking your code! You don't have to wait for me to publish a bug fix. You aren't locked in to the way I did things and are free to customize it as you wish.

But this encourage to create tiny little forks everywhere. So everyone is getting less bugfixes: if I have my local copy, nothing encourages me to contribute the fix.

This is the strength of versionned dependencies:

- one master tree

- get bugfixes automatically before you are aware they even exist

- do not close the door to breaking changes in the form of a major version bump.

- open/closed principle for packages: if you use devisualization:window, the X11 package is pulled and linked without anymore work. This sub-dependency doesn't leak into your project, it's only a property of the primary dependency you used.

So I'd DUB strive to make dependencies composable, where they were previously a leaky abstraction. It's like calling a function and not having to know what it does inside.

Of course this implies there is no bad-fixes or SemVer misuse :) But I've found this to work reasonably well in practice.


Reply via email to