|
| 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. |
0 commit comments