Stop Building On Corporate-Controlled Languages

published: [nandalism home] (dark light)

Golang - my favorite programming language

I love golang and the team behind it. Rob Pike once said "golang is an open source project, not a google project.". I still trust Rob Pike and am sure he meant what he said. However, I do not trust google, and don't want their spyware running on my machine.

I refuse to install android-studio since I am sure it will be phoning home about all sorts of things. However, I naively believed that command line tools like compilers are safe from such network backdoors. This comes from using tools like vi, awk, Perl, python and GCC. One would never imagine they were sending information across the network.

Unfortunately this is no longer true as compilers and editors now have integrated package managers. We expect them to communicate on the network and we don't really know everything they might be communicating.

Obviously I'm not singling out google here. The same goes for swift (apple) and C# (microsoft). I don't want to work in those languages since I don't want to install the ecosystem that comes with them, on my machine.

Something I read recently and my own experiences with the golang package proxy reminded my how much I trust the golang tools on my machine, and yet how little I should trust them.

Remember when command line tools were safe from this behavior? Admittedly C also came from a corporation but it came free with every unix install and soon after I started using it, Richard Stallman et al. gave us GCC, a free C compiler.

GCC, in turn, allowed the development of new languages like Perl and python. No corporations in sight! We got a lot done with these languages. It's not like we are incapable of creating ecosystems without corporate "help". We have proved that, with countless projects in the past.

Using java for free software was the first misstep. We were warned against it but ignored those warnings. Much later the oracle/google battle showed how precarious it is to build on languages controlled by corporations.

Let's not keep making this mistake. Are there still free languages out there? Well, yes there are quite a few (and surely many more I forget to mention).

I'm focusing on compiled/statically-typed languages here so will be skipping over Common Lisp (a venerable language we should all seriously consider). A brief review reminded me of Zig and Nim. I had some problems building Zig from source, so moved on to Nim (which I also failed to build from source as it set my laptop on fire). I gave up at this stage and installed the pre-compiled binaries for Nim. So, just by luck I ended up choosing Nim for a deeper look.

Something else which I really like to have in a language is meta-programming and Nim has it (Zig also has meta-programming I understand).

Nim - my new favorite programming language (corporation free)

A brief overview of the main features I encountered while doing some coding beyond the 'hello world' level.
(using nim v1.6.10 on Alpine Linux v3.17)

In summary I managed to get quite a bit done with Nim, without hitting any major stumbling blocks. The language has been around for a long time now and the standard library contains most things you'll want.

Nim - Some Rough Edges and Stumbling Blocks

Of course, Nim relies on volunteers and volunteer time. That's to be expected from a free language. This means that Nim doesn't have every library you could possibly want and some things feel slightly unfinished.

None of the problems listed below were show stoppers. Indeed I dreaded hitting some problem or unfinished section of the language which would make it unusable. That never happened. People tend not to list the problems they had with their new favorite language but I think it is important to mention these things so that new adopters can learn about the rough edges, while also being assured that no major problems exist.

Other free languages

This is just a list from memory. I'm sure there other great ones I've forgotten. (since augmented by HN suggestions).

I'll be following this post up soon with an in-depth look at my first real Nim project, a macro-based, html template generator for use in web server handler code.


site built using mf technology