OnlyDust sat on top of GitHub and matched developers with open source projects that wanted more contributors. Developers found issues to work on and submitted code for maintainers to review. Accepted contributions built up a public record of their work. Foundations and companies paid OnlyDust to bring contributors into their open source communities.

Paco Villetard, one of its founders, got in touch in March 2025 with what he called urgent design problems. Its engineers each owned a feature and shipped every week, without a designer to bring those features together. He liked the speed, and not what two months of it had done to the product: too many menus, no hierarchy, a poor mobile experience. We began with a two-week trial and worked together through early May. The engineers built what we drew while we were still drawing it.

OnlyDust's Discover page: a featured project, starter projects, languages, categories, articles and collections of projects

Contributors were ready before the projects were

New developers arrived on recommendations, then struggled to choose a project. The filterable list assumed they knew what they were looking for.

Paco called the deeper problem momentum. A developer would open a project and find no issues they could start on, while a maintainer's good first issue sat untouched. Once a month, ODHack lined the two sides up: participating projects wrote good first issues in advance and made themselves available for ten days. Newcomers could arrive knowing the projects were ready for them.

In our second call I asked who a good first issue was for. A junior? A senior who's new to the platform? It depends on the project, Paco said. A good first issue is well documented and sits apart from the roadmap, so a newcomer can finish it without knowing the whole codebase. Some are hard, which made matching people to issues automatically difficult.

a good first issue can be hard. it just can't depend on everything else

We agreed to focus on a developer's first merged pull request: the point at which a maintainer accepted their code into a project.

Paco wanted contributors who'd stay long enough to take responsibility for part of a codebase. That ruled out a directory of isolated tasks or paid bounties. Discovery would start from projects, with the issues inside them. And it had to work for projects that had never heard of OnlyDust: applying posts a comment on the GitHub issue, and ordinary GitHub comments come back as applications, so a maintainer sees one list either way. That connection was already part of OnlyDust. Our discovery work had to lead into it without asking a maintainer to adopt a new tool first.

A working board: the app as it was, the user types, and the first rough mocks of a new Discover page
The working board from the first week, with the first rough mocks.

Make the first contribution easy to find

We gave starter projects a shelf near the top of Discover and starter issues a band of their own on each project page. A developer could understand the project, then find a bounded way to join it, before reaching the full backlog. The project remained the thing they were choosing to contribute to.

A project page's starter issues, in a carousel above the full list of issues
a first contribution sits above the full backlog

In that same call I floated levels: new developers could only take level one issues, and unlocked harder ones after enough merged pull requests. Paco had thought about it and never tried it, so we drew it, then left it as an exploration. The unresolved problem was assigning the levels: an issue could be independent enough for a newcomer and still require considerable experience. A universal ladder would need to account for those differences between projects before we could rely on it to restrict access.

A rough concept of issue levels: starter issues open, level 1 and level 2 issues locked, with bronze, silver, gold and platinum badges

Give an undecided developer several ways in

The old Discover page was a grid of every project with filters. Paco wanted something closer to Netflix, a page you could get lost in, chosen from what OnlyDust knew about you through GitHub. We replaced the grid with shelves (starter projects, languages, categories, articles, recent activity), each a different way in for a developer who doesn't know what they want. Someone might recognise a language they use, be drawn to a subject, or arrive through an article. They no longer had to formulate a useful filter query before seeing somewhere to begin.

The old grid of projects crossed out beside the first version of the new Discover page

A shelf leads to a page of its own, and the same shelves repeat there, so browsing doesn't stop at the first click.

The TypeScript language page, with its projects, more languages and articles An article page, with related articles and collaborative projects beneath it

Paco had already explored a cleaner project page using Luma's event pages as a reference. We developed that hierarchy: what the project is, its starter issues, then every issue, with contributors and maintainers down the side.

A project page: description, read me, starter issues and the full issue list, with languages, contributors and maintainers down the side
starter work is separated from the rest of the issues

Inspect a project without losing the shelf

A project, a language or an issue opens in a panel over the page you're on, with a button to the full page. Close it and you're back on the shelf. That lets someone inspect a candidate before committing to it. The full-page view remains available when they want to read more closely or share a link.

A project opened in a side panel over Discover, with its issues
the projects being compared stay behind the panel
An issue opened in a side panel, with a button to ask to work on it
the application starts beside the issue itself

The issue panel ends in one button, "I Want to Work on this Issue". From there, the application entered the existing GitHub flow.

By our fourth week the engineers were building Discover with real data. Paco said the components let him try things far faster, and asked for onboarding built the same way, from parts he expected to rearrange every week.

The skill test has no pass mark

Paco wanted a short skill test during onboarding. I'd drafted a flow that ended on a score, and asked whether a low one would turn anyone away. It wouldn't. The answers would help OnlyDust decide which projects to recommend. Showing a result as though someone had passed or failed would misrepresent what the test was doing, so we removed the score from the ending.

Signing up became four steps, profile, languages, contact details, then the test, instead of one wall of fields. We designed the test with a ten-minute timer and a warning that leaving the window would cancel it. It supported multiple-choice and free-text answers for a language model to read. I asked about a code editor too, and Paco said no, too much. He was right. It would feel like Codecademy, and patronising to most of the people taking it.

The languages step of sign-up, with a search to add languages The skill test introduction, with the options to start now or later A skill test question about goals for contributing to open source, with a timer

For developers OnlyDust could match, the ending led straight to Discover with recommended projects. Paco wasn't sure the system would be able to recommend projects for every kind of developer immediately. We therefore designed a second ending that promises an email and has no button into the app. Those were two explicitly different states: ready to recommend, or still processing someone's profile.

the ending depends on whether OnlyDust can recommend a project yet

The skill test analysing the answers The end of the skill test: a thank you and a button to continue
continue into discovery without a pass or fail score

A profile is something developers post

Looking at my own profile I noticed there was nowhere to share it, and asked Paco whether it had a job as a resume. It had a bigger one. Developers shared their profiles constantly, mostly as screenshots, so the profile had to look right cropped and posted, and look like a person rather than a project. Circles for people, squares for projects.

It shows time on OnlyDust and GitHub as a span of years, and the numbers a maintainer wants when reading an application sit in a row near the top: rewards, projects, issues in progress and merged pull requests.

A contributor's profile: photo, years on OnlyDust and GitHub, languages, totals, projects, a contribution graph and activity
experience shown as a duration

I also asked to bring in contribution history from GitHub. A developer new to OnlyDust might have years of work behind them, while a graph limited to their time on this platform would start empty. Paco confirmed OnlyDust already had the data. The profile could show that earlier work alongside the projects they joined here.

new to OnlyDust does not mean new to open source

The old app had been weakest on a phone, so Discover, sign-up and the profile all got mobile versions.

Discover on mobile The profile step of sign-up on mobile A skill test question on mobile

One public site instead of a website and an app

In our last week OnlyDust was rebuilding its platform to sync all of GitHub, millions of repositories, and Paco wanted the website and the app to stop being two things. Stack Overflow's answer is a separate marketing site on its own domain. I argued for building the website into the app instead, so everything is public, linkable and on one domain. Paco, who'd done a lot of SEO, knew pages like "open source gaming projects in TypeScript" would rank. So: one domain, everything readable without signing in, and the app as the website.

There wasn't much to market anyway. A contributor needs no pitch, just Discover. A maintainer needs one plain page, and sponsors were reached directly. Paco also wanted the crypto vocabulary gone, because OnlyDust was moving from Web3 to open source as a whole.

He asked for a week of rough layouts to argue over: a top bar over Discover, a side menu with the marketing pages under use cases, and the pitch as a layer over the app.

A layout concept: a top navigation bar and a marketing headline above the Discover page, for someone not signed in
A layout concept: marketing pages in the side menu under use cases, blog, FAQ and changelog A layout concept: the marketing page as a layer over the app

What happened next

At our last review, OnlyDust's engineers were preparing the rebuilt platform for launch. Paco's team continued the implementation and recommendation work.

OnlyDust has since closed. In their closing note, the founders describe maintainers withdrawing from outside contributions as AI-generated submissions became harder to review safely. Greg and Paco went on to build ctrlg.com.

More from OnlyDust

OnlyDust screen
OnlyDust screen
OnlyDust screen
OnlyDust screen
OnlyDust screen
OnlyDust screen
TeamJeremy BlazePrakash Ghodke
CategoryDevelopers
LocationSan Francisco
Period2025
Backed byFabric
Jeremy Blaze
Founder & Design Lead
Jeremy is the founder of Never Before Seen and serves as design lead on all of our projects. For over 10 years he's led product and design for over 70 early-stage companies worth $1b+ combined.