Difference between OpenZeppelin Contracts and OpenZeppelin Contracts Ethereum Package

Asked on GitHub:

OpenZeppelin Contracts is for regular (non-upgradeable) contracts while OpenZeppelin Contracts Ethereum Package is an official fork of OpenZeppelin Contracts that has been modified to use initializers instead of constructors so that they can be used with upgradeable contracts.

OpenZeppelin Contracts 2.x uses Solidity 0.5 and there is an equivalent OpenZeppelin Contracts Ethereum Package.

OpenZeppelin Contracts 3.x uses Solidity 0.6 and development is ongoing for an equivalent OpenZeppelin Contracts Ethereum Package. (see open issue: https://github.com/OpenZeppelin/openzeppelin-contracts-ethereum-package/issues/79).

Please note: storage layout changes likely means that contracts can’t be upgraded from 2.5 to 3.0.

OpenZeppelin Contracts Ethereum Package v3.0 has been released.