Why I voted for Servo's AI policy change despite I don't use those tools

Wu Yu Wei published on
6 min, 1192 words

Before we start, I want to claim this post is written without any usage of AI tools, even without Grammarly which I've added the plugin into Firefox way before AI mania and usually use it to fix my grammar. With Servo's recent controversial AI policy update, I would like to share my two cents on it. However, it's not going to be all about this policy only and will be a bit off topic, so I suppose it's better to publish on my own blog.

I am one of the Servo TSC members. Before this, I tried to casually contribute to various browsers and projects related to browser ecosystems. Servo became the browser engine I would like to push the most, and it came a long way for me to be able to steadily contribute to it. To this day, the commits I pushed never use any AI tools. I don't even use Github Copilot which is a very popular one and can be integrated to your IDE pretty easily. Most of my work is dealing with embedding or rendering side of Servo engine. My experience when testing with Copilot was terrible. All code suggestions to platform stuff like Objc runtime, COM, and even just some unix sockects are either plain wrong, or seem to work but have deep flaws that require deep know-how to identify.

It came to my conclusion that LSP is still the best assist tools to help me code. Servo book has "Editor Support" page to help you add rust-analyser support when you develop Servo. I know it's still not perfect, and my friend also encountered some pitfall. But we are adding the support as much as we can.

However, I still voted for the change. The closest statement to describe my stand point is Ladybird's contributing guide. I won't allow gibberish if I need to deal with the issue or feature. But if it could help you and you can take the responsibility to meet the standard we set, I'm happy whatever tools that assist you. In Servo's script component, the common standard is to keep the WPT coverage and pass more scores. And this is what policy update mentioned: someone experimented with WritableStream and their experience is positive. However, we already set the restriction that any AI tools are not allowed. And this was how the debate among TSC members began and the proposal Servo published this week.

I think the biggest mistake and lesson we should learn from is this kind of topic should open to public in the first place. We didn't gather the opinion from community to discuss the solution. I believe some members who vote for the change is also similar to my stand. But the proposal appeals to no one despite it's a compromise already. Servo is a very unique browser engine shared by the community. It's not dictated by any corporation or BDFL. This is why Servo is the project I wish to push the most and hope it could be the real open-sourced browser that offers freedom. I'm confident this topic will be resolved by the community in the end, whether we keep the restriction or not.

With the topic we have recently, I would like to take this chance to discuss the code contributors ourselves. I believe one of the huge factors that lead to this topic today is because of how we contribute. Like I mentioned before, Servo isn't controlled by a single person or corporation. This means contributors are responsible for their own finance. Servo's donations are primarily used for operation costs. While some people are hired by certain companies to contribute, others need to find their way to sustain.

Around a year ago, I tried to put my best effort together with the help of several people from Servo and Tauri to see if we can make practical usage for Servo and get the stable funding options. Versotile is the organization we formed under Commons Conservancy. For now, we only applied NGI grants because we believe this aligns with our vision the most. However, we also need to make sure the task is delivered the actually get the grants with a given deadline.

One of the blockers from the tasks we want to do is to remove the patch of jsstreams feature. The reason of the patch is because upstream has removed whole implementation completely, this leaded to worry about annual updating of spidermonkey ESR version and we expected it to be more and more difficult to update each year. So I tried to find the people can help me rewrite ReadableStream in Servo. The scope of stream spec is enormous, even ReadableStream itself only is huge. Fortunately, we managed to find the people and resolved the issue. And then there's the follow-up issue to WritableStream which resulted into the controversy policy change I saw.

What worries me the most is the potential of losing major contributors. If you contributed to Servo before, you should understand how difficult it is to land the features you wish to happen. Especially when there are components like script and layout requiring deep know-how to understand how it actually works. There are PRs with lots of comment back and forth and still got stuck for months because no one entirely sure how certain types work. This is why I voted for the policy change despite I'm not fond of AI tools either. In fact, I stated it clearly Versotile has nothing to do with AI when we were applying for grants. But I also hope to see other contributors can receive the help they need when contributing to the project.

Sorry if this sounds like a rant on latter half of the article. I'm confident the feedback from the community will take a huge role on the policy change. But in the meantime, I want to let people understand the difficulty of smaller contributors that wish to devote to the project in the long run. No matter what the change will be, I wish the follow-up can focus on helping contributors next. I hope people can keep sponsoring Servo , and if possible, also sponsoring us. If we have more stable funding option, I believe we can deliver more features to Servo that can meet community's needs and expectations. Welcome to send me a mail, if you wish to discuss in details.