Packaging Matters

There are many things that make for a well rounded programming language, but all too often the package management tooling is the least well thought out, or left up to some third party developer.  Often package dependency configuration isn’t as friendly or automatic as it should be.

I am not against external developments and support tooling. In fact, many well known tools offer this approach. I am just saying that language developers need to set the ground work and foundation first. IMHO “Go” is an example of poorly defined packaging, whereas “Rust” is a better example. Unfortunately, when a language is young it is all too easy to forget to build effective distribution. “Microsoft .NET” is a prime example where the “NuGet” package manager has always felt like a second class citizen, although it is improving now. This should be mostly rectified next year, but consider that “.NET” is already 13 years old.  It goes to show, when you make mistakes with packaging it takes awhile to fix then.

Why am I saying all this? Because I want to make sure that packaging is a first tier priority for Rux. The plans currently entail using TOML for configuration, not JSON. I have seen the mess of JSON configuration, it is hard for humans to reason about what goes where without comments, not to mention how easy it is to break by simply missing a brace or leaving a trailing comma.  Since it should support human configuration, and JSON doesn’t support comments TOML was the obvious choice.  That being said, the plans entail a config parser, so anyone can create and select a different parser if they want to.  I don’t intend on restricting choice as some languages do, just laying the foundation.  How it is used is up to you.