Svelte Community Architecture

Site: https://svelte.dev

Discord: https://svelte.dev/chat

Git: https://github.com/sveltejs/svelte

Introduction

History/Purpose/Goals

Svelte is a javascript compiler that turns Svelte syntax into frontend javascript. It aims to be substantially smaller and more efficient than other frontend libraries like React or Vue, achieving this through removing a virtual DOM. It has consistently been named the most loved framework in the Stack Overflow developer survey.

First Commit/Most Recent Commit

The first published version of Svelte was released on the 29th of November 2016. Establishing a first full commit date is difficult because the project derives from RactiveJS, and the split date is unclear. The most recent merge was on the 24th of February.

Leadership and Team Structure

Lead Developer

Rich Harris, the original author of Svelte, is the Benevolent Dictator for Life. He started the project while working at the Guardian but now works on the project full-time at Vercel. The project maintainers meet monthly to discuss project direction, but this meeting is closed to the public.

Core Team

The core team has remained highly stable over the history of the project. Rich Harris, the project’s founder, remains its most significant contributor. Some other core contributors, like Alan Faubert, Tan Li Hau, Ben McCann, and Simon Holthausen, have also participated in the project for an extended period.

Unique Knowledge

Rich Harris has unique knowledge. He started the project and remains highly engaged in the direction and development. The project would be unstable if the top 20% of contributors died. It would likely require intervention from a sponsoring company (likely Vercel) to dedicate development resources for the project to continue.

Commit Access

Anyone can file a pull request to have it merged into the project. It must undergo checks from Vercel and be approved by a Svelte maintainer. There are 27 maintainers. All pull requests, including from maintainers, must be approved by at least one other maintainer before being accepted into the core codebase.

Quality Control and Bug Repair

The 27 maintainers take responsibility for the quality control of the project. Anyone can fix bugs by issuing a pull request tied to an issue. However, the maintainers are more likely to be directly involved in the fix for significant bugs.

Front End/Back End

As a compiler, Svelte only consists of a backend. Thus, everyone is a backend developer. The public-facing websites are run under the same structure as the repository itself.

Stability

Calloway Coefficient of Fail

The project has a Calloway score of 40.

+10: Does not build with GNU Make

+10: No mailing list

+10: No per-file licensing

+10: Fork of RactiveJS

Major Bugs

The code is generally well-designed and well-written. There have not been any significant bugs during the development process. They are still in a feature add phase, focused primarily on the SvelteKit framework.

Based on data in Cauldron, participation is highly volatile, with massive swings in contributions week-by-weekThis is attributable to multiple factors. First, most of the contributors are participating on a volunteer basis. Secondly, multiple projects in the Svelte ecosystem are under development right now. There was a noticeable drop in participation shortly before the SvelteKit framework transitioned from beta to stable, followed by a recent uptick in contributions to the core library. This suggests that most of the energy during this period focused on getting SvelteKit to a stable state rather than updating the core compiler.

BDFL Git-by-a-Bus

If Rich could no longer contribute to the project, it would suffer. The maintainers, and possibly a core sponsor like Vercel, would have to work on returning the project to a stable development pattern. Svelte is used by many companies like 1Password, Alaska Airlines, IBM, Block, and Rakuten, so stability is essential. Thus, there would be much will to get the project back on track, but it would also be much work.

Core 20% Git-by-a-Bus

If the core 20% of the team could not contribute, it would suffer. The top 27 contributors have a large amount of control and domain knowledge. However, there would be a strong incentive from companies to get the project back on track. Vercel, or another sponsor, would likely have to take the project over.

Onboarding and Support

Onboarding Process

There is official onboarding for both Svelte and SvelteKit. There is a simple “Introduction to Svelte” guided onboarding activity and documentation. All guided introductions include start code, line-by-line instructions (with a “Show Me” button), and the result (iFrame, JS output, CSS output). The community also makes many REPLs with more advanced techniques or detailed instructions than the core documentation.

Documentation

The onboarding process is included in the documentation. It is extensive and understandable. It includes code samples and a live testing environment.

Contributing

The project welcomes new contributors. The CONTRIBUTING.md document says that “Contributions are very welcome. If you think you need help planning your contribution, please ping us on Discord at svelte.dev/chat and let us know you are looking for a bit of help.” The Discord community is vibrant and supportive, so someone would likely get assistance there.

Code of Conduct/CLA

There is a CLA, but it is crude: “By contributing to Svelte, you agree that your contributions will be licensed under its MIT license.” (https://github.com/sveltejs/svelte/blob/master/CONTRIBUTING.md) Notably, it licenses the code committed under an irrevocable license rather than having copyright ownership transferred. Notably, the project is under the Open Collective and does not have an independent nonprofit, so copyright transfer is not logistically feasible. While it should not matter, there is some degree of risk due to this structure.

There is a code of conduct (https://github.com/sveltejs/community/blob/main/CODE_OF_CONDUCT.md) based on the Contributor Covenant and the Mozilla Code of Conduct Enforcement Ladder.

Summing Up

Decision-Making Structure

The decision-making structure is consensus-building. They look extensively for user feedback and try to guide based on community sentiment, but ultimately decisions, including project direction, are made in private meetings.

Federation

This project is a federation. It is more structured than a group and less than a stadium. It is highly welcoming to new contributors and lacks formal corporate control, but there are still maintainers who take responsibility for its success.

Should Someone Contribute?

This is a fantastic project for contributions from novices and pros. The community is very welcoming, and many small changes are needed to the project. The Discord server has lots of helpful information for people who want to get involved. Similarly, there is a lot of intensive and unique work in the project that few projects provide, given how rare javascript compilers are. Given how complex some components of the project are, novices may want to avoid some of the compiler internals. Furthermore, additional features may be better served as a library on top of the framework rather than in the compiler itself.

Cauldron Analysis

We used Cauldron to look at commit and author trends. We cross-referenced the list of maintainers with the list of active submitters and found a somewhat substantial overlap. This suggests that many people contribute, but significant contributors account for much of the work. The commit trends are less stable than our stadium report (ASP.NET Core) but are within reason for a federation.

Creative Commons License
Select components of this work are licensed under a Creative Commons Attribution 4.0 International License.