12 August 2015 / Last updated: 27 Jan 2017

Charting an open source path for Resin.io

Execution time:
Difficulty:
Cost:
The past 12 months have been a tremendous roller-coaster for the whole team at resin.io. We’ve been discovering the breadths and widths of what it means to do DevOps in the context of the Internet of Things, interacting with our users and trying to keep up as fast as we could. As part of this exploration phase it was necessary to keep as many options open as possible, while we figured out the next steps towards a sustainable company.
This included not having final answers about our business model, and about the open sourcing of our codebase, amongst other things. We know this impacts how much our users can trust our intentions as a company, project, and codebase. We’re very happy to now be able to share with you our plan for the near future.
Having been founded by a generation that’s been neck-deep in open source culture, but also intending to build a sustainable company, we’ve doubted our own instincts towards open sourcing to the point of needing the plan to hit us over the head. Finally, it has.
What
We intend to open source the resin.io infrastructure into a stand-alone codebase that anyone can set up without the permission or assistance of the resin.io team. We believe the value we bring is in working with the community to develop this open source infrastructure, and in building a hosted experience for it that the users can use without worrying about security, maintenance, scale, or reliability. We may build proprietary extensions in the future, but the platform will remain free.
How
The first step will be to mirror our codebase on GitHub. We’ve already done this with meta-resin, our yocto layer, and will continue to publish more building blocks until we have the whole set. There are unfortunately bureaucratic steps to take, such as ensuring we don’t have keys and other sensitive information in our history, so this will take a little bit of time to happen.
The next step is to produce decent documentation about how the system is structured and works, how to run it, and how to contribute back. Perhaps some would advise we release code at all until we’ve done this. Instead, we’d rather start the process with less than wait until we have everything, since that may get us in a neverending delay spiral.
The final step in this process, which is our desired endpoint, is to move our development process out in the open. That means that our wiki, our issue tracking, etc, will be available for browsing and contributing.
This process will certainly take us some time, but as with everything we do, we will work incrementally, and eventually get there, step by step.
When
The process has already started with meta-resin, our CLI and SDK, as well as many smaller projects we’ve been open sourcing from early on. The next item that will be open sourced will be our on-device agent, and we’ll move from there to the backend services, API server, and the tools that hold everything together and allow us to run standalone instances of resin.io in Vagrant. We expect this process to complete by the end of the year.
How you can help
There are many motives for open sourcing, the most provocative to us of course being the community's contribution. To start this process you can contribute to several of our publicly available tools listed below.
  • meta-resin - Our Yocto layer used to build resin.io operating system images for new boards.
  • CLI - Our command line tool, for interacting with the resin.io API
  • Node SDK - Our node module for interacting the with resin.io API
We also recommend you sign up for our newsletter to keep up-to-date with new releases over the coming months.
As always we will be present in the comments below if you have any concerns, questions or ideas regarding any of this.
Have questions, or just want to say hi? Find us on our community chat.
by Alexandros MarinosFounder/CEO, balena

Share this post