Skip to content

Commit 49d66a1

Browse files
committed
added new contribute blogpost
1 parent 94f67b3 commit 49d66a1

4 files changed

Lines changed: 190 additions & 0 deletions

File tree

Lines changed: 180 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,180 @@
1+
---
2+
title: "Join the crew"
3+
metatitle: "Help us build an independent browser engine"
4+
description: "Gosub is looking for developers, browser specialists, security researchers, designers, writers, and others who want to help build an independent browser engine."
5+
date: 2026-07-28
6+
author: "Joshua Thijssen"
7+
---
8+
9+
Building a browser engine is a large undertaking.
10+
11+
It requires much more than implementing an HTML parser or drawing a page on the screen. A modern browser engine combines networking, parsing, styling, layout, rendering, scripting, accessibility, security, process isolation, developer tooling, documentation, and many other areas.
12+
13+
We cannot build all of that alone.
14+
15+
Gosub is an open-source project, and we are looking for people who want to help us build an independent browser engine.
16+
17+
## Who are we looking for?
18+
19+
### Experienced developers
20+
21+
We are looking for developers who are comfortable working on complex systems and taking ownership of a problem.
22+
23+
Experience with Rust is useful, but browser experience is not required. Knowledge of graphics, networking, compilers, operating systems, security, language runtimes, or user-interface development can all be valuable.
24+
25+
Some of the areas we work on include:
26+
27+
* HTML and CSS parsing
28+
* Style calculation and layout
29+
* Graphics and rendering
30+
* Networking and protocols
31+
* JavaScript integration
32+
* Browser process architecture
33+
* Sandboxing and process isolation
34+
* Developer tools
35+
* Accessibility
36+
* Testing and web-platform compatibility
37+
38+
You do not need to understand the entire engine. Most contributors work on one particular part of the system.
39+
40+
### New and aspiring developers
41+
42+
You do not need to be a browser expert before contributing to Gosub.
43+
44+
However, building a browser engine involves difficult and sometimes poorly documented problems. Our ability to provide one-to-one mentoring is limited, so contributors should be comfortable researching problems, reading existing code, asking specific questions, and working independently.
45+
46+
We want to create suitable starter tasks and documentation for people who are still learning. These tasks should be meaningful without requiring a detailed understanding of the complete browser engine.
47+
48+
As the project grows, we hope to provide a clearer path from small introductory tasks to larger areas of responsibility.
49+
50+
### Browser specialists
51+
52+
People with experience in browsers, web standards, rendering engines, or web-platform tests can help us make better architectural decisions and avoid mistakes that have already been solved elsewhere.
53+
54+
You do not necessarily need to write code. Reviewing designs, explaining edge cases, identifying missing standards, or participating in technical discussions can be just as useful.
55+
56+
### Security researchers
57+
58+
A browser continuously processes hostile and untrusted input.
59+
60+
We need people who can help us reason about:
61+
62+
* Process isolation
63+
* Sandboxing
64+
* IPC boundaries
65+
* Origin and site isolation
66+
* Cookie and credential handling
67+
* Network security
68+
* Parser vulnerabilities
69+
* Memory and resource limits
70+
* Threat modelling
71+
* Fuzzing and security testing
72+
73+
Security should not be something added after the engine works. It must influence the architecture from the beginning.
74+
75+
### Designers and user-experience specialists
76+
77+
An engine eventually needs a usable browser around it.
78+
79+
We need help thinking about browser interfaces, developer tools, accessibility, error pages, settings, debugging interfaces, and the many small interactions that make a browser pleasant to use.
80+
81+
### Writers, educators, and technical communicators
82+
83+
Browser engines are complicated, and explaining them clearly is valuable.
84+
85+
You can help by:
86+
87+
* Improving documentation
88+
* Writing tutorials and technical articles
89+
* Explaining architectural decisions
90+
* Creating diagrams
91+
* Recording demonstrations
92+
* Helping new contributors find their way around the project
93+
94+
### Community, marketing, and social media
95+
96+
A project cannot attract contributors, users, or funding when nobody knows it exists.
97+
98+
We need people who can help spread the word about Gosub through social media, conferences, meetups, articles, videos, podcasts, and conversations with other open-source communities.
99+
100+
This is not traditional product marketing. It is about explaining why independent browser engines matter, showing what we are building, and helping the right people discover the project.
101+
102+
### Project and community organisers
103+
104+
There is also important work outside the codebase.
105+
106+
We need help organising discussions, coordinating contributors, preparing events, maintaining community spaces, finding funding opportunities, and building relationships with other organisations.
107+
108+
## Focus groups
109+
110+
Not everybody needs to follow every part of the project.
111+
112+
We want to establish small focus groups around specific areas of the browser engine. These groups can investigate problems, review designs, coordinate work, and develop longer-term plans for their area.
113+
114+
Possible focus groups include:
115+
116+
### Security and process isolation
117+
118+
Threat modelling, sandboxing, renderer isolation, IPC design, capabilities, sensitive data, and reducing the impact of compromised components.
119+
120+
### Rendering and graphics
121+
122+
Layout, painting, compositing, fonts, GPU acceleration, rendering backends, and visual correctness.
123+
124+
### HTML and CSS
125+
126+
Parsing, standards compliance, DOM behaviour, style calculation, selectors, and web-platform tests.
127+
128+
### Networking
129+
130+
HTTP, caching, cookies, certificates, proxies, DNS, content decoding, privacy, and network-process architecture.
131+
132+
### Scripting
133+
134+
JavaScript integration, event loops, DOM bindings, Web APIs, workers, and communication between the scripting environment and the rest of the engine.
135+
136+
### Testing and compatibility
137+
138+
Web-platform tests, regression testing, fuzzing, screenshot comparison, interoperability, performance testing, and test infrastructure.
139+
140+
### Community and outreach
141+
142+
Documentation, articles, talks, contributor onboarding, social media, demonstrations, and relationships with other projects.
143+
144+
These groups do not need to be formal committees. They can begin as small groups of interested people meeting periodically to discuss one area and decide what should happen next.
145+
146+
## How you can contribute
147+
148+
There are several ways to get involved:
149+
150+
* Work on an existing issue
151+
* Investigate a browser-engine problem
152+
* Review a design or pull request
153+
* Improve tests or documentation
154+
* Join a focus group
155+
* Propose an experiment
156+
* Help explain and promote the project
157+
* Help organise the community
158+
* Tell us what experience you have and where you would like to contribute
159+
160+
You do not need to make a large commitment immediately. A useful review, experiment, bug report, article, or technical discussion can already make a difference.
161+
162+
## Finding the right place
163+
164+
When introducing yourself, tell us a little about:
165+
166+
* Your background and interests
167+
* The areas of Gosub that interest you
168+
* Whether you want to write code, research, review, document, organise, or promote
169+
* How much time you roughly expect to have
170+
* Whether you are looking for a starter task or want to take ownership of a larger area
171+
172+
We can then help find a part of the project that fits your experience and interests.
173+
174+
## Join the crew
175+
176+
Building an independent browser engine is ambitious, but that is also what makes it interesting.
177+
178+
Whether you are an experienced systems developer, a browser specialist, a security researcher, a designer, a writer, or someone who can help build the community around Gosub, there is a place where your knowledge can make the project stronger.
179+
180+
Come and talk to us on [GitHub](https://github.com/gosub-io/gosub-engine) or in our [Zulip chat](https://chat.developer.gosub.io), meet the people already working on Gosub, and help us decide what the next part of the engine should look like.

content/contribute.html

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,10 @@ <h2>Where help is needed most</h2>
2828
<li><strong>Code, testing, and bug reports</strong> - the engine itself always needs hands. Check the <a href="/status/">status page</a> for components in active development.</li>
2929
</ul>
3030

31+
<h2>Who we're looking for</h2>
32+
<p>Building a browser engine takes far more than writing a parser. We're looking for experienced developers, new and aspiring developers, browser specialists, security researchers, designers, writers, and people who can help organise and promote the project. You don't need browser experience, and you don't need to understand the entire engine - most contributors work on one particular part of the system.</p>
33+
<p>We also want to establish small focus groups around specific areas of the engine, such as security and process isolation, rendering and graphics, networking, and scripting. Read the full story in our blog post <a href="/blog/2026-07-28-join-the-crew/">Join the crew</a>.</p>
34+
3135
<h2>Where to find us</h2>
3236
<p>Development happens in the open on <a href="https://github.com/gosub-io/gosub-engine">GitHub</a>, and the developers collaborate day-to-day in our <a href="https://chat.developer.gosub.io">Zulip chat</a>. Drop in, say hello, and tell us what you'd like to work on - we'll help you find a good starting point.</p>
3337
</div>

dive.css

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ body.dive-inner .abyss .btn:hover { background: #1d4356; }
7777

7878
body.dive-inner .prose { color: #2c4d5e; }
7979
body.dive-inner .prose h2 { color: var(--ink-deep); }
80+
body.dive-inner .prose h3 { color: var(--ink-deep); }
8081
body.dive-inner .prose a { color: var(--accent-light); }
8182
body.dive-inner .prose strong { color: var(--ink-deep); }
8283
body.dive-inner .prose li::marker { color: var(--accent-light); }
@@ -286,6 +287,7 @@ section .zone-intro { max-width: 62ch; margin-bottom: 18px; }
286287
.zone-light .arrow-link { color: var(--accent-light); }
287288
.zone-light .prose { color: #2c4d5e; }
288289
.zone-light .prose h2 { color: var(--ink-deep); }
290+
.zone-light .prose h3 { color: var(--ink-deep); }
289291
.zone-light .prose a { color: var(--accent-light); }
290292
.zone-light .prose strong { color: var(--ink-deep); }
291293
.zone-light .prose li::marker { color: var(--accent-light); }
@@ -346,6 +348,7 @@ section .zone-intro { max-width: 62ch; margin-bottom: 18px; }
346348
.prose { max-width: 68ch; color: var(--deep-soft); }
347349
.prose h2 { color: var(--deep-text); font-size: 1.5rem; margin: 48px 0 14px; }
348350
.prose h2:first-child { margin-top: 0; }
351+
.prose h3 { color: var(--deep-text); font-size: 1.15rem; margin: 32px 0 10px; }
349352
.prose p { margin-bottom: 16px; }
350353
.prose ul { margin: 0 0 16px 22px; }
351354
.prose li { margin-bottom: 10px; }

static/dive.css

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ body.dive-inner .abyss .btn:hover { background: #1d4356; }
7777

7878
body.dive-inner .prose { color: #2c4d5e; }
7979
body.dive-inner .prose h2 { color: var(--ink-deep); }
80+
body.dive-inner .prose h3 { color: var(--ink-deep); }
8081
body.dive-inner .prose a { color: var(--accent-light); }
8182
body.dive-inner .prose strong { color: var(--ink-deep); }
8283
body.dive-inner .prose li::marker { color: var(--accent-light); }
@@ -286,6 +287,7 @@ section .zone-intro { max-width: 62ch; margin-bottom: 18px; }
286287
.zone-light .arrow-link { color: var(--accent-light); }
287288
.zone-light .prose { color: #2c4d5e; }
288289
.zone-light .prose h2 { color: var(--ink-deep); }
290+
.zone-light .prose h3 { color: var(--ink-deep); }
289291
.zone-light .prose a { color: var(--accent-light); }
290292
.zone-light .prose strong { color: var(--ink-deep); }
291293
.zone-light .prose li::marker { color: var(--accent-light); }
@@ -346,6 +348,7 @@ section .zone-intro { max-width: 62ch; margin-bottom: 18px; }
346348
.prose { max-width: 68ch; color: var(--deep-soft); }
347349
.prose h2 { color: var(--deep-text); font-size: 1.5rem; margin: 48px 0 14px; }
348350
.prose h2:first-child { margin-top: 0; }
351+
.prose h3 { color: var(--deep-text); font-size: 1.15rem; margin: 32px 0 10px; }
349352
.prose p { margin-bottom: 16px; }
350353
.prose ul { margin: 0 0 16px 22px; }
351354
.prose li { margin-bottom: 10px; }

0 commit comments

Comments
 (0)