Enabling third-party developers to efficiently create and deploy software is a top priority for us at DFINITY, as we work toward enhancing the creative capacity of the web by launching the Internet Computer — an open platform where software runs directly on the internet rather than on proprietary infrastructure. Developer Experience, or DX, is a matter of focusing on the needs of developers in the way that UX prioritizes the perspective of a product’s users. With that in mind, our DX team is constantly assessing the development workflow to make improvements and eliminate pain points.
Effective DX design provides a seamless experience for programmers as they use SDKs, APIs, libraries, frameworks, and other resources to build on a given platform. It increases productivity by focusing on functionality, dependability, and accessibility. If designed successfully, the DX makes it as intuitive as possible for developers to build innovative products and services.
Our DX team provides tools, languages, documentation, apps that demonstrate what can be deployed on the Internet Computer, and forums where we talk with developers and understand what their problems are so that we can help solve them. Listening to and engaging with the community is an important part of what we do.
The Internet Computer’s DX is always growing and expanding, but it’s currently segmented into the following key areas:
- DFINITY Canister SDK: A software development kit that developers can use to create applications for the Internet Computer.
- Rust CDK: A canister development kit that developers can use to program software for the Internet Computer in Rust.
- Vessel Package Manager: A simple package manager for the Motoko programming language.
- Motoko VS Code Extension: Syntax highlighting for the Motoko programming language in VS Code.
- Motoko: A programming language specifically designed to support the unique features of the Internet Computer and to provide a familiar yet robust programming environment.
- Candid: An interface description language (IDL) that’s used to visualize data exchange between software canisters on the Internet Computer.
- WebAssembly: A way to run code in multiple languages on the web at lightning-fast speeds.
- Developer Forum: A friendly discussion board where developers can ask questions and explore topics of interest.
- Documentation: The SDK microsite contains a wealth of documentation, videos and tutorials, and examples for developers to start building their first app.
- Hackin’ on the Internet Computer: SDK Engineer Hans Larsen hosts this video series about building various projects on the platform.
- Support: Bugs and feature requests can be filed by emailing firstname.lastname@example.org.
- Sample App Repo: Simple example apps in Motoko.
- LinkedUp: A professional social network built upon the Internet Computer that was demonstrated at the 2020 World Economic Forum in Davos.
- CanCan: A decentralized, scalable video-sharing mobile app that was unveiled at the launch of the Tungsten Developer Network.
- Reversi: DFINITY Staff Engineer Paul Liu built a multiplayer Reversi game (also called Othello) on the Internet Computer.
- Superheroes: DFINITY Senior Engineer Enzo Haussecker demonstrated how to build a CRUD application on the Internet Computer using Motoko and React.
- IC Game Terminal: DFINITY Engineer & Researcher Matthew Hammer created a game terminal with simple keyboard input and graphical output.
Human creativity unlocks the full potential of technology
In a way, DX is about nudging the users of a new technology toward an imaginative vision of its potential, which is limited only by old ways of thinking.
When film made it possible to record visual scenes, for example, among the first creative uses was to shoot theatrical shorts from a static perspective toward a stage, as though viewing a play. Although it now seems basic, this initial democratization of theater was undoubtedly groundbreaking. But it was when people began moving the camera and manipulating film that the ingenuity of techniques such as close-ups, panning, and dynamic editing truly produced the new medium of cinema.
Geoffrey Moore’s concept of “crossing the chasm” in the technology adoption lifecycle describes the adoption of new technology by defined groups. The most difficult chasm to bridge in the different stages of the lifecycle is between early adopters of a product (“visionaries”) and the first mainstream users (“pragmatists”).
For example, when Oprah Winfrey joined Twitter during a live taping in 2009, the platform gained between 500,000 and 1,500,000 followers in the following days. That’s post-chasm. But Twitter’s success was really propelled by its visionary community, which organically introduced so many of the features (like retweets, hashtags, and @-mentions) that were adopted into the product.
This creative momentum, combined with a trusted public figure like Oprah joining Twitter, paved the way for mainstream adoption of the platform.
In pursuit of the killer app
Another way to cross the chasm is through the success of a clear “killer app” on a new platform, defined as an innovative, useful product that proves the core value of a larger technology.
Today, the Palm Pilot is remembered as a predecessor to modern smartphones; the through line to the ubiquity of the iPhone almost seems obvious in retrospect. But the original iPhone launched to mixed reviews when it debuted in 2007. CNET lamented the iPhone’s lack of “talk” and “end” buttons for calls, and complained that switching between interfaces was “wearisome.” TechCrunch eviscerated the iPhone, saying that the virtual keyboard was “about as useful for tapping out emails and text messages as a rotary phone.” “The iPhone is nothing more than a luxury bauble that will appeal to a few gadget freaks,” opined Bloomberg.
This reception didn’t recognize the iPhone as a new platform. As the iPhone evolved and third-party apps were introduced, its success was made possible by the trifecta of data connectivity, portability, and geolocation services that it offered new products. The advent of mobile social media, rideshare services, and the like created a wave of killer apps that forever changed our view of phones and the ways that we interact with one another.
A similar paradigmatic shift is taking place right now, with decentralized technologies evolving in response to the increasing consolidation and corporatization of the internet. In the context of the technology adoption curve, no blockchain platform or application has yet truly crossed the chasm. The industry is still being pioneered by early adopters of this new paradigm.
The initial use cases for a new platform may seem trivial and even frivolous, but this doesn’t invalidate its real potential. For example, CryptoKitties, an app built for the purchase and collection of digital cats, was one of the most popular initial apps for Ethereum, becoming so popular that it accounted for 12 percent of all transactions on the Ethereum network and caused significant congestion.
From a technological point of view, the early and mature manifestations of a new technological paradigm are easy to define. Helping to actualize the rapid development and adoption of decentralized ecosystems takes both vision and momentum — and creating a seamless DX is crucial to making this happen.
DX and democratization
We aim to make it as easy and intuitive as possible for people to create on the Internet Computer. If we want to decentralize power and technology, we must ensure that everyone can contribute to this future, including people who don’t already think of themselves as developers.
We’re getting rid of the gatekeepers and lowering the bars to entry. With the Internet Computer, you can create software canisters as easily as you can tweet. The democratization of software engineering is well within reach.
Restoring the internet to its free and open roots will be impossible without the intellectual curiosity and contributions of developers around the world. We want to hear your feedback on how we can provide an optimal DX — and we look forward to ushering in a more equitable era of the internet with you.
Register for access to the Internet Computer’s Sodium Developer Network at dfinity.org/sodium.
Join our developer community and start building at forum.dfinity.org.