In Part 1 and Part 2, we talked about open-source projects that started outside of Salesforce. But, does Salesforce create and contribute new open source releases as well? Historically, yes, although typically not core platform features… But, this is changing. With over 4 million custom apps written on our Platform, and 1.5 million developers in our community, the importance of open sourcing core platform technologies is critical for continued success. In the last year, Salesforce has open sourced two large libraries, Aura and Apache Phoenix.
Apache Phoenix: We Put the SQL Back in NoSQL
In Part 2 of this series, we talked about how Salesforce makes use of HBase, a NoSQL database for high scalability. For developers who are used to relational databases, one of the issues with NoSQL is that…well, there’s no SQL! Learning how to write optimized data access code with the HBase client API is not a task for the faint of heart.
Enter Apache Phoenix. Originally authored by James Taylor, an architect at salesforce.com, Apache Phoenix provides the ability to use HBase via high-performance, low-latency SQL statements, making it similar to any other relational database API. The project’s slogan is, “We put the SQL back in NoSQL!” You may recall, we profiled Apache Phoenix in a blog post back in May.
From its open-sourcing in 2012, Phoenix has spiked in popularity and contribution. It was accepted as an Apache Incubator project in late 2013, and it became a top-level Apache project in early 2014. It also was included in mature distributions by Hortonworks (a company built on open source!).
Contributors from dozens of companies have provided patches and contributions, and the committer list has a broad representation from around the world. Recent contributions include the addition of hash join, a new CSV loader, Pig integration, and the inclusion of SQL Arrays.
As a top-level Apache project, Phoenix is perhaps the most well known of Salesforce’s open-source contributions in recent years. But it’s not the only one.
Aura: The Backbone of Salesforce1
Aura is the component-based UI framework that was used to create Salesforce1. It’s an event-driven, client-server UI architecture; developers can use it to build a single UI that will work seamlessly across desktops and devices, and interact with a server-side process (like the Salesforce service). It’s very much in the spirit of modern JavaScript frameworks, intended to elevate developers from the nitty-gritty of DOMs and Javascript, allowing them to work faster and avoid browser compatibility pitfalls.
Aura (currently in closed pilot, and entering Beta during the next major release) will provide Salesforce customers with access to the exact same technology for authoring their own components. Developers can create components that integrate directly into Salesforce1. This provides better access to features and optimizations than were available previously.
Aura is open sourced on GitHub, and to date the project has over 7,000 commits. Why is it released as open source? As an open project, access to the source code gives transparency to customers. As its use increases, customers can contribute new features back to the project, leading to better quality for all.
(Interested to get your hands dirty with Aura? Salesforce product manager Skip Sauls created a simple example that spins up Aura on Heroku, for some great HTML 5 demos.)
Force.com IDE
Many Salesforce developers did a dance of joy on the day Salesforce announced it had open-sourced the Eclipse Force.com IDE Plug-in. If you’re not familiar with it, the Force.com IDE is an Eclipse plug-in that makes it easier to work with Salesforce assets (code, schema, etc.) in Eclipse. By open-sourcing it, regular users are now allowed to contribute bug fixes and new features. Within a month of the open-source announcement, a couple dozen ideas have been posted, and one contributor has already begun creating a new feature for the plugin.
And More…
Other projects have also been open-sourced in recent years. The Mobile SDKs for iOS and Android are both open (and, incidentally, make heavy use of another open library, Apache Cordova, to blend web and native components). We also open-sourced Kylie, which is a JavaScript tool for measuring page rendering and script execution time.
There’s open source ON the Salesforce platform, as well as underneath it. In addition to the standard forcedotcom git repo and apex searches, you can find lots of open, shared Apex code in the force.com Code Share. And there are a ton of open source repositories available at the github developerforce page, created by the salesforce.com developer relations team–mobile packs, wearbles, and more.
There’s a thriving open source community around the Salesforce platform, partly seeded by Salesforce examples and SDKs, as well as by salesforce.com customers developing Apex components. More and more, being a Salesforce developer means working in open source projects, big and small (like this great example of a simple heartbeat monitor app, from Product Manager and professional “Salesforce hacker” Adam Torman); the restforce Ruby gem written by community member, Eric Holmes (incidentally, the original open source Ruby gem for Salesforce was written way back in 2005!); and nforce for Node.js developers written by another community member Kevin O’Hara.
New Open Source Releases: Conclusion
Building software with open source in mind is inherently beneficial because it drives you to do plain old “good design.” If you’re going to share something with the world, it has to be loosely coupled to the rest of your systems, and it has to be cohesive and comprehensible — it has to “do one thing well.” This, and the lessons of win-win collaboration, has been a huge boon to engineers at salesforce.com. Embracing the open-source model has been a sea change in the last few years.
Look for more involvement and contributions in the near future!
Big thanks to: Regina Burkebile, Reid Carlberg, Adam Torman, Doug Chasman, Eric Perret, Helen Kwong, James Taylor, Jeff Bergan, Jesse Yates, Jon Bruce, Lars Hofhansl, Phil Waligora, Rachel Mei, Santosh Rau, Scott Hansma, Vijay Devadhar, and Walter Macklem.