9 ms·
Seems to me that official language-integrated package managers are a hallmark of contemporary programming. They are kinda sorta realising the dream of pervasiv
by frou_dh 9y ago
Seems to me that official language-integrated package managers are a hallmark of contemporary programming.
They are kinda sorta realising the dream of pervasive code reuse. In a low-friction buffet style.
- iainmerrick 9y agoThis is definitely a modern thing but I think it's a bad thing, or at least a move in the wrong direction. Language-specific package managers tie you into a single language. It's hard to use multiple languages in a project, even when that would make sense, or to migrate to a new language. You end up needing a separate layer on top of the language's package system. Big projects like Unity have their own package managers and build systems. I think it would be much better to have a generic package system that can be used for everything, and a generic build system that can be used for everything. Admittedly, existing generic package managers and build systems aren't very good! So maybe this is a bad idea and it's just too hard, or maybe there's some key insight or advance we're missing. I think Google's build system Bazel is along the right lines. Unashamedly aiming for 100% correctness, so it's really reliable and therefore usable for all build tasks.
- TheAceOfHearts 9y agoIt's interesting that you mention Bazel. Do any of Google's large public projects use it? Android has Repo, Chromium has depot_tools, and Fuchsia has jiri. Fuchsia has its own IDL [0], which is used to generate bindings for C, C++, Dart, Go, and Rust. It's not perfect, but I'd say Webpack [1] is worth mentioning. You define loaders and it crawls your dependency graph. When you reference assets in code they get built, copied to the output folder, and all references updated. [0] https://fuchsia.googlesource.com/fidl/ https://fuchsia.googlesource.com/fidl/ [1] https://webpack.js.org https://webpack.js.org
- iainmerrick 9y agoGoogle uses Bazel (or Blaze, which it's based on) for almost all their proprietary code, at least. Their big open source projects, Android and Chrome and now Fuchsia, seem to have very different coding cultures from the rest of Google. I've used both repo and depot_tools a bit and both are pretty bad -- very thin and leaky abstractions on top of the source control system.