I am way past due getting this blog post out. We’ve had multiple discussions on the topic in #alfresco on IRC over the last several weeks, but I want to make sure those of you who aren’t yet hanging out in IRC regularly are aware of some changes related to Alfresco clustering that have already happened with the 4.2.a release. In general, I would prefer to share this stuff way ahead of any release in which it takes effect, but that didn’t happen this time and I’m sorry about that. I promise to try to do better!
With that out of the way, let me shed some light on some recent changes that may affect some of you running Community Edition…
Until recently, clustering in Alfresco has been implemented using a combination of three main technologies: Ehcache, Hazelcast, and JGroups. If you’ve looked at it lately, you may have noticed that JGroups has been removed from the repository source code. What’s going on is that we are consolidating our clustering implementation on Hazelcast because it can handle everything we need to make clustering work. (On a side note, I believe this is one of those improvements that we’ve made to our on-premise software as a result of lessons learned running our own large-scale Alfresco implementation in the cloud).
So that explains what’s going on with clustering in the Enterprise Edition. But if you looked closely at the Community Edition source code, you may have noticed that Hazelcast is no longer included at all. In fact, all clustering related code (org.alfresco.repo.cluster.*) has been removed, including configuration files like cluster-context.xml and hazelcast/* and some changes to existing Spring configuration.
Now, at this point, some of you are probably thinking, “There was clustering code in Community Edition? I didn’t think clustering was supported in Community Edition.” You are correct. Clustering has never been supported in Community Edition. Community Edition is not commercially supported by Alfresco at all. But a lot of the pieces you need to make clustering work in Community Edition have been available until now, and there may be people out there who chose to get it working themselves rather than pay for an Enterprise subscription that includes support for clustering. These recent changes make it much harder to do that.
What I want to make sure everyone is clear on is that the removal of the ability to cluster Community Edition does not represent a shift in our philosophy on what should be in Community Edition versus what should be in Enterprise Edition. The principles John Newton outlined in his blog post, “Building a stronger open source product” back in 2009 still apply today. In short, functionality that supports large-scale rollouts (like clustering) or that depend on paid “Enterprise” software (like Oracle and WebSphere) should be Enterprise-only while everything else should be available to the community.
So rather than a change in philosophy, the removal of the clustering code from Community Edition simply implements the existing philosophy more explicitly. To be blunt, if your implementation is critical enough to require the 7×24 up-time an active-active, multi-node cluster provides, you should be able to justify an Enterprise Edition subscription. If you have high availability requirements but your rollout is relatively small or cost is an issue, perhaps Alfresco in the Cloud will be a fit.
Of the estimated 100,000+ installations of Community Edition currently up-and-running, my hunch is that this change affects only an infinitesimal fraction. But if you have feedback on this change, please do let your voice be heard, either here or by sending me email directly at jeff dot potts at alfresco dot com.
I tried to install Community in cluster and it was very difficult and not reliable at all. So it won’t change the situation a lot.
I think this is only a commercially motivated action.
Now will be difficult for me to convince my boss don’t use sharepoint.
Max,
Alfresco is a commercial open source company. The revenue from Enterprise Subscriptions funds our ability to maintain Community Edition, funds the entire community team, and pays our Engineers to spend time on open source projects. So, yes, Alfresco wants to (has to) earn revenue.
If the only reason you were going to move from SharePoint to Alfresco was that you thought you were going to run Alfresco clustered and not pay for support, then yes, you should stay on SharePoint and we wish you all the best. However, if you want the freedom of choice throughout the stack, if you want all of the source code for the solution you are running, if you want to run on a truly innovative, open source ECM stack, you should consider migrating.
Even if you decide to pay for an Enterprise Subscription so that you can run clustered, you should still be able to do that for a fraction of the cost for SharePoint.
Jeff
Michel,
Exactly. We never intended Community Edition to be clusterable so no time was spent testing that or making it easy to make work.
Jeff
I agree with you. I like “Alfresco” and will continue to offer it to my clients.
My problem is my boss 😐
However, version 4.2 is great 🙂
Max,
Bring your boss to DevCon and let the Alfresco conference goodness work its magic! 🙂
Jeff
Interesting article. Surely what goes into the community edition, say like clustering components, should be for the relevant community to decide and not fall to some commercial decision like Enterprise=cluster, community=non-resilient. What is open source without an open source community? Otherwise “support” IS buying differentiated software that is not fed back to the community distribution and the project is open source in distribution only.
I have to agree with Nick. I believe this is a loss for the community because Open Source will continue on. I think this will cause a division in the Alfresco Open Source community because I know I will be helping to develop the ability to cluster back into my own personal alfresco source code and then publish this onto a github repository or another site.
Craig,
I certainly expect one or more people to establish a community effort to add clustering back in to Community Edition–that doesn’t surprise me at all. You are free to do that precisely because we distribute as open source.
Jeff
Nick,
Alfresco is a commercial open source company. The decision of what goes into Enterprise versus Community is not the community’s decision–it is the company’s decision. With John Newton’s blog post in 2009, we established the overall guidelines, in public, that we use to decide what goes into Enterprise and what goes into Community. So we’re very transparent about it. You can see a full list of the differences between the two editions here. As a representative of the community who sits on the Senior Management Team, I can assure you that the community has significant input into decisions like this one, but it’s not up for a community-wide vote.
Saying that Alfresco is “open source in distribution only” is not entirely accurate. It is true that all of Alfresco’s committers are employed by Alfresco–that’s always been true and obvious to everyone. But we ship under an open source license (LGPL v3), all of our source is available, our bug tracker is public, our docs are public, our roadmap is public, our forums/IRC/Google Groups/wiki pages are public, and we regularly accept contributions from the community. We also employ many engineers who work on Apache Software Foundation projects as well as many other open source projects. Openness and transparency are core to our values–always have been and always will be. I wouldn’t call that “open source in distribution only”.
I will grant that, for some people, the presence of a commercial, for-profit entity is enough to label something as “not true open source”. We won’t be a fit for those folks. The rest of us will gladly take Community Edition and its source, completely free of charge, and enjoy the benefits and value of that software which is funded by the sale of Enterprise support subscriptions. That’s our model and it is similar to the models of Red Hat, MySQL, JBoss, and MongoDB.
If you ever see us do something that is contrary to our values or what we’ve previously communicated, you should call us on it. In the clustering case, though, I think we’re in line with what we’ve always said would be the difference between the two editions.
Jeff
This is ridiculous and a lack of respect for open source clients.
There is no need to create a proprietary core to earn revenue with open source software. Alfresco should focus on providing excellent consulting, support services (3rd level support) and a SaaS edition; that is from where revenue comes from. The entire software stack should be free in all its meanings and implications.
Removing code that was in there is a disrespect to your open source community and clearly shows your lack of commitment to the open source principles. I’m afraid to say Alfresco is becoming another “closed core” solution, using open source as a marketing strategy.
I wish the Alfresco team could review its strategy, business model and embrace open source software fully.
Actually, the overwhelming majority of our revenue comes from Enterprise Edition support subscriptions. Giving away Community Edition and monetizing a fraction of that by selling commercial support has always been our model, although you certainly have the right to disagree with it.
We’ve never intended Community Edition to be clusterable, so this was not a change in policy, direction, or strategy.
With that said, I agree with you that we could be doing more to fully embrace the power and benefits of open source and it is something I am working on internally.
I’m one of those “strange persons” who has sometime used the clustering capabilities of Alfresco Community. To be honest this article has shocked me quite a lot.
I work for an enterprise that tries to make business by helping other businesses install and use Alfresco. So I’m glad Alfresco Community exists and I’m not going to get mad at Alfresco because of this, that won’t solve anything at all.
I can understand the need and maybe even the right for the mainly unique contributor to the community version to do something like this.
But Jeff, to be honest I think your article is not very fortunate. When you say “if your implementation is critical enough to require the 7×24 up-time an active-active, multi-node cluster provides, you should be able to justify an Enterprise Edition subscription.” Well obviously this kind of installations are harder to implement and require more investment but until now a final customer could opt to get an official Alfresco subscription or invest this money or part of it in getting support from a third party. Besides the fact that your preferred Alfresco provider might not be an official partner so it can’t in a reasonable and easy way sell you a subscription or give you service through a subscription.
Getting this people out of the way this way is a easily understandable business operation but please don’t pretend to make this pass as an innocent coincidence.
As you stated Alfresco was quite clear about its intention not to support certain “enterprisee functionality”. That was a pity but hey, you can’t force a company to contribute what they don’t want to.
Taking an important functionality that was present doesn’t feel very friendly. Sure it is easier for Alfresco to remove what for their Enterprise version would be legacy code instead of maintaining two branches but this is still quite unfriendly.
Igor,
I definitely didn’t mean to make it sound like a coincidence. Removing clustering was very intentional. My point was that we didn’t intend anyone to be using that code, we have always said that running in a cluster should be Enterprise-only.
I understand, respect, and fully support that anyone should be able to take Community Edition and do whatever they want with it. Make it clusterable if you want. Make it work on commercial application servers and databases. It is LGPL, so invest the time and energy to make it do what you need it to do. It’s just that our commercial interests make it such that we cannot provide those capabilities.
Jeff
Jeff, can you help me out by speeding up the process of getting the Enterprise licence price? We have a client that needs clustering and they are asking for the licence price.
Also, what about using alfresco in the cloud? There’s a 20 percent of an application that could be managed by Alfresco, but the entire app would be cloud based (lots of CPU I guess). How do you approach to pricing is such case?
Send me an email at jeff dot potts at alfresco dot com and include where you are located so that I can put the appropriate account representative in touch with you.
Thanks,
Jeff