The Internet Computer extends the functionality of the public Internet so that it can host backend software, transforming it into a global compute platform.
Using the Internet Computer, developers can create websites, enterprise IT systems and internet services by installing their code directly on the public Internet and dispense with server computers and commercial cloud services.
Enabling systems to be directly built onto the Internet is undoubtedly cool, but the Internet Computer is about more than this alone. It seeks to address serious long-standing problems that bedevil IT, including system security, and to provide a means to reverse and undo the ever increasing monopolization of internet services, user relationships and data, and restore the Internet to its permissionless, innovative and creative roots.
For example, the Internet Computer hosts its native software within an unstoppable tamperproof environment, making it possible to create systems that don’t depend on firewalls, backup systems and failover for their security. This framework also makes interoperability between different systems as simple as a function call, and automatically persists memory, removing the need for traditional files, enabling organizations to dispense with standalone infrastructure such as database servers. These features enable internet software systems to be completely self contained and address today’s security challenges while dramatically reducing the exorbitant complexity and cost of IT.
The increasing monopolization of internet services is addressed through support for “autonomous software”, which runs without an owner. This allows “open” versions of mainstream internet services to be created, such as social media websites or SaaS business services, that run as part of the fabric of the Internet itself. These new open services can provide users with far superior guarantees about how their data is processed, and moreover can share their user data and functionality with other internet services using permanent APIs that can never be revoked, eliminating “platform risk” and allowing for dynamic and collaborative extension of the ecosystem in a way that generates mutualized network effects that enable them to compete with Big Tech monopolies, providing tremendous new opportunities to entrepreneurs and investors.
The Internet Computer is formed by an advanced decentralized protocol called ICP (Internet Computer Protocol) that independent data centers around the world run to combine the power of individual computers into an unstoppable seamless universe where internet native software is hosted and run with the same security guarantees as smart contracts. It is integrated with Internet standards such as DNS, and can server user experiences directly to Web browsers and smartphones.
Developers create systems that run on the Internet Computer by developing “software canisters”. A canister is a portable system unit that bundles software (logic) and state (data). Many systems can be created using a single canister because of their high efficiency, but internet-scale systems that need to scale-out by using multiple canisters. Any canister on the Internet computer can call directly into functions that other canisters have shared with it (i.e. to which another canister has granted it permission to call). Canisters maintain their data in persistent main memory rather than files, and therefore developers only write abstract code rather than thinking about data persistence themselves, in a scheme called “orthogonal persistence”, which is used both for the twin purposes of driving computational efficiency and simplifying software development and code.
Canisters are created by compiling code using an Internet Computer SDK and tested before being uploaded to the Internet Computer. SDK’s can, in principle, support any language and provide developers with a variety of programming models. The DFINITY Foundation provides SDKs that support several languages including Motoko (a new language), Rust and C. The Foundation has developed the Motoko language to provide an optimal experience for developers building for the Internet Computer. It provides features that automatically migrate objects residing in memory when canister software, or the Motoko compiler, are upgraded, and allows developers to write direct sequential code when creating systems that involve multiple canisters - providing a means to write sequential logic that “scales-out”.
When a developer wishes to create an “open internet service”, they sign over control of its canisters to tokenized public governance canisters that thereafter take responsibility for upgrades and configuration. An open internet service can mark shared functions as “permanent” (i.e. APIs can be marked as permanent). In such cases, canister upgrades cannot overwrite the shared functions, and if an upgrade degrades the functionality it provides, constructively revoking the API, the Internet Computer’s own governance system can make progressive modifications to the governance system of the internet service until such time that the expected functionality is restored. The purpose of permanent APIs is to allow developers to build services that rely on data or functionality supplied by other services without “platform risk” (for example, LinkedIn revoked the APIs through which 1000s of startups obtained professional profiles they incorporated into their own services) allowing for a much more dynamic and collaborative internet where innovation, creativity and entrepreneurialism can provide better solutions than Big Tech monopolies.