This blog is highly personal, makes no attempt at being politically correct, will occasionaly offend your sensibility, and certainly does not represent the opinions of the people I work with or for.
Immutability
avatar

Ever since I started playing around with the concept of content addressable storage (Camlistore was really the starting point for me), out of which Aion (my archive system) and the LucilleEnergyGrid (the data center of my universe) were born, I have been very sensitive to efforts to bring those ideas to the wild web. Fab recently draw my attention to IPFS a very elegant idea, which comes after a long list of similar projects: freenet, maidsafe, storj, ethereum, meganet and supernet to name a few. All of those projects are interesting and have their own technical merit, but, with maybe the exception of IPFS, I feel that they might be trying to solve the wrong problem, but more importantly it they are going to remain niche unless web browser makers make them transparent for the users.

Anyway, regardless of my above criticisms, I find it very nice that the very concept of immutability (and generically referring to things by their hash) is somehow getting more mind share in the world. An interesting observation is that this concept has also contaminated other areas...

Take the example of functional programming for instance, which somehow has been being talked about as something cool on the internet over the past 6 months or so (or maybe I am more sensitive to it, but I do not think so, have a look at Functional Programming should be your #1 priority for 2015 -- we didn't have that in 2014). People are feeling, I think, that there is a safety built in immutability and that it is worth the mental investment.

A more recent discovery for me was the fact that the way I tend to run my software projects, when I happen to play the architect, has a lot of immutability built in. I didn't know the name for it, and in fact I didn't even know this had a name: the immutable infrastructure principle. An expression I discovered while reading Adopting Microservices at Netflix: Lessons for Architectural Design. They define it as "Keep all code in a microservice at a similar level of maturity and stability. In other words, if you need to add or rewrite some of the code in a deployed microservice that's working well, the best approach is usually to create a new microservice for the new or changed code, leaving the existing microservice in place. This way you can iteratively deploy and test the new code until it is bug free and maximally efficient, without risking failure or performance degradation in the existing microservice."

Today though, I discovered that immutability has also contaminated the world of OS design, for the better: Revisiting How We Put Together Linux Systems. This initiative has all the right ideas in it. Note that this is not me endorsing the systemd initiative and the people in it. I haven't yet made up my mind about systemd (I am trying to remain neutral for the moment). This is just me being happy to see people thinking about operating systems and software management in a way that is my native way to think about those things: clean, neat and unambiguous.

[ add a comment ]

Archives