Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I think everyone here saying "just fork your dependencies" is missing the idea that it's supposed to be an open-source game.

Managing DLL hell may be acceptable to ship a game, but it's not acceptable to openly develop software.

In this case it wasn't even intended to be open-source, which may be why the dev went the route he did, but doing so essentially closed the door on the later option of easily letting the community take over on code development.

There's a reason people codified semantic versioning. Projects like gstreamer take it even further and make the major version part of the library name, even allowing for co-installability of old and new (e.g. gstreamer-0.10 and gstreamer-1.0 can both be installed and used).



I totally agree, as long as you can trust your dependencies.

Go's dependency management will even allow a library to have multiple versions depending on the version of Go being used to build (either a branch or tag matching the Go version). This isn't a major feature right now, since Go is backwards compatible within major versions, but could be much more important when there's both go1.x and go2.x in production.

The problem here arises when your remote library can't maintain a stable master, either because the maintainers don't care, don't know how, or the project is new and still in flux. The onus is then on you to incorporate that code into your project.

People need to think of this system as giving all dependency developers commit access to your project (which is nearly is). Would you just let the world check-in code willy-nilly, or are you going to review what's going in?


> Managing DLL hell may be acceptable to ship a game, but it's not acceptable to openly develop software.

Why not? Having something that compiles and runs is probably a bit of a boon to the development effort.


Yes, that's my point.

It's not acceptable to merely "manage" dependency hell as the net result is still unmanageable at OSS scale. You have to essentially eliminate the interplay of "which exact version do I have" with your code, which is why things like semver and soversions (on .ld.so's) try to accomplish.

Being able to have an unknown user download your code and the listed dependencies and have a repeatable build is invaluable for development.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: