In brief

  • Ethereum wallet MetaMask will use a proprietary license because of “free-riders.”
  • The wallet will remain free to users, but some forks will have to license the code.
  • Twitter bickering between MetaMask and Brave team members ensued.

CORRECTION: An earlier version of this story incorrectly framed how Metamask's new licensing model works. Among other things, it said that Metamask would begin charging developers. It also incorrectly stated that Crypto Wallet was a Brave fork. The story has been updated and clarified. 

Another week, another major change for the popular Ethereum wallet MetaMask. After last week’s announcement of dates for a potential dapp-breaking code change on the horizon, the company announced this week that it will move away from its open-source approach after problems with free-riders forking its code. 

Instead, MetaMask has adopted what it calls a “tiered proprietary license,” leaving behind its previous permissive MIT license. MetaMask will remain fully free to users, so there’s no need to worry there. Nothing is changing on that front.

"Nothing changed for users, dapp developers, or community forks. Our new license is still more permissive than other wallets. Projects commercializing a fork just need to create an agreement with us," said Jacob Cantele, MetaMask's head of product, in a tweet yesterday.

The license states that organizations forking bits of MetaMask—which is now owned by ConsenSys—to commercially serve 10,000 or more monthly users must enter a licensing agreement. (Disclosure: ConsenSys funds an editorially-independent Decrypt.)

"Example agreement: don't fork our referral codes so we can survive as a project," said Cantele. "We aren't charging forks. We are just requiring them to agree not to remove our referral codes, which are how we make our money," Cantele told Decrypt.

MetaMask will continue to provide its code for inspection and auditing, and for both non-profit organizations and developers of apps with fewer than 10,000 monthly commercial users, the story is much the same as before. This move solely affects any larger players who want to use MetaMask’s code to power their own wallet functionality.

According to lead developer Dan Finlay, it’s unsustainable for MetaMask to continue to allow other companies free reign to use MetaMask’s code for their own purposes.

“Despite open source software solving critical shared problems, fair compensation for the maintenance of these community goods remains a problem, with many different sustainability attempts—from donations, to grants, to copyleft licenses," he wrote in a blog post.

“A developer shouldn’t have to decide between making proprietary software or continuing open source licenses,” Finlay wrote. “We also need to be on a fair playing field with other products in the ecosystem that exist upstream of MetaMask in the web3 tech stack.”

”We decided to keep to the principles of open source development with auditable code, but reserve the right to come to enterprise agreements with distributors whose version of MetaMask serves more than 10,000 users. This protects MetaMask from free-riders or upstream competitors from exerting monopolistic control.”

Who might these so-called “free-riders or upstream competitors” be? Jacob Cantele made it clear in a tweet that includes an image of the Brave browser, writing: “Browsers, for example, have forked us and introduced patterns where it is increasingly difficult to use MetaMask, while the user is prompted to replace MM with a fork.”

Cantele suggests that Brave is actively blocking MetaMask usage and pushing its own Crypto Wallets functionality… which is forked from MetaMask.

Brave’s team, for its part, disagreed with Cantele’s assertion. Co-founder and CTO Brian Bondy replied that Cantele’s post was a “spread of misinformation,” and that the prompt shown in the shared screenshot only happens if a user has already selected Crypto Wallets in a third-party dapp. Brave CEO and co-founder Brendan Eich also tweeted, “We do not block MetaMask.”

The whole back-and-forth had some contentious moments, including Bondy stating, “MetaMask wasn't forced to change their license. They just chose to do that,” and telling Cantele, “Please verify claims before throwing them out in disguise of facts.”

Another potential issue emerged in discussion: the possibility that MetaMask’s licensing shift was invalid due to the use of dependency that is subject to a GPL 3.0 license. MetaMask’s Erik Marks responded on GitHub that a single dependency in the code is subject to such a license, and that it will be removed. MetaMask locked the issue, removed  the GPL 3.0 dependency, and considers it resolved.