RoboVM Is No Longer Open-Source
infoq.com
infoq.com
RoboVM is a complicated piece of technology that we have worked hard for years to
create. Over the past few months, we have seen competitors actively exploiting
our good faith by using our open source code to compete with us directly in
commercial products. On the flip side, we have received almost no meaningful
contributions to our open source code.
You can imagine how disappointing this has been to us; we had hoped our initial
business model of OSS with proprietary extensions (like our debugger and
interface builder integration) would work.
But in light of the low contributions and behavior of competitors, we decided
to stop automatically releasing changes to the core of RoboVM as open source.
-ZechnerI'm not sure what to think about the competitors-stealing-our-code angle, but the OSS-is-being-used-as-freeware argument is certainly one point in favor of closing/controlling their code (as a business).
In practice, GPLv3 may only offer hope that one could some day prevent violations after the time and expense of litigation. VMWare and Tivo are examples.
Consider Google Android, which releases sources with binaries when the release occurs, not before. Balancing the how and when is just as important as the license.
Gnu Ghostscript was an example for many years. They used a dual license and released source to the public six months after binaries.
That's overly pessimistic. People abusing your GPLv3 licensed code would be almost the same as people pirating your proprietary software. It would still be copyright infringement and with prices already set for commerical license exceptions it would be relatively easy to sue for damages plus legal fees.
It's funny in this case that the Free Software approach may actually be a more viable business model for RoboVM than the OSS approach. Many people consider Open Source to be better for business and Free Software to be a bunch of hippies. But had RoboVM used a viral license and sold commercial exceptions (a model that the FSF considers acceptable) they could be defending user's freedoms while also building a viable business.
And this is where I've always disagreed with FSF's stance. Many people claim that GPL is inadequate because of the "ASP loophole". But a much bigger loophole is dual licensing. This is because dual licensing happens (and is useful) only when the product is unusable as open-source. For example Gitorious is AGPL licensed and does not need dual licensing because you know, it's meant for people to have an on-premise solution for Git hosting and it's a take it or leave it thing. A Javascript library on the other hand is totally useless as AGPL. Dual licensing is also what made Qt and consequently KDE to be less popular than Gtk+ and Gnome in distributions such as Red Hat's or Ubuntu, or why popular project such as Firefox or LibreOffice are better integrated with Gtk+/Gnome, even though Qt has always been technically superior. Heck, Qt's licensing is why Gtk+/Gnome happened in the first place.
You see, the biggest advantage of open-source, its raison d'être if you will, is the possibility to fork. But if a fork cannot survive because of licensing reasons, maybe because it cannot be applied to the same projects as the original, then that's not really open-source.
Personally I prefer the open core. For example I currently work with Scala and the JVM and I use IntelliJ IDEA as my IDE. It has a community edition with everything I need. Yet I pay for the Ultimate edition anyway. If the community edition gets discontinued, I'll switch in a heartbeat.
Dual licensing isn't otherwise a loophole since it is a decision the primary author organization makes for themselves, not something someone else can do to your copyleft code.
Copyleft does protect the commons. https://www.youtube.com/watch?v=UneYZikN85Q
Not necessarily. Depends on your goals. You might want to free up your software because it's the right thing to do and it guarantees your customers have a way out should should your business ever fail. You might scare away a few contributors by requiring copyright assignments so you can sell GPL exceptions, but the whole idea that you should free your software so you'll get more contributors is (1) sometimes false as it is in the present case, and (2) part of the campaign slogans that OSI made when they tried to rebrand free software as "open source".
It might be the raison d'être of open source, but the goal of free software is preserving users' freedom, not ensuring usefulness of software in some commercial proprietary context. That seems to be at the root of your disagreement with FSF. You simply care about different things and therefore prioritize differently; everything else is secondary. FSF does not aim for popularity, convenience, or playing well with one's commercial interests as its primary goal.
Because the second you said "users freedom", you're in danger, because what constitutes a "user" is unclear. Is a user a person that pushes buttons providing input for your program to produce its destined output? Or can a user be a programmer as well? Because depending on its needs, different users want different freedoms. And for example I do not consider AGPL to be open-source (or free software for that matter) because modifying code without redistributing the binaries is simple usage for a developer, which means AGPL imposes restrictions on usage, being a freaking EULA.
But going back to our subject, dual licensing, take a look at projects that are dual licensed and usually you'll notice that the choice of the license had nothing to do with users freedom, quite the contrary, after all, without serious constraints dual licensing wouldn't work.
A user is both someone who uses the compiled software (pushes the button in your example) or a developer capable of modifying the software.
A developer doesn't need the freedom to redistribute the software to other users without also respecting their freedoms.
Dual licensing does nothing to hurt freedom, as a user of the GPL licensed software your freedom is protect, both to use the software, and to modify it for your usage.
Needing to assign copyright to make upstream contributions may hurt the rate at which the upstream project develops, but in no way hurts your freedom.
It's easier both to do and to get away with when there's an open license. They can adjust it to integrate, and claim confusion or delay while rounding up source code.
Then sue them for damages immediately. If they offer up their source code during the lawsuit then great! If they don't then you get damages.
Implicit in this argument is the assumption that Xamarin ever wanted RoboVM to "win" at all.
I'm not saying that they don't... just that they subsumed a smaller competitor with an arguably superior product. Its logical to conclude that there exists a possibility that they simply paid to buy out RoboVM because they thought it would be cheaper than trying to compete head to head (especially, since as your c+p points out, competitors were/are using RoboVM code), and if RoboVM returns some of that money then it is just gravy on the biscuit.
If that's the case then too bad for Xamarin... it is more of a sign of their ineptitude and of their eventual demise... if their leadership choose to use cash to knock out competitors instead of innovation, it will be interesting to see how long they can keep that up.
My theory is that Xamarin is starting to care less and less what language is used to build mobile apps (for a while they claimed to care more about C# than Microsoft did); and instead own the products that become a natural pipeline into their service offerings like Test Cloud. Buying RoboVM lets Xamarin build in hooks that will mean staying in Xamarin platform is a natural progression.
Well, now is the time for a fork and I hope it will happen.
Avian is a fantastic platform and the maintainers are true friends of free software, even though their license is as permissive as you can possibly get.
All in all, adding LLVM support to Avian would be challenging but doable. However, Avian's generated code is already fast enough for most purposes, and it's not too hard to fall back to a bit of native code when you need maximum performance. My impression is that Java-on-iOS developers are less concerned about performance and more concerned with ease-of-use (e.g. tool integration) and convenient access to native APIs (e.g. Bro[2]). The RoboVM devs have apparently done a great job on both of those things.
I sympathize with Zechner and the other RoboVM devs. Development on Avian was originally funded by the company I was working at since it neatly addressed a problem we had: extending the lifetime of a large body of client-side Java code in a world that was/is increasingly unfriendly to client-side Java. Once it was good enough for that purpose, there was no business reason to continue investing in it besides bug fixes and maintenance, so we had to move on to other things.
I'd love to keep working on Avian full time and do cool stuff like an LLVM port or trace-based JIT compilation, but it's hard to justify when there are bills to pay. In my case, that means focusing primarily on other, income-producing projects. In RoboVM's case, it means trying a new approach to licensing to make development sustainable. I wish them luck with it.
[1] http://llvm.org/docs/GarbageCollection.html [2] http://docs.robovm.com/advanced-topics/bro.html
In practice, I suspect they would have been able to do this anyway because the biggest independent contributors joined RoboVM prior to this move.
edit: typo
I would also have concerns signing a CLA that doesn't ensure the code will stay available under a free license, but I don't think that's a very common case.
So, no more CLAs for me. If they require a CLA (that lets them relicense my work) then I'll just never contribute to them.
https://www.schneier.com/blog/archives/2014/05/friday_squid_...
My main stance, for now, is dual licensing. Any commercial use requires a license. Any other use is free. Both are perpetual, come with source, and allow modifications. Core staff of paid developers do most work. OSS contributors get free licenses, name recognition, and possibly gifts (esp money) for big contributions. Any improvements to the software must be sent back to software owner that redistributes it under the same license. Contract requires this happen post acquisition. If company stops meaningful updates or wants to abandon it, product is released under full OSS license and that's in the contract. Company is also a non-profit, public benefit, or just private with certain structure that helps force this.
What do you think of such a setup? Again, main point is to force any user to be contributing to its development or maintenance while ensuring it stays available and has key FOSS benefits. Would you contribute to such a dual-licensed, carefully-setup piece of software?
There are other factors, but a medieval CLA definitely didn't help their cause.
Hint: They'll just rip out your code.
I know it may be shocking, but companies are going to do what they want. Replacing the code of even hundreds of contributors, given a bunch of full time engineers, is just not that big a deal.
This is even more true when, as here, the project almost entirely made by a small group of engineers (which is the case for a lot of projects).
Legal infrastructure will not solve these problems for single projects.
Additionally, even companies that have "good" CLA's find ways to be evil.
Doing things like threatening other companies over the "compilation copyright" they claim they own on the work, etc.
So yeah. Bottom line: CLA's, no CLA's, whatever, none of it is loophole or problem free, and there is no simple solution to these problems.
clearly, the issue is whether the contributions amount to a substantial enough part of the software that the ripping out isn't feasible.
Also, if you build up a community and then violate their trust, you lose the community. It's not a great strategy.
They didn't plan on it. Plans changed.
"clearly, the issue is whether the contributions amount to a substantial enough part of the software that the ripping out isn't feasible."
Having legally supervised tons of these processes for open source projects (most trying to relicense things after discovering their licenses were hurting their communities):
It's always feasible. Actual code is often not that important. Knowing what code to write is often important. (I know there are beautiful unique snowflakes who think otherwise ;p)
"Also, if you build up a community and then violate their trust, you lose the community. It's not a great strategy. "
Sure, but you assume "random people kibitzing on hacker news" represents their community.
For all you know, the actually community is entirely in favor!
Again, IME, having helped projects through these processes, there is often a huge difference in opinion between the people kibitzing on the sidelines and those who actually contributed meaningfully.
My experience is that people who contribute meaningfully are often more sympathetic and understanding of various situations. People who are kibitzing from the sidelines are often more ideological.
there are way too many messaging platforms like actor. many of them are older. it's hard to compete in this market since you would need to be better than all the others.
I mean the others are costing money at least some of them still they have mostly a bigger integration in the products the companies made. and thats why its impossible to earn money for you, you won't get enough users to stay rentable.
Presumably there is an open-source version of RoboVM still around. Perhaps here: https://github.com/robovm/robovm ... though I gather the problem with that is that it does not include any of the latest iOS 9 work, which was done in a closed repository somewhere.
Looks like the Libgdx guy (Mario?) fought hard to keep a free version of RobobVM for Libgdx users. Not sure how long that can last; its currently based on self-identifying yourself as a Libgdx user and hence easily abused.
The other irony is that Libgdx used to use Xamarin to target iOS, but they switched to RoboVM because it was free/open.
The free indie licenses for libGDX and PlayN users will last. It's very easy on our end to prevent abuse automatically. We never considered not making it free for indie game devs. From RoboVM's standpoint, it makes zero sense to 1) try monetizing a community that can't be monetized and 2) alienate the community that helped RoboVM a lot over the past two years. If RoboVM stopped the free indie licenses, it would only hurt RoboVM's bottom line.
The close sourcing was badly communicated, no question about that. But contrary to popular believe, it was not the longest bait and switch in the history of evil plans (RoboVM's been out there for almost 4 years), it was a business decision. A direct competitor exploited the free OSS version, hurting our bottom line.
Who were they ?
if you can name that direct competitor? I'd like to know who to avoid in the future.
It's not "exploiting" to use the license as offered.
Why not use a FOSS license that prevents this? For instance, why not use GPL, at which point you could sell licenses for use in proprietary apps? With the right licensing structure, you wouldn't even need a CLA.
https://news.ycombinator.com/item?id=10500298
I'm curious what you and Mario think about my scheme of paid, perpetually-licensed, OSS software. It's in alpha stage obviously with potential for improvement.
If you actually meant "commercial use", such that the default version prohibited commercial use, that's a non-starter, as it's incompatible with the standards for either Free Software or Open Source Software; you would massively curtail both contribution and usage of the project by doing so. You'd also, in the process, likely prevent anyone from contributing to that project in the course of their job, which doesn't seem like your intent.
(Requiring submission of contributions back to the original project rather than only to those you distribute a binary to is also slightly questionable, though some will accept it. Prohibiting commercial use is the dealbreaker.)
That's worth remembering if possible.
"If you actually meant "commercial use", such that the default version prohibited commercial use"
The idea is it's just like open-source software except you pay for it. People can fix it, modify it, contribute to it, whatever. Might force the mods to be shared with everyone if using free license or let them not be shared if people are paying for it. The money coming in creates active development. The license keeps them from closing things back up or pulling it off the market. Trying to figure out what terms maintain the major benefits of FOSS while preventing the worst parts of proprietary model and keeping money in for development/maintenance.
The philosophy is basically "you get what you pay for or contribute to," with source and benefits that brings. Sort of a middle ground between proprietary and FOSS. Gotta be one that could work but devil is in the details.
Note: Burroughs' 1960's OS, MCP, was delivered as source to paying customers. They could modify it as they saw fit and optionally submit modifications back. Burroughs would try to integrate good submissions into later releases. It was the first or one of the earliest proprietary and OSS combinations.
Now, on the other hand, you could build a community around a GPLed project, or an AGPLed project, funded by selling licenses to use that project in proprietary software. In practice, that will have a very similar effect, while remaining FOSS. And your comments and ideas about using that licensing revenue to directly support the community rather than just a company sound quite appealing.
I don't get it.
Citation? I've never heard anyone interpret the GPL and LGPL as the same.
Embedding mono is different than using mono. https://xamarin.com/licensing
From what I understand lot of code is GPLv2 as well, which would make the project as a whole GPLv2 licensed.
From http://www.mono-project.com/docs/faq/licensing/
The C# compiler is dual-licensed under the MIT/X11 license and the GNU General Public License (GPL).
The tools are released under the terms of the GNU General Public License (GPL).
The runtime libraries are under the GNU Library GPL 2.0 (LGPL 2.0).
The class libraries are released under the terms of the MIT X11 license.
When distributed 'as a whole' it is distributed under the terms of GPLv2.
The runtime libraries (LGPL) and class libraries are indeed not under GPLv2 .
Since they don't have access to the source code, they can't fulfill the legal obligation outlined in the GPL license.
RoboVM is a complicated piece of technology that we have worked hard for years to create. Over the past few months, we have seen competitors actively exploiting our good faith by using our open source code to compete with us directly in commercial products. On the flip side, we have received almost no meaningful contributions to our open source code. You can imagine how disappointing this has been to us; we had hoped our initial business model of OSS with proprietary extensions (like our debugger and interface builder integration) would work. But in light of the low contributions and behavior of competitors, we decided to stop automatically releasing changes to the core of RoboVM as open source.
tl;dr they weren't receiving any contributions, and people were using their open source code directly against them.I agree it would be a departure from their core philosophy to act against their contributors, but if evil goblins took control of the FSF, there would be no way to stop them from using whatever license they wanted, and the community would be left with the last release under the old license, just as in this case.
edit: oops, there are FSF projects where the FSF does not hold the copyright. Anyway, what I said works for the projects that FSF holds copyright for.
How can close source the compiler if it is on GPL license ?
Consider doctors, dentists, lawyers, CPAs, or other higher-prestige professionals. They engage in protectionism to restrict competition and drive up their earnings and rarely if ever give away their services for free, and they are much, much more respected than we are. And on the rare occasion that they do perform some act of charity, such as working as a public defender or providing discounted dental care to the poor, they usually still get paid for it, just not as much, and they make a big show of it so everyone knows that they're taking a huge paycut for a good cause and thus deserve even more respect than they get already.
Programmers by contrast are rapidly conditioning the public to expect software to be cheap or free, regardless of how long and difficult it is to produce, to the point where iPhone devs complain they can't sell their apps for the price of a cup of coffee.
Programmers need to worry about their future and should probably spend their 20s and 30s making as much money as they can writing proprietary software before they hit 40 and become increasingly unhirable due to ageism instead of performing unappreciated acts of charity in the form of open source for an ungrateful public.
-- Richard Stallman (Open Sources, 1999 O'Reilly and Associates) https://github.com/llimllib/personal_code/blob/master/python...