Anthony's Roads to Open Source - The Set Theory

Rate this content
Bookmark

Lessons I learned on my journey to working full time on open source, as well as tips for thinking and making open source projects more successful.

This talk has been presented at React Summit 2024, check out the latest edition of this React Conference.

FAQ

Anthony Fu is the creator of Vitesse, LightDate, Unocss, and a coordinating member of Vite, Vue, and Nuxt. He works at Nuxt Labs on the framework team.

Anthony Fu has created Vitesse, LightDate, and Unocss. He also maintains several other projects and contributes to Vite, Vue, and Nuxt.

Vitesse is a unique testing framework created by Anthony Fu.

Anthony Fu focuses on front-end frameworks, particularly within the Vue community, and works on multiple open source projects.

Anthony Fu's first open source project was called VS Code-View-I18-LA, a VS Code extension for Vue developers to handle internationalization.

Anthony Fu suggests focusing on the quality of code, documentation, community engagement, and marketing. He also emphasizes making projects more universal to reach a larger audience.

You can expand the user base by making the project more universal, decoupling it from specific frameworks, and supporting a wider range of frameworks and tools.

Set theory in open source projects involves two concepts: Set Intersection, which means not limiting the project to a niche audience, and Set Union, which means making underlying tools universal to expand the community and benefit the entire ecosystem.

Nitrome is a universal server builder created to allow frameworks like Nuxt to deploy to various platforms without changing configurations. It supports multiple frameworks and server environments.

Unpluggin is a unified plugin interface for both Webpack and Vite, created to save effort in supporting multiple build tools. It supports additional tools like Rollup, ESView, and more.

Anthony Fu
Anthony Fu
37 min
14 Jun, 2024

Comments

Sign in or register to post your comment.

Video Summary and Transcription

Open source projects can be successful by finding a large intersection of target users. Making extensions universal can lead to increased popularity and collaboration. Collaboration across ecosystems is encouraged to create more maintainable and extendable architectures. Financial support is necessary for open source projects to be sustainable. Contributing to open source can be done by identifying areas for improvement and actively participating in GitHub workflows.

1. Introduction to Open Source

Short description:

I'm Anthony Fu, creator of Vitesse, LightDate, Unocss, coordinating member of Vite, Vue, and Nuxt. Open source is fun and rewarding. There are many factors to make a project successful. I will share my experience and ideas in a series of talks.

And it's a great honor to be here and thanks for having me. And yeah, just for me to introduce myself a little bit, I guess I'm a kind of new face to React. So my name is Anthony Fu and I'm the creator of Vitesse, LightDate, Unocss, and also the coordinating member of Vite, Vue, and Nuxt. I also maintain a few projects and I'm currently working at Nuxt lab on the framework team, so you can also find me with the links below.

And as you can see, at front-end level, like a front-end framework level, I'm pretty much from the Vue community. And this is actually my second time attending a React event. And this event is awesome and really make me feel home because here we have the React with a color of Vue. Yeah. So thanks everyone to make this event possible and it's my great honor to speak and share my perspective with you here. So as I don't really know a lot about React to talk about, so here's the deal. So I will talk about something you might find interesting outside of React and you're gonna teach me how to properly use use-effect hooks later on, all right?

Okay, so as you can see, I'm working on multiple open source and also create a few projects that you might already using, like for example, Vitesse, a unique testing framework. And as someone who has been working on open source for a while and made a living, I have to say that open source is so much fun and rewarding. And I believe that many of you want to contribute to open source already doing so. So however, there's like so many factors that to say if an open source project becomes popular or successful depends on how you define it. Like for example, the quality of code, the documentations, the communities, the marketing and so on. All of them are important and they're related to each other and there isn't a really like a golden rule to say how you can make an open source project successful. And so here, I'd like to share some of my experience and ideas of creating and maintaining open source project and combining with some observation I have learned from the community. So hope it can give you some, hope it can help you to start your own open source journey or find some new ideas to improve your existing project.

So open source is quite a big topic and I couldn't really cover everything in one talk. So this I'm trying to break down into like talk about different aspect of open source in each talk and make them a series. So this is the first one and this is the first part and talk is the set series. I know it might sound a bit random and you might wonder what that means and I will try to explain. So, let's say we already having an open source project or planning to create one. And like to be a little bit practical, say we want to gain us a certain amount of users, a certain amount of adoptions or we just want people to enjoy using it and to enjoy our hard work. So, one thing to consider is how we're picturing our target users. Like, for example, is my tool for end users or for developers or is that for view developers or for react, etc? So we know that's a fact, that's amongst all of our target users. Only a portion of them will become our actual users and also depends on a lot of things, right? And depends how you're marketing it. And in order to get more users to our project, we could try to convert more potential users to the actual users, like maybe by doing more marketing or polishing it. In that case, the amount of target users you have, the bigger circles, actually becomes the upper limit of how many actual users you could possibly have. And on the other hand, we can also try to find a way to expand our target users to include more people.

2. Target Users and Set Intersections

Short description:

The first example is my first open source project called VS Code-View-I18-LA. It helps view developers with internationalization in VS Code. The project's target users are the intersection of Vue developers, VS Code users, and those needing internationalization. The project's success depends on finding a large intersection among these sets.

So naturally, you will also have a more converted actual users from it. So under these ideas, let's take a look at some examples of how we can do that. The first example I'm going to show you is actually my first open source project back in 2019 and the repo is called VS Code-View-I18-LA. It's a VS Code extension that helps view developers to deal with I18, with so-called internationalization, like preview the translation in your code or manage the keys for each language, etc. And here's a screenshot of the extension that shows you the basic feature and hopefully can give you a basic idea of what it is. And the extension is not the main topic today. But at the beginning of this project, I'm eager to kind of see that I want to make this project popular, as I really want to prove myself in open source. I'm super happy when I got the first 100 and 200 stars. And then I received an appreciation from the community. But after that, you kind of started to seek for higher goals. Back then I was dreaming to work in full-time open source, like for example, like even you, the creator of Vue. So my ambition was to create something as popular as Vue. And then suddenly saw the, like, there is a fundamental difference between my project and Vue. And there actually directly reflects on the project name. So you look into the name, it's actually quite long and composed by multiple words, while that's Vue, it's only Vue, right? So let's break down it part by part. So first, that is a VS Code extension. So that basically means that only VS Code user will ever use this extension. So we can draw a circle to indicating the VS Code users here. And then we have Vue, because it's built on top of my need, I use Vue, so we could also have a Vue, like a Vue user circle. And then finally, it's a helper for internationalization. That means it's not all Vue users will ever try this extension, because not every app needs internationalization. So we can draw a circle for I18 as well. And then we find out that our target users are actually inside intersections of those three sets, meaning that only Vue developers who is working on editing app that happen to choose VS Code as their editors would ever try our extensions. This sounds quite limited. And this is, like, a phenomena called the set intersections. So before diving into the solution, let's also look into this graph to see what the others' intersection means. And then we soon realized that the intersection between VS Code and Vue are actually Vola's or Vita's at that time, is the VS Code IDE support for Vue. So as a result, we knew that both Vita and Vola has a huge user base, because both Vue and VS Code have huge enough community to make the intersection large enough. Similarly, we also had the intersection between Vue and I18, a project like Vue-I18-Ally, which is super popular. And then when it comes to the intersection between VS Code and I18, we see there seems to be not such a project at that time.

QnA

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

How to Build Your Own Open Source Project
React Advanced Conference 2022React Advanced Conference 2022
16 min
How to Build Your Own Open Source Project
Hello my friend, in this talk, I wanna share with you how to build your own open source project. Building an open source software project can be challenging. I receive a lot of things randomly in a day, like thank you messages for making my life easier, which motivates me. To choose an open source project to work on, pick one you use every day. Your software is being used when people report issues and send pull requests.
Lessons from Maintaining TypeScript Libraries
TypeScript Congress 2022TypeScript Congress 2022
30 min
Lessons from Maintaining TypeScript Libraries
Top Content
Mark Erickson, a Senior Frontend Engineer at Replay, discusses JavaScript libraries and their support for TypeScript, including migration, versioning, and debugging. He also explores the challenges of supporting multiple TypeScript versions and designing APIs for use with TypeScript. Additionally, he shares advanced Redux type tricks and insights into maintaining a TypeScript library. The poll results reveal the widespread usage of TypeScript among developers, with many gradually migrating their codebases. Lastly, he provides tips for upgrading TypeScript and verifying functionality.
Nuxt 3 Modules and Open-Source
Vue.js London 2023Vue.js London 2023
31 min
Nuxt 3 Modules and Open-Source
Nuxt.js modules are a central part of Nuxt and have had 14 million downloads. Creating Nuxt modules is easy with Nuxt 3. Modules can provide assets, CSS injection, plugins, and auto imports. Learning Nuxt modules gives a deeper understanding of Nuxt and extends its functionalities. The Nuxt community is friendly to newcomers and encourages module creation.
Break the Race: Easy Race Condition Detection for React
React Day Berlin 2023React Day Berlin 2023
31 min
Break the Race: Easy Race Condition Detection for React
Watch video: Break the Race: Easy Race Condition Detection for React
Race conditions can be complex to debug and reproduce, causing frustration for users. The speaker discusses examples of race conditions and ways to fix and avoid them. They demonstrate an example of an auto-completion field in React and how to handle race conditions in API calls. The speaker introduces the FastCheck framework for property-based testing to address race conditions and improve tests. Randomizing inputs and outputs can help uncover bugs specific to certain scenarios. The speaker also discusses mitigating race conditions in React and handling test overhead and reproducibility.
Making an Open Source Library Financially Sustainable
React Day Berlin 2022React Day Berlin 2022
8 min
Making an Open Source Library Financially Sustainable
The Talk discusses how an open source library, ReactFlow, was made financially sustainable. Various methods were tried, including Github sponsoring and cross financing, but a price tag was eventually added to the library. Building trust and clear expectations through ongoing support and communication with subscribers was key to gaining financial support. The issue of people not knowing how much to contribute was addressed by providing a clear pricing structure. Additional features like one-on-one support and Pro examples were added to combat the paradox of choice and encourage financial support.
The State of XState
React Finland 2021React Finland 2021
18 min
The State of XState
Over the past few years, state machines, statecharts, and the actor model have proven to be viable concepts for building complex application logic in a clear, visual way with XState. In this talk, we'll take a peek into the future of XState, including new features in the next version, and new tools and services that will make it even easier to create and collaborate on state machines.

Workshops on related topic

Node.js: Landing your first Open Source contribution & how the Node.js project works
Node Congress 2023Node Congress 2023
85 min
Node.js: Landing your first Open Source contribution & how the Node.js project works
Workshop
 Claudio Wunder
Claudio Wunder
This workshop aims to give you an introductory module on the general aspects of Open Source. Follow Claudio Wunder from the OpenJS Foundation to guide you on how the governance model of Node.js work, how high-level decisions are made, and how to land your very first contribution. At the end of the workshop, you'll have a general understanding of all the kinds of work that the Node.js project does (From Bug triage to deciding the Next-10 years of Node.js) and how you can be part of the bigger picture of the JavaScript ecosystem.

The following technologies and soft skills might be needed):
  - Basic understanding of Git & GitHub interface
  - Professional/Intermediate English knowledge for communication and for allowing you to contribute to the Node.js org (As all contributions require communication within GitHub Issues/PRs)
  - The workshop requires you to have a computer (Otherwise, it becomes difficult to collaborate, but tablets are also OK) with an IDE setup, and we recommend VS Code and we recommend the GitHub Pull Requests & Issues Extension for collaborating with Issues and Pull Requests straight from the IDE.

The following themes will be covered during the workshop:
- A recap of some of GitHub UI features, such as GitHub projects and GitHub Issues
- We will cover the basics of Open Source and go through Open Source Guide
- We will recap Markdown
- We will cover Open Source governance and how the Node.js project works and talk about the OpenJS Foundation
  - Including all the ways one might contribute to the Node.js project and how their contributions can be valued
- During this Workshop, we will cover Issues from the nodejs/nodejs.dev as most of them are entry-level and do not require C++ or deep technical knowledge of Node.js.
  - Having that said, we still recommend enthusiast attendees that want to challenge themselves to "Good First Issues" from the nodejs/node (core repository) if they wish.
  - We're going to allow each attendee to choose an issue or to sit together with other attendees and tackle issues together with Pair Programming through VS Code Live Share feature
    - We can also do Zoom breakrooms for people that want to collaborate together
  - Claudio will be there to give support to all attendees and, of course, answer any questions regarding Issues and technical challenges they might face
  - The technologies used within nodejs/nodejs.dev are React/JSX, Markdown, MDX and Gatsby. (No need any knowledge of Gatsby, as most of the issues are platform agnostic)
- By the end of the Workshop, we'll collect all (make a list) the contributors who successfully opened a Pull Request (even if it's a draft) and recognise their participation on Social media.