Why your next CMS project should be in Go Programming Language (golang)
I started playing with Go Programming Language (golang) several years back (in 2012). It felt like a nifty little language back then. But since then the laguage has picked up so much traction and so many major systems have been built in it that it is hard to ignore.
So what if one were to gather the lessons learnt from Drupal and write a CMS in Go?
What would such a next-generation CMS look like? Would it ...
- run as a tiny docker container to simplify deployment issues?
- provide an API that is not just well documented, but also safe using compilation step?
- run fast in a small footprint?
- scale massively first within a single process (via thousands of concurrent lines of execution - go-routines), and then across containers and servers with auto-scaling?
- push live content updates from server to the client (browser)?
- dynamically load modules as dynamically linked shared libaries (*.so) at runtime?
- learn from the success and pitfalls of existing CMS's like Drupal and WordPress?
At least that's the vision.
Golang has almost everything we need:
- Fully compiled strongly typed programming language with a mature web-stack, garbage collection, high speed at a small footprint (duh!).
- Extreme scalability with channels and go-routines (coroutines). Thousands of active go-routines. Massive concurrency!
- Fully self-contained binary that could be run as a docker container.
- A plugin-based extension system where the main binary could load extra code from at runtime.
- Drivers for almost any database - SQL or NoSQL.
- Web-socket implementations.
So come and join me in imagining, shaping, and then realizing this future.