How Software Developers Build Better on the Internet Computer

DFINITY
The Internet Computer Review
6 min readJul 10, 2020

The architecture of applications is turned on its head, introducing a simplicity to building products that empowers developers.

The Internet Computer, the world’s first web-speed, internet-scale public blockchain, simplifies both software architecture and the development experience itself, freeing developers to focus on building great products. As Dominic Williams, DFINITY’s founder and chief scientist, commented at the launch of the Internet Computer’s Tungsten release, developers are able to just “write and deploy code” directly on the public internet.

To showcase some of these developers to the broader community and share valuable insights with those who are just getting started, the launch event included a panel discussion about building on the Internet Computer that was moderated by Alexa Smith, who manages DFINITY’s Developer Partner Program.

She was joined by Enzo Haussecker, senior software engineer at DFINITY and one of the key developers behind CanCan, a decentralized, scalable video-sharing application demonstrated at the event, as well as David Phan and Rick Porter, two veterans in the blockchain space who are software engineers at the ORIGYN project, a team that’s focused on building solutions for the Internet Computer.

“Developers can really focus on where it is that they’re adding value,” remarked Haussecker at the outset, summing up the Internet Computer’s simplicity. “Developers don’t really add value through replication and failover and database administration. For a long time, these are just things that we have had to deal with in software development. One of the things that a lot of developers are looking for is a platform where they get all this stuff for free, and they can really focus on their business logic.”

Software canisters

This simplicity is made possible in large part by canisters, computational units that consist of both code and state that can be compiled into a WebAssembly module. After code and state are compiled into a canister, the canister can be deployed on the Internet Computer and accessed over the network.

Porter compared working with canisters to microservice architecture, where canisters have their own independent functions or services, and a developer can “string them together” through inter-canister communication to create applications.

“You can take an entire application and put it in one single canister and completely manage it through that process,” he said. “Or you can start breaking it down into its individual components.”

He gave an example of how canister architecture and the Internet Computer turn the traditional three-tier software architecture — composed of the presentation layer/UI, the business logic layer, and the data access or persistence layer — on its head.

Read more: Copper, Bronze, Tungsten: Tracing the Internet Computer’s Rapid Progress

ORIGYN is building a marketplace, and Porter explained how you can manage, sort, and access data through canisters themselves by building create, read, update, delete (CRUD) functions directly into business logic versus using centralized databases or object relational mapping (ORM). Canisters, their code, and the calls across them can seamlessly recreate all of the elements of a traditional three-tier system.

On the topic of UI, Phan spoke to how front-end development in particular is drastically simplified. He has experience building decentralized applications using other blockchain platforms, such as Ethereum, and he walked through some of the complexity associated with getting a front end up and running and all of the various systems and integrations involved. These included using JavaScript and web3.js to talk to an Ethereum provider like Geth or Infura, and then storing in something like IPFS or Swarm.

By comparison, when starting a new project using the DFINITY Canister SDK, developers are provided with webpack and can develop front-end using any JavaScript or TypeScript framework of their choosing, including Vue and React. Accessing the front-end is as easy as importing the front-end canister module, compiling, and viewing in a traditional browser.

Read more: How I Built a Multiplayer Reversi Game on the Internet Computer

Scalability and legacy integration

A major topic of the discussion as well as the entire conversation around Tungsten was scalability, which is a well-known issue in the decentralized space. Haussecker emphasized that scalability should not be the burden of the developer, but rather something that is provided by the platform itself.

One of the most notable things about CanCan from a developer’s perspective is how the sleek front-end is totally separated from the back-end. This architecture allowed the DFINITY team to swap in and test several scalability solutions in different languages. Haussecker discussed several scalability solutions that were considered for CanCan, including distributed hash tables (DHTs) and DFINITY’s in-house solution “BigMap,” which was developed in both Rust and Motoko, a new language that is highly optimized for the Internet Computer.

Until everything gets running on the Internet Computer, developers in the near-term will most likely need to build integrations into existing systems in order to create great consumer products and enterprise platforms. Phan gave an example of bridging the centralized and decentralized world with his “Internet Computer Protocol (ICP) Mailer,” a proof-of-concept that allows Motoko developers to send custom email messages to a FIFO Queue canister. These messages are then pushed to legacy systems using external workers.

Phan walked through the three simple steps to building this, including developing a generic queue in Motoko using the Vessel package manager, a web interface that will deploy one queue canister per application, and a back-end worker that periodically fetches messages from the queue and processes them.

Read more: Rebooting the Internet: Andreessen Horowitz’s Chris Dixon on the Decentralized Web

These simplifications in both architecture and the development process are also being seen at the customer-level. Porter explained that for engineers like him and Phan, who have experience building PoCs and prototypes for enterprise clients, the Internet Computer drastically reduces their time to delivery, and as a result, their customer’s time to value. By taking away the complexities associated with things like hosting, file storage, servers, and databases, they can focus on the business logic and UX in order to prove the value of new solutions and demonstrate key functionality.

“All these things are kind of out of the box with DFINITY,” Porter said. “If we want some sort of front-end, we want a traditional three-tier architecture application, now you just generate the project and you’ve already gotten like 20 or 30 percent of it done. It’s all about designing the data types and creating the interfaces, typically some sort of simple CRUD stuff or a PoC, and then building out that front-end. And so it’s super fast.”

Developer resources

The panel referred to resources that are available to developers looking to begin building on the Internet Computer. DFINITY’s Developer Forum is a valuable and friendly jumping-off point. Haussecker also recommended starting with simple tutorials and working up to more sophisticated apps.

Phan and Porter have found it invaluable to refer to the DFINITY Examples repository on GitHub, side projects of DFINITY team members such as Enzo’s QR code generator, and the Motoko base library — which was recently made open source. Phan also gave a shout-out to DFINITY senior engineer Hans Larsen’s “Hackin’ on the Internet Computer” video series.

Haussecker discussed some of the exciting projects that came out of DFINITY’s internal Tungsten hackathon in June, which you can read more about here. Regarding other software and services that could someday launch on the Internet Computer, Porter mentioned that he would like to see a “Shopify” built on the network, where users can list goods for sale — both physical and digital — and customize their own shops. Phan said he wants to see an “open Uber” that reduces fees for users and drivers.

This is all possible. The Internet Computer is offering a space for developers that is truly revolutionary. And the best part is that there is so much more in store for DFINITY’s developer community as the blockchain progresses to full public launch later in 2020.

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.

--

--

DFINITY
The Internet Computer Review

The Internet Computer is a revolutionary blockchain that hosts unlimited data and computation on-chain. Build scalable Web3 dapps, DeFi, games, and more.