CC BY-NC-SA 3.0

Navigation

Free Open Source MobileBaaS market overview v.1.0

Any suggestions, comments or criticism welcome at my gmail: “spomytkin”

The prime objective was, as stated in the title, to analyze projects that are offering both free and open source options for backend as a service solution targeted for mobile front-ends.

A few words about why:

free and open source VS free or open source

There are some free solutions (free tier or declared as completely free at the moment), in fact the majority of platforms follow this model… and it's a good option for short-lived projects e.g. app. for events (conferences, etc.), but vendor lock-in steers users out in case of long-term projects. There is a perceived opinion that it's true only for enterprise users, but it's based on the assumption that only enterprises have resources to build their own back-end. As a response to this demand companies specialized (or expanding to) on enterprisemarket (MEAP) tend to offer installations on premises.

This solves one part of vendor lock-in equation – data, still leaving code aspect unchanged.

A new trend is to go open-source either by offering sources to enterprise customers (help to debug, but nothing else) or generating app. and back-end implying if you have RoR expertise for back-end and native platforms expertise for front-end you can customize it and keep building on top of it. I’m not a lawyer, but the phrase “Customer is hereby granted a limited, non-exclusive, revocable license to use the AP Libraries solely as necessary in order to use Customer’s mobile applications generated by use of the AnyPresence Designer” seems very different from typical FOSS.

The bottom line is that a complete solution for vendor lock-in – e.g. being able to pick-up platform from the owner/lead contributor and steer the project in the direction that you need would be a project under a FOOS license.

Short list

At the moment (October 2013) I found 4Free Open Source Mobile BaaS:

OpenMobster under Eclipse Public License - v 1.0

BaasBox under Apache License, Version 2.0

helios under MIT - no android SDK

LoopBack under custom unnamed license ...

Since, as mentioned, I’m not a lawyer, I am not sure if the license allows ?????(WHO) to release changes under a different license but “deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,” mean yes despite “The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.”

Details

I installed 4 of them (3 successfully with demo apps) and attempted to develop android “hello world” on 2, I have also read some documentation and looked at development activity. I have also attempted to contact developers/community with some questions.

This allows me to compare both technical aspect and dynamic/potential of the projects.

OpenMobster

* latest release 2.4 based on jBoss, Hibernate. At the moment jBoss 5.1 and developer are trying to migrate to version 7 according roadmap. Apparently it’s not trivial so forget about any other JEE containers.

* Despite what is declared in System Requirements windows support, I was unable to start it on Windows, sticking to the tested platforms (up to the right version of Ubuntu) did the trick. AppCreator generated sample app., server console working… so, I got some idea of the development process and end-product.

* OpenMobster is an old project started as private in 2003 released to public v. 2.0 in 2010, 2.4 in Dec 2012. It was targeted as MEAP and given some limitations (I’ll elaborate below), it might be a viable option for internal enterprise apps with limited number of users. There are some advanced functions like off-line sync and application management (e.g. remote upgrade, device wipe-out) that are declared in roadmap and/or demoed.

The current implementation doesn’t support jBoss clustering (good-bye horizontal scalability), and nobody responded on inquiry of any performance testing data, but for jBoss 5.1 on a single box, I suspect, it is far below “cloud” expectations.

Developer community doesn’t look very responsive and project evolution (judging by previous progress) seems to be rather slow.

BaasBox

*This is a new project based on cutting-edge Play/akka and OrientDB. To be exact: Play 2, OrientDB 1.5.

* Despite its pre-alpha stage, (started in 2013) it looks very professional, started working right after unpacking, on (non-native for developers) windows. Android SDK was checked in literally days after request and social-network log-in functionality I asked about was available for me in forked version (although not released yet) in a week. Very responsive team, easy to contribute to Community driven feature roadmap

* so far it’s my favorite. Not only does my JEE background give me confidence that I’ll be able to troubleshoot if needed and augment functionality (with great chances that my contribution will be accepted to the project) but it seems to be, by far, the most complete product, ready for use out of the box.

LoopBack

* nodejs based project also started in 2013 ( announced in Sep.)

* I attempted to follow instructions for local deployment and install on windows7 64. Install seems to have finished successfully, but I wasn’t able to start/install sample app. On Ubuntu I was more successful, but it took some time to install all the dependencies (like git) and I've seen several warning and error messages while installing a sample app. It started and I was able to play with REST API of the sample and API explorer (neat web interface for all generated RESTful end-points allowing to make requests and see JSON responses from the browser). Although native SDKs declared on one of press-release texts I was unable to find any traces of it or hints of availability (like roadmap) .

Next day Loopback support responded and suggested to install RoR to get git straightened out.. It actually helped and I’ve got Loopback running on windows7. Support also informed me about android SDK on the roadmap and it is planned to release in 2 months.

* As of now the project looks like a feasible way to generate nice custom RESTful endpoints – programmed in nodejs or exposed from legacy (for now only Oracle or MongoDB) DB tables. I will see how this work-in-progress advances, and once they write more recipes(especially curios about #5) and rollout SDKs I’ll take a look.

helios

* Ruby/Sinatra based framework by Mattt Thompson from Heroku.

* Initially I wasn't even trying to install on windows, on Ubuntu it took a while to install Ruby and I wasn't able to start helios. I give up on attempts to make “helios new app " work after it had failed to install pg ... now I know helios uses Postgres as a database. Later I got RoR installed on my Windows during Loopback troubleshooting and gave helios a try on windpws… After dealing with dependencies for an hour (fortunately it didn’t require my attention while doing it) it completed installing… and failed again on pg… at least it's consistent across platforms.

* Mattt published helios half a year ago and it’s in beta now. Since I wasn’t able to get sample app running, can’t tell much.

Not sure if anybody else is on this project, but Mattt was able to reply to me in few days and said:

1. He’d like to support android, but there no plans to do anything about it.

2. Performance/scalability-wise it is as good as any other Ruby/Sinatra app.

I got curious and did some quick research for platform comparison… I have to note: platform itself does not define app. performance, how you write it and architecture selection means a lot, but at least will give some idea of the limitations developers would have to deal with:

performance&scalability

Ruby/Sinatra performance:

http://oldblog.antirez.com/post/scalability-and-speed-of-web-apps.html - “PHP serves 1500 requests per second, while using erb this trivial substitution can handle 250 requests per second”

My understanding, those are numbers from stock install and there are ways to make things better like:

http://blog.gregweber.info/posts/2011-06-16-high-performance-rb-part3

Out of the box it looks bad… but, I believe Ruby improved a lot since it was single-threaded (best performance by far was with jRuby implementation)

Regarding nodejs/netty – they are both non-blocking &asynchronous, built with parallel processing in mind. I’ve seen several comparisons with one or the other being better, but not in order of magnitude.

So, probably, both would be pretty good.

The latest comparison I found:

http://www.techempower.com/benchmarks/#section=data-r6&hw=i7&test=plaintext

netty

620,229

80.2%

nodejs

72,993

9.4%

http://www.techempower.com/benchmarks/#section=data-r6&hw=i7&test=json

play-scala

47,044

20.9%

netty

209,939

93.5%

nodejs

69,443

30.9%

sinatra

3,309

1.5%




http://www.techempower.com/benchmarks/#section=data-r6&hw=i7&test=query

play-scala

22,372

19.5%

play-slick

3,536

48.8%




nodejs

3,524

48.6%

sinatra

320

4.4%

Comments