Ensemble, Go, and MongoDB at Canonical

About 1 year after development started in Ensemble, today the stars finally aligned just the right way (review queue mostly empty, no other pressing needs, etc) for me to start writing the specification about the repository system we’ve been jointly planning for a long time. This is the system that the Ensemble client will communicate with for discovering which formulas are available, for publishing new formulas, for obtaining formula files for deployment, and so on.

We of course would have liked for this part of the project to have been specified and written a while ago, but unfortunately that wasn’t possible for several reasons. That said, there are also good sides of having an important piece flying around in minds and conversations for such a long time: sitting down to specify the system and describe the inner-working details has been a breeze. Even details such as the namespacing of formulas, which hasn’t been entirely clear in my mind, was just streamed into the document as the ideas we’ve been evolving finally got together in a written form.

One curious detail: this is the first long term project at Canonical that will be developed in Go, rather than Python or C/C++, which are the most used languages for projects within Canonical. Not only that, but we’ll also be using MongoDB for a change, rather than the traditional PostgreSQL, and will also use (you guessed) the mgo driver which I’ve been pushing entirely as a personal project for about 8 months now.

Naturally, with so many moving parts that are new to the company culture, this is still being seen as a closely watched experiment. Still, this makes me highly excited, because when I started developing mgo, the MongoDB driver for Go, my hopes that the Go, MongoDB, and mgo trio would eventually be used at Canonical were very low, precisely because they were all alien to the culture. We only got here after quite a lot of internal debate, experiments, and trust too.

All of that means these are happy times. Important feature in Ensemble being specified and written, very exciting tools, home grown software being useful..


This entry was posted in Architecture, C/C++, Cloud, Design, Go, PostgreSQL, Project, Python. Bookmark the permalink.

7 Responses to Ensemble, Go, and MongoDB at Canonical

  1. David says:

    https://ensemble.canonical.com/ doesn’t resolve, but replacing canonical with ubuntu works.

  2. Kent Johnson says:

    The Ensemble link is broken, I think you mean https://ensemble.ubuntu.com/

  3. Sorry, that was fixed, thanks for pointing it out.

  4. Patrick says:

    Congratulations, Gustavo! This will also be a “closely watched experiment” among the expanding universe of Go nuts. I look forward to ongoing reports. :-)

  5. I am very happy for you, Gustavo, for I know how excited you’ve been about Go and it is awesome that you already managed to start an official project with it within Canonical. This is not surprising, though: with your track record, you totally deserve their trust.

  6. Alex Plugaru says:

    You know a language is worth something when someone starts producing commercial stuff with it. It means that people are serious about it and the language is close to it’s maturity. I think golang becomes more and more a production ready language. And all that are thanks to people like Gustavo which believe in this language and build useful libraries such as mgo. I think that is safe to say that your work is and will be greatly appreciated by the Go community. Thanks a lot.

  7. Erik Unger says:

    Gustavo, thank you so much for the mgo driver, great work :)


Leave a Reply

Your email address will not be published. Required fields are marked *