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.