Blog
OpenEnergyMonitor

Open source and software as a service

In addition to developing emoncms as an application that can be downloaded and installed on any server, interest willing, I would like to work towards offering emoncms as a service. So if you just want to build up your hardware and connect to a ready to go, maintained service with support, the option will be available to you.

One of the reasons I wanted to develop emoncms in the first place was that I was frustrated with fact that all available services where proprietary, I wanted to be able to download, install, modify, take part in development because I very much enjoy doing so and wanted to take part in collaborative innovation on important problems as Irving Wladawsky-Berger described so well in his post on the essence of open source which I blogged about last week.

As this article by mygnulinux.com and another article here by William Judd describe, there is a concern that as more an more of our applications move into the cloud and are run by organisations who adopt the proprietary software as a service business model we will loose the ground that we have gained in the open source software movement, there is also a complication to do with licensing.

There are however a great deal of advantages in having applications in the cloud many of which are also very beneficial for energy monitoring, such as: access to your data from any location and any device and possibilities that open up by using shared platforms.

The answer: cloud based software as a service does not have to be proprietary software, it can be open source and this opens up some really exciting opportunities.

So the idea is that the installed web application's code is placed on github or other code sharing location and is a mirror of the installation on the main server/servers. The service can be used as one would normally use a software service. However if you want to improve the code, modify, add something you can. You just need to fork the repository, do something cool, share it with the community and if its adoption is agreed it can be added to the service install. So this allows for taking part in development, for modification and improvement. It is a little more complicated than editing your own instance of a particular piece of software as changes need to be agreed on by those using the service as any changes will effect everyone, but this is not a prohibitive problem as there are systems that have already been worked out for determining what makes it into the final release in many large open source projects.

As mygnulinux.com and William Judd's articles explain, the other important problems in software as a service is: lock in, data ownership and licensing.

The first can be addressed by creating a comprehensive API that makes it possible to move data from one service to another or to a local installation if one desires to do so.

The second can be addressed through good policy by the service providers.

Licensing is important. The GPL up to and including v3 does not ensure openness for software as a service provided over a network as the requirement to release the source code and any modifications to that source code is only triggered when the software is distributed not when that program is run. This essentially as I understand turns the GPL into BSD like licence as there is no requirement for open sourcing when providing the software as a service across a network.

In response to this loophole the Free Software Foundation bought out another licence called the GPL Affero licence (AGPL) which essentially requires anyone providing a service using the software across a network to release the source code, the one additional provision over GPL v3 being:
“if you modify the Program, your modified version must prominently offer all users interacting with it remotely through a computer network (if your version supports such interaction) an opportunity to receive the Corresponding Source of your version by providing access to the Corresponding Source from a network server at no charge, through some standard or customary means of facilitating copying of software.”
In conclusion
It's possible to get the benefits of open source and the benefits of the cloud and software as a service platforms. I think its going to be exciting to explore this with emoncms.
  • The code for the latest version of emoncms is available on github: https://github.com/openenergymonitor/emoncms3
  • Its the exact same version as is deployed here: http://vis.openenergymonitor.org/emoncms3/
  • It is licensed under AGPL
  • A comprehensive API and tools for easy porting of data between instances is a core aim and will be an important part of continued feature development.
  • A template terms of service needs to be worked out and written.
Examples of open source software as a service
SugarCRM - a customer relationship management package (From the articles linked above)
Identi.ca - a micro-blogging service (From the articles linked above)
Thingspeak - internet of things application

Drop a comment below if you know of others that can be added to the list.

To engage in discussion regarding this post, please post on our Community Forum.