This blog post was authored by d1onys1us. Feel free to follow me on Twitter @indraynor.
Taiko is fully open source -- you can view all the code on our GitHub.
By "open source" we mean free to see the source and modify it. Specifically, we use the permissive MIT license for all of our code except our minimally modified geth fork, where we maintain the original GPL license.
Here is a summary of the code powering Taiko:
Protocol smart contracts
L2 node software
In summary, the entire network is open source and unrestricted to join in and participate: the L2 nodes, proposers, provers, and smart contracts on L1/L2.
By GPL, we'll mean GPLv3 for the sake of example, but there are other variants such as AGPLv3, GPLv2, and LGPL -- GPL is more nuanced, as you can see.
The primary difference between MIT and the GPL is that MIT essentially allows you to do whatever you want, as long as you retain the copyright and permission notice in the codebase. The GPL license imposes a few more restrictions on the developers. For example, using a GPL library in your codebase requires you to convert your entire project under the GPL license, which makes it a "viral" license. It also means that you can't create a modified proprietary version.
While GPL can be annoying for developers and companies, the idea is that it is nice for users; it gives them the freedom to view the source code. It also prevents someone from running a modified and possibly malicious version of the codebase. So this is another way GPL protects the user. GPL, in general, is more concerned with user freedom than the ease of developers using the software.
Taiko's guiding principles are:
Like all things, these licenses make tradeoffs. For example, someone can convert MIT-licensed code to proprietary code with (potentially malicious) patches. That is a real potential risk for users. On the other hand, GPL-licensed code can exclude developers who don't want to relicense their entire project to GPL just to use a code snippet.
The reason we chose MIT on this tradeoff was for a similar reason we decided to be a Type 1 ZK-EVM: compatibility and simplicity.
The MIT license will make it much easier for other people to use our codebase and increases the opportunity for collaboration, which is a part of our DNA. It's also inclusive because it's so short and straightforward. It's easy to understand that you can freely use this code however you want as long as you include the copyright and permission notice.
To make a final note about GPL, a somewhat controversial license. One could use GPL, specifically the AGPL, in an unethical manner (like making it scary to use and selling another license). It is also undoubtedly more difficult to integrate from the developer's perspective. However, it's always nice to think about one core principle often mentioned by the Free Software Foundation: user freedom.
Given recent events, we, as developers, must continue thinking about our responsibility to the user. Especially how we should always make it easy for the user to understand and verify our software.
Historically, some of the worst events have occurred due to a lack of transparency. Therefore, we should strongly encourage openness for the sake of our beloved users. And remember: don't trust, verify.
Okay, so we're all open source; that's great. Now you want to know how you can contribute. Our Contributing guide is a living document you can reference. It will evolve over time.
For now, here are some specific places to start:
Reviewing our protocol and offering suggestions on our GitHub Discussions or other social platforms.
Writing educative material for the community to learn more about Taiko and ZK-EVMs.
Opening issues, we have templates for Bug Reports and Feature Requests.
Taking on issues, you can find some with the label
good first issue here.
Any contributor will be featured as a contributor on our README, and be eligible for the 2022 Taiko Contributor (Founding Year) GitPOAP 😎.
Thanks for reading!