Open source software in Web3: Lessons learned from the Truffle team
Ethereum Denver·Mon, Oct 9, 2023, 12:00 AM
Open source software is a critical public good to building out the Web3 ecosystem. As the first blockchain development environment, Truffle has a unique story to tell from starting as open source software to figuring out how to monetize to survive. This talk covers the the lessons Truffle has learned in our journey as an open source project and what we're doing now to work collaboratively in the ecosystem to offer blockchain developers the best experience. Emily Lin Developer Evangelist Truffle Emily is a former devops engineer turned developer evangelist for Truffle at ConsenSys. She focuses on developer education - running workshops, livestreaming, and connecting with developers IRL to help them build the next generation of dapps. She's also a member of Developer DAO and Kongland. https://twitter.com/_emjlin
Transcript
um I guess I have to explain dungeon master if you guys play Dungeons and Dragons I handle all of the rolling and Imagination that goes with that also the developer advocate for truffle and consensus EK VM but today I'm here to talk about open source software in general but like kind of from the perspective of the Truffle team so I'm going to start off with kind of a story about truffle's history and how we got to where we are today um and particularly like lessons that we've learned that illustrate why open source software is important so how many of you guys here are smart contract devs okay not that many so for those of you who don't know truffle is a suite of developer tools that help you compile test deploy your smart contract applications it was the first development environment out there you could kind of call us the ogs of blocks um oh okay yes it's still on yeah um OG's in terms of like Original Gangster sometimes I also get original grandpa but that's completely okay grandpas are cool too but just to kind of give a background of how we started we were a project within consensus essentially our founder Tim Coulter came in and he was told hey build dapps and in that process he created scripts to help I guess make that process a little faster and the realization was like or actually oh sorry this keeps like fading in and out let me start over uh these scripts are actually going to be crucial to Growing the blockchain ecosystem rather than just building dapps we should be enabling developers to do so um so in that case we moved out of consensus in 2019 um and what that means is we spun out of consensus three million dollars from them as a sole investor but we had a 300 000 burn rate per month and so what does that mean for us as an open source project that's working independently we need to look for funding what that looked like was we created Integrations for short-term Revenue but obviously that is not sustainable right so we started focusing on something like annual recurring value um in this case a probably called truffle teams um but as you'll see in the next slide this was probably the wrong move specifically the shift from focusing on monetizing made us forget the core of who we are and who we serve so specifically who we are a open source software enabling developers to build faster and better and who we served again like I said those developers um just like building in a very nascent ecosystem and what I mean by that is when you're focusing on that SAS side of things or building a motorcycle for an industry dominated by tricycle Riders essentially we're building like really cool software trouble teams was awesome but it was not what was needed in the industry at the time we were building it and what this meant was in 2020 we decided hey let's reassess let's roll back into census and I think that was a really great move so folding back into consensus as a purely open source tool allowed us to prioritize based on developer needs so rather than focusing again on how do we [ __ ] survive right we can finally focus on how do we build for the Developers um and so kind of learn here from today is that we have concluded that Dev tools should not live in silos web3 benefits the most when devs get to pick and choose what works best for them so what do I mean by this um basically if you look at the dev tooling landscape uh probably the thing that you hear the most often is like hard hat versus truffle versus Foundry um and I think there is a tendency to have a little tribalism against each Source but we don't view them as competitors because ultimately our view is you know however you want to build um use the tool that works best for you truffle is not only the Truffle CLI that kind of people grew up and knew with we have a whole Suite of tools and what we believe is if you want to start with hard hat but use truffles um tooling like our debugger or our dashboard we're here to build hard hat compatibility we are working with them ultimately what I say is we are both competing for free users so there's no reason there should be any sort sort of I guess Bad Blood between the two um I'm not going to go over the demos here because we're not a super technical audience so that's kind of the history of truffle um why open source is super important to me um and I think why it's super important to the tooling ecosystem and growing web 3. um just to kind of dive into open source in general um I just want to give a few definitions so open source I think people just kind of throw around but there's actually um kind of a distinction so open source is going to be anyone can copy and modify it it's a free distribution you might hear something like Source available or Source open so that's going to be you can see the code but you can't copy it without a commercial license so that is a little bit more protective and the last piece of a type of like open source type of code is going to be open course if you've heard of that that's like open sourcing your most core products and then closed sourcing maybe more advanced functionality and that is to say Source available open core or doesn't have a place in the ecosystem definitely keeping some code private would be important for like security reasons I think for larger Enterprises but you know when you're selling your software open source do be a little careful how you spin it uh what do you call technical Twitter people will get mad at you um if you misname what your project is so when we dive into open source there are two main types um there's like 80 different licenses but these are the two that most people actually focus on so the first piece is permissive so that's going to be minimal restrictions on usage typically only require that you pull in a copyright file this is really interesting because basically you can take it and then make it your own proprietary software so this is going to be like the MIT license which truffle is I'm not going to tell you to Fork truffle and like uh what do you call it monetize it but if you want to we're going to let you do that that is our MIT license um but anyways the Apache License BSD copy left is kind of the second version of that um so it's the same thing you can take it you can copy it uh it's kind of like a reciprocal process the requirement there is you have to actually also keep it open source so that's going to be something like ethereum mostly the GPL licenses um so yeah that's a brief overview of just like if you don't know what open source is is but let's actually talk about why it's so important and like why I'm here today so why build open source it's kind of like a no-brainer for developers like the first piece I say um enabling to delve uh devs to build as fast as easily as possible like a monetized tool to help you build fats is definitely a huge barrier to entry especially when I'm a student and I have like no money thank goodness truffle is free right um the second piece I think with open source is it provides knowledge as a jumping off point for Innovation so both in software learning from other people's Technologies improving on that but also education so a lot of kind of like educational resources reference projects for example chain link has their own blockchain developer Hub has like full HD apps for people to copy and then change and modify and then build faster and better and the last piece is developers can build according to their own needs so ultimately when something is open source and you have a very specific use case it's great for me as a Dev if I say hey maybe something doesn't make sense for the core devs to release to everybody but I can bring this in and modify it for myself to enable me to build my project um the next piece is kind of on my side as an open source like working on open source tools I think my friend is my friends are always like wait how does truffle make money my answer is like we don't and and that's fine right because I think there is a lot of value for open source projects and businesses as well so there's the idea of like transparency builds trust like we are here to show you what we're doing and what we're doing is not malicious um the other piece is community contributions means the best idea wins um so this is kind of hearkening back to that part where when truffle was starting to focus on how to monetize we lost sight of what was important um and the next piece uh is highly engaged contributors also act as a really great hiring funnel and the last piece is open code enables opportunities for collaboration so again getting back to that piece of when everyone is kind of working collaboratively instead of competitively that's kind of when we win the tooling space um so I interviewed Risha she's the co-founder of push protocol I'm not supposed to read things from slides but I thought this was just like such a sexy quote that she gave um so I'm gonna read it out loud um so it's Mission uh essential to the mission of creating tools that Empower users in web 3 allows us to build a transparency Fosters collaboration and creates a sense of ownership and community and uh beyond that open source gives everyone the right to use tools we build to innovate so fostering Innovation and creativity in this way is how we believe some of the best projects get built and I completely agree with that and that's why I decided to read all of it aloud to you and just to kind of like talk about ethereum as an open source project I think that's just kind of one of the best examples of how that breeds Innovation you know the L1 space is kind of like very competitive maybe they're all just Forks of ethereum not all of them obviously but I think obviously what that's allowed us to do is identify the gaps in ethereum figure out what we need to do to ultimately grow like scalability and all the things that we need to optimize for to build uh I was told not to say onboard the next billion users but I'm gonna say it anyways I see you you're getting mad at me um but yeah okay so open source is important um but it is hard to build so it's hard to build in a few ways so when we talk about contributions um these products are often large and complex so as someone who's just like coming into the space and saying hey I really love truffle as a project how do I start well something might require very deep subject matter expertise I might pick up a ticket and be like oh I fixed it and then you run the test you're like oh I broke 300 tests I have no idea what I'm doing right um the other piece is security I thought this was a really interesting thing that I never really thought about especially with like open source smart contracts that requires security code auditing right um like smart contracts can lock up a lot of money that's not something you just want willy-nilly people um committing and the problem with that is smart contract auditing is very expensive and backlogs are insane another piece actually very common for companies to open source if not open sourcing their code is open sourcing their documentation uh and one way I think the community members have really rallied around this is internationalization you know we're not just an English oriented uh ecosystem but the thing that's I think a really hard problem to solve there is like I don't understand Chinese I don't really know if like all of the things that you're translating is correct right so that's a tough problem too and I think the last piece is like why even contribute I am stressed all the time like I don't have time to contribute to an open source project why I would do that so that's another challenge right how do you encourage community members to do this kind of out of their own good will next piece is feedback um I actually made this meme incorrectly it's supposed to say not all feedback is good feedback uh but it says all good feedback it's good feedback what I'm saying right here is oftentimes with feedback and I think opinions um loudest voices try to win um and that's not necessarily what you're building um when you're catering to the loudest voices you're not necessarily catering to the full community and along that side as well when you get a lot of contributions from a large community there are a lot of diverse and conflicting views and then that creates a little bit of misalignment with the company Vision that's another challenge in open source and the last piece you know talking to others open source projects is like money is the worst thing you know like it is a free project um how do you get funding there's things like grants which are great but again it's something that's not like recurring it's not very sustainable or reliable there's the ability to find Partners but oftentimes that also comes with serving their interests um and then like I said on the Truffle side we did a lot of Creations but once that integration is done who maintains it that's creating extra work that's distracting from kind of our core value um so I just was like a really sad person just now but we're actually going to talk about winning strategies this is a space that can be won and we will win it together first part making contributing uh make contributing easy so um what you should do if you have an open source project is be sure to tag issues as good first issues so when you have people onboarding into your system they know like hey I want to do something simple let me just like filter by goodforce issues and they will be there um the other piece is just like making sure you're supporting them along the way so very clear documentation on how to contribute as well as instituting clear quality control so something is very common is like automatic security scanning for your repos and other kind of automated ways of ensuring code that is committed is up to Quality and up to security and the last piece is just like staying in constant communication like engage with these developers who are I guess contributing they are taking their own free time if they run into roadblocks along their way make sure you're always kind of incubating them in your little um what do you call it hug of love the next piece is like encouraging contributions what are very popular ways to do it so first off like metrics wise with open source contributors there's this thing called The Love score um basically like how do you how much does a developer love your product um and this is measured usually through GitHub issues comments interactions and Discord mentions on Twitter there are a lot of tools out there to help you track that so something like orbit.love if you've heard of it create rewards and incentive structures so truffle offers a git Co-op which is an on-train contribution so basically when you submit a PR you get a pull-up that says oh you're a truffle contributor chain link I know does tester nfts premium swag ultimately like what's really important is making sure that they are part of the community so highlight those people and Elevate them so something we do is like Community calls finding the builders and saying like hey come join us come like chill your project we love that you're building and um this is actually a really good kind of uh what do you call it advice from Yaz that I got is like connecting your repo at every step of your documentation it's like a little offensive but not really like discoverability is probably the key point to people interacting with your project um and the last piece or not the last piece the other piece of like not all good feedback is not all feedback is good feedback so how do you get the good feedback um the first thing I say is like you know developer interviews at any event especially hackathons are really great because they're building in a very short time period and when you want Builders to build easily and build fast they know what counter what problems they are encountering um along those lines things like live feedback tends to be better than form feedback that's not scalable so ultimately like form feedback will enable volume uh the next part is crowdsourcing issues so this is really one of the pluses of Open Source software people can like put all their GitHub issues all their bugs and discussions as well as your Discord so basically identifying like what's the most upvoted what issues are the was commented on what comments are very very common in our Discord it helps you kind of crowdsource that idea of what should we build and the last piece is making sure that feedback is created in a very constructed and concise manner so things you guys have probably heard of is like the EIP something push has instituted as well as a push Improvement protocol so something to consider if you are building an open source project giving people a template to make suggestions for improvements and the last thing I said right here um I can't tell you how to win the funding problem I have not figured it out um but just to kind of give you an idea of existing models charging for premium support hosting Services if you remember from that previous Slide the open core model um so maybe like locking some of your stuff behind the paywall open source projects that I've talked to that are mostly successful are still behind VC funding finding that place where they can actually start to kind of take off on their own Community funding I think is really exciting especially with Git coin now enabling like normies like me to actually start contributing and like paying monetary value and not like necessarily physical mental labor to making sure an open source project stays alive and something that I like haven't had time to actually perk a lot percolate on but I really want to do and if anyone's building it let me know is the dev tooling down and so what I mean by there is specifically focusing on ways different Dev tools can interact with each other to create kind of like a better ecosystem so like I said I think like for example Foundry has someone created a project where you could integrate Foundry testing into your hard hat project like that's amazing like when I get to choose what I want and how to build um ultimately like that's the best developer experience uh so the last piece here is like what can you guys do this is my Battle Cry Like obviously contribute duh I'm gonna say I'm a hypocrite here I don't really contribute outside of working in an open source software um but if you have the capacity do it otherwise Community funding is also an option um Timmy uh I guess like to give you some clarity into like what an open source project looks like within a greater org so specifically let's take like truffle within consensus or maybe like I was talking with chain link and their educational resources within like the greater um I guess company right those aren't Revenue generating how do we demonstrate value and ultimately what that comes down to is the community being loud and proud about the projects you've built demonstrating that hey truffle as a public good is like critical to web 3 success as a whole so if you don't dedicate resources to us the entire industry like hurts from that um so like if you're not like paying or like whatever like uh paying or developing just like Spread Your Love scream on Twitter at me um and the last piece is like I said I really want to get away from this kind of tribalism mindset ultimately I don't want to have tooling sit in a competition kind of mindset it's ultimately competition and cooperation uh creates Co-op petition um to create the best developer experience possible uh so I sped through that just want to give a big thanks to the people that kind of helped me formulate this presentation um there on Twitter here's their information and kind of what they do and that's me if you want to stay connected if you're building on truffle please let me know I would love to kind of like uh what do you call it be loud and proud about you too I have two minutes I talked really fast wow okay do we have any questions okay if not I'm gonna go catch a flight and leave East Denver foreign
Automatic transcript — names and jargon may be misspelled.