It’s Not Just Code, It’s a Network
The tech world has had a little time to digest the dramatic news that Microsoft is acquiring GitHub, and is starting to form its opinions. Amidst the flurry of hot takes, most of the immediate responses focused on the obvious business value for Microsoft: boosting its connection to developers and helping its Azure cloud platform to compete with Amazon.
But as we’ve been creating Glitch, we’ve learned a lot about what happens when coders collaborate together in realtime, and this reveals a deeper insight into where coding is headed. It’s something far bigger than just hoping to encourage developers to use one cloud services provider instead of another.
A network of coders isn’t just useful as a way of collaborating on programming, but is perhaps even more important as insight into social behavior, and as a foundation for machine learning about the way coders work.
Right now on Glitch, millions of users have created, remixed and discover projects, and we’ve listened closely as they told us how we can make those community members more productive. As a result, we’ve begun exploring the power of networked coding. “What if JavaScript wins?” described the ecosystem around coding is increasingly driven by network effects, so there’s an opportunity in building tools and infrastructure which recognize that reality and take advantage of this new environment.
Smart analysts like Ben Thompson have laid out why Microsoft would pay a premium for GitHub by describing the cost of acquiring developers for a platform. Microsoft’s own deck describing the deal emphasizes “the developer’s marketplace,” hinting at a sort of app store for coders, which could indeed be useful.
But the far greater value comes from radically increasing the number of people who can create software, while improving the quality of software that they make. That’s not incremental improvement in coding productivity, it’s an order of magnitude increase in who can create technology — a win for inclusion, innovation and invention as much as it is for productivity.
Imagine a few scenarios that networked coding makes possible:
- Analyze code that’s already been written, to understand which functions, methods and libraries are used most often. Then, use that data to build better support for these capabilities, or create new web services or infrastructure that can solve these problems more efficiently. (This is the potential that’s furthest along today.)
- Monitor new code as commits are made, seeing trending behaviors in design patterns, and gathering insight into repeated efforts that might be redundant, wasteful, or frustrating. You could even capture errors as they happen or provide examples of how others have solved similar problems.
- Identify the social relationships between collaborators, and the invisible network of connections between contributors to a project, to understand which people collaborate well together — or which people could collaborate together. On Glitch, the ability to just raise your hand to get help is already building relationships between coders, whether they’re on the same team or complete strangers, around the way they can collaborate together.
- And finally, and perhaps most excitingly, networked code provides a broad set of training data for machine learning about code that’s written in the real world. In the short term, this can provide better tools which anticipate the most common choices that coders make, but in the long term, we can identify likely mistakes or unexpected errors that make software less reliable, less maintainable, less secure, or more expensive. Some parts of this are theoretically possible with GitHub today, and some rudimentary versions of these capabilities are starting to show up in tools from Microsoft and others, including Glitch. But most tools that try to solve these problems are resorting to brute-force indexing of code or commits after a person has already created their work.
Reaching the full potential of networked coding can’t just happen by trying to analyze “dead” code that’s locked away in old repositories. Instead, networked code requires being connected to creators while they’re coding, responding and even anticipating the work that they’re doing. (And no, not like Clippy — more like the way we share photos of an event with faraway friends so they’ll feel like they’re in the moment with us, together.)
When we started preparing to launch Glitch’s earliest versions, one of our internal goals was, “writing code anywhere else should feel lonely in comparison”. Though it’s still very early, we think we’re well on our way toward achieving that mission.
But in reflecting on that goal, we realized it connected with a lot of the values that we think are important for coding overall , like unlocking the creativity of more people, including those who don’t even think of themselves as coders. Or freeing up creativity by giving people room to experiment or even to make mistakes while still being supported by a community. And tapping into the latest advances in artificial intelligence to give people more confidence that the code they write is secure, stable, scalable, reliable, and legible.
By all means, we should get excited about the potential for new cloud services. And it’s great if more companies are competing harder to earn the attention of today’s developers. But given the central importance of code in shaping the future of culture and society, one of the most important things we can do to set a standard for code going forward, is to make sure it’s more connected.
It’s not just about code connecting to our devices and to our data, but code being a medium through which we form connections to one another. We can’t wait to see what you create!