Adobe's Involvement in Open Source
A Look At The Numbers
🍻 Filip Maj
🎮 Senior Computer Scientist
🌱 Developer Ecosystem
Why is Open Source Involvement Important?
I feel like everyone here is a fan of and believes in open source, but I first want to take a moment to tie back open source involvement to Adobe's strategy and bottom line. Open source is a principle I think we all strongly believe in, but I think it's important for all of us to be able to advocate the benefits of open source in terms of how it benefits Adobe. To that end, I want to cover a few points.
Adobe Experience Platform
"Four priorities at the highest level. Number one: Cloud Platform. This is one of the biggest bets the company is making. The days of us building siloed stacks are not going to serve us well in the future. Three foundational bets that Adobe made two years ago: multi-cloud, content platform and data platform. Content is uniquely ours, and we cannot afford to have fifteen different content repositories that are disconnected and siloed."
- Abhay Parasnis, CTO, Adobe, Cloud Tech All Hands Q1 2018
Of the four top-level 2018 priorities Abhay last talked about at the Cloud Tech all hands last month, Cloud Platform came up first, and note how the word "siloed" was used negatively - twice.
A platform, rather than a series of products, enables a foundation upon which products can be built, necessarily leading to more sharing and collaboration. This changes the way products are built to a process that inherently requires more cross-team engagement.
I think Abhay here is pointing to this need and also taking a subtle jab at how things are done today at Adobe: products are built in their own silos.
The end-consumer-goal for our products is that they need to work in concert for our customers. This necessitates changing how we build things at Adobe. Building our products in silos in some way influences them to work as if they are siloed for our customers. That has to change. Creating a platform is one such big change to try to improve that.
Why Delineate Platform vs. Product?
⚗️ Value provided is distilled down to its essence - "Content is uniquely ours"
🏗 A foundation exists for value generation (e.g. product creation and sales) to be opened up to third parties
TL;DR: what 🆒 stuff can
others build on top of Adobe content, data and services? I see two main benefits from creating a platform for products instead of just delivering products by themselves: one is, you start to understand the unique value you provide to customers. For software this becomes evident quickly. Software 'factors' (i.e. we have a mobile app!) are no longer differentiators. The platform makes it clear what is "uniquely ours" - as Abhay pointed out, content is that for us. Secondly, too, it unshackles Adobe from being the only one able to build on top of that platform - we open it up to third parties. This has serious economic consequences. The gold standard example here is Apple's App Store (which has made ridiculous amounts of money taking a 30% cut from third party developers), and a closer-to-home example is Salesforce's ForceApps, which now accounts for 30% of Salesforce's revenue.
Who Do We Care About?
Developers, developers, developers
Funnily enough, Steve Ballmer had this market demographic figured out long ago! At work I often ask myself, "What would Steve do?"
Developer Experience Matters
A good experience necessitates:
📝 Up-to-date, accurate and tested docs
🍤 Code samples
📦 Functional SDKs & Client Libraries
📞 Responsive support for these assets
Why all of this? So that devs can get to “Hello World” fast and start using our platform ASAP
So if our goal is attract developers to our platform, what do we need to do to bring them on board and have them stick around?
This Is Not Easy
Keeping these assets up to date and providing support is challenging
Open Source Is The Way
The industry-standard way of achieving this is to place these assets in the hands of the developer community 👨👩👧👦
🚜 Adobe developers end up working elbow-to-elbow with our customers - who are also developers
🌱 In this way we plant the seeds of a developer ecosystem that is critical to the business
The industry-standard way of achieving this is to place these assets in the hands of the developer community. These assets, which are in our user's critical path, over time increase in quality merely by being open. If the developer-also-user sees a problem or experiences a frustration, offering an (open source) channel to vent that frustration (e.g. in a bug tracker) gives them a means to contribute and helps us identify issues - essentially, free quality assurance. Meanwhile, Adobe developers get to interact with our users (remember, who are also developers), gain insight into what is important for them, and can therefore build more value for them. An obvious benefit to the business. These behaviours plant the seeds of our developer ecosystem.
It Seems That We Understand This
"We hope [open-sourcing this library we developed internally at Adobe] will increase Adobe presence and visibility in the Machine Learning community as we contribute back to the community. At the same time, this effort will also help with our platform’s adoption."
Wei Chung, Senior Computer Scientist at Adobe
https://git.corp.adobe.com/OpenSourceAdvisoryBoard/opensource_submission_process/issues/93 It looks like the rank-and-file employees at Adobe generally understand this. Here's a little snippet from the Open Source Office's project approval issue tracker. The engineers that are already wanting to push more and more of Adobe's software into the open understand that there are benefits from doing this for their product and their customers.
56th in 2017
So this person from Google developer relations measured activity of employees of top tech companies on Github, and looked at how many people are active across what number of projects, and how many Github stars these projects are gaining over time. We ended up ranking 56th, with 38 unique contributors on Github across 55 repositories. According to this research, the top three projects in terms of being 'starred' in 2017 were Brackets, source serif pro and CEP resources, with the star numbers next to them.
Only 38 Adobians active on Github!?
That seems wrong, right?
How It Worked
The original approach used Github user's git configuration email, and specifically the domain portion of the email, to associate users to companies.
➜ echo "firstname.lastname@example.org" | pcregrep -o1 "\b[a-zA-Z0-9.-]+@([a-zA-Z0-9.-]+\.[a-zA-Z0-9.-]+)\b"
... but who puts their company email in their git config, amirite? ✉️
What We Changed
🛒 Every month, we gather all Github usernames that were active that month on Github with at least one commit to a public project - about ~1.3 million usernames.
🔨 We then pound the Github REST API to pull out the "Company" field from the user's Github profile:
⏰ (this takes about 72 hours)
🚢 We store these user-company associations in our own SQL DB, and import into Google BigQuery when we need to, for easy cross-referencing with
githubarchive.org Github activity data 📦 There's a repository with the details:
Number of Contributors by Company, Q1 2018
Adobe sits at 34th by number of contributors active on Github in the first quarter of 2018, with 115 unique employees active on Github projects that received at least one star in Q1 2018
Adobe Contributors and Projects, Quarter over Quarter
This is a quarter-over-quarter breakdown of how many Adobians were active on Github, and across how many repositories. We can see that in terms of sheer number of contributors and breadth of projects contributed to, we peaked in the first half of 2017, then fell off a bit, and have come back with a vengeance in the first quarter of 2018.
Adobe vs. Top Competitors, Q1 2018
How do we stack up vs. Salesforce and Apple? Let me explain the columns of data a bit more, from left to right. First you have the number of unique contributors active on Github, and number of repositories committing to - just like that last graph. The next two columns show the top projects the companies are contributing to based on how many stars they gained in Q1 2018, and the column after that shows how many unique contributors from that company commit to that project. The final column shows the total number of stars gained in Q1 2018 by adding up all the stars across all projects the companies contributed to. We can see Adobe contributed to popular projects like parcel, eslint and harbor, and only two 'born-at-Adobe' projects in Brackets and Source Code Pro (by the way, I find it so cool that we get recognition for our contributions to typography - that feels very "adobe" to me). For Adobe, the stars we gained came from projects where we have only a single contributor active (more on this in a bit). Salesforce shows a similar pattern of lone-wolf style contributors across their popular projects. And isn't cool that we can take a look and see where our competitors are being active in? You can see Apple is contributing to Apple things like swift - but interestingly also to netty.
What About Individuals at Adobe?
🤗 How can we recognize active Adobians?
A Sneak Preview
At Adobe, two individuals stood out in terms of the number of "stars" the projects they contributed to gained: Devon Govett and Kai Cataldo. In the previous slide, recall how the most popular projects Adobe contributed to were parcel and eslint? Well, it's thanks to these two!
Thanks, Devon and Kai! 👏
More Work To Be Done
Sorely needed: count other
kinds of contributions
Issues created / commented on / closed
Pull requests issued / reviewed / merged
These are valuable contributions that we need to acknowledge, too.
📈 Those of us here understand that Open Source is a process that makes superior software in less time.
So why are we as Adobe, overall, so slow to engage and contribute back?
📣 Be vocal about helping to nurture our developer ecosystem! Demand your team contributes back to the open source projects it inevitably relies on!
❓ Ask your Director or VP next time you have a chance: why aren't we more involved in open source?
Adobe + Open Source = ❤️
With greater open source involvement, Adobe can gain the trust of the wider development community faster while positively investing in its employees and driving more usage to its platform.