Following the renaming of the company and our products, we have now released the OpenZeppelin SDK, formerly known as ZeppelinOS. You can install and start using the new SDK via the CLI:
npm install -g @openzeppelin/cli openzeppelin init
But before moving forward with the changes involved in this release, let’s talk about what the renaming involved for all our products, and what motivated it.
It was not lost to us that ZeppelinOS was not a very descriptive name when we first launched it. I think this paragraph by Matt Condon (from 2 years ago!) sums up the general feeling pretty well:
I’m really not a fan of people adopting these already well-defined terms (like OS and Kernel) and using them to describe things that aren’t what we already understand to be an OS and a Kernel. It just adds more confusion to an already ridiculously definition-saturated space. Call your project what it is and don’t fall into the AWS naming trap that requires blog posts like this to accurately describe what you’re working on.
Also, as the company announcement mentions, the link among OpenZeppelin (the contracts library), ZeppelinOS (the development toolkit), Zepkit (the starter kits), and Zeppelin (the company) was not clear at all. This motivated the rebranding of both the company and our products as a whole.
Contracts, SDK & Kits: the OpenZeppelin Platform
The OpenZeppelin SDK is now part of a larger suite, the OpenZeppelin Platform. The Platform groups together the SDK, the OpenZeppelin Contracts (formerly known as
openzeppelin-solidity), and the OpenZeppelin Starter Kits (formerly known as Zepkits). All packages are now published under the single @openzeppelin npm organization, and their repositories under the openzeppelin github organization.
Besides the renaming and reorganization of the projects, we have also reorganized the teams maintaining them within our company. Instead of working as separate teams for contracts and for the SDK, we are now happy to be operating as a single platform team. You will find @rrecuero, @martintel, @Dennison, @frangio, @nventuro, @ylv-io, @jcarpanelli, and myself working together on the OpenZeppelin set of open source tools. This gives us not only more flexbility, but also helps us in building a more cohesive and unified developer experience. The first step in this direction is the beautiful new documentation site for the entire OpenZeppelin Platform, which you can check out today.
Old and new packages
The following table shows the mapping of the projects and repositories between the old and new naming schemes.
|Old package||Old repository||New package||New repository|
(the last two are yet to be published under the new naming on npm)
Migrating from ZeppelinOS to the OpenZeppelin SDK
The SDK changes the name of the executable from
oz if you prefer shorter names). It also keeps all configuration files under a single
.openzeppelin folder, to avoid polluting your project’s root. The release changelog describes all modifications in more detail:
However, all the previous namings are still supported, meaning that you don’t need to change anything on your project when you migrate. You can still run
zos in your command line or scripts, and if a
zos.json is found at the root of your project, the SDK CLI will still pick it up. Also, the Ethereum Package
openzeppelin-eth will still be supported by the SDK, but you can opt-in to the new
The only thing that will require a change on your end are import statements: for instance, if you are importing
zos-lib/contracts/Initializable.sol, you will now need to import
Another project to join the Platform
Since renaming all of our products, moving our repositories around, deploying a new company site, and building a new documentation site is not enough to keep us busy, we have also been working on
Expect more news about this real soon!
Where we go from here
With the development teams now working side by side on a single OpenZeppelin Platform, expect a more cohesive development experience. We will build a single development journey on top of our tools, to seamlessly go from writing smart contracts, to operating them, and to creating powerful decentralized applications - while keeping each project’s own identity, allowing you to pick just the components you want.