Community | opensource

What 108 repositories taught us about open source hygiene

Sixteen years. 108 repos. One map. What an archaeological dig through the ownCloud GitHub org taught us about contributor experience and open source hygiene

The ownCloud GitHub organization has 108 public, non-archived repositories.
I know, because I mapped every single one last week.

When you’ve been building open source since 2010, sixteen years (!), your GitHub org becomes an archaeological dig:

  • Active projects, next to repos untouched since 2017.
  • Experimental forks from five years ago in search results.

The first thing a potential contributor sees is confusion. So, we mapped it.
Every repo categorized into six groups:

  • oCIS (15 repos),
  • Classic (40 repos),
  • Clients (15 repos),
  • Documentation (10 repos),
  • LibreGraph API (5 repos), and Infrastructure (23 repos).

The map is going into the GitHub org profile README.

What we found:

  • Seven repos are forks of upstream project;
    These carry the upstream license and can’t be relicensed. We’re tagging them clearly.
  • Several repos haven’t been pushed to in over two years.
    We’re reviewing each one:

    • archive the dead ones (moved to ownCloud-archive),
    • mark the stable ones clearly.
  • Ten documentation repos:
    docs is the Antora framework that ties them together, with per-product repos underneath, but if you didn’t know that, you’d have no idea where to contribute a docs fix. Now it’s in the map.

We’re setting up a .github repo with org-wide defaults:

  • CONTRIBUTING.md,
  • CODE_OF_CONDUCT.md,
  • SECURITY.md,
  • SUPPORT.md,
  • and a PR template with a DCO sign-off reminder.

One set of defaults instead of 108 copies.

Repo hygiene might not be glamorous, but it’s the difference between a GitHub org that says „we’re serious“ and one that says „we threw some code on the internet.“

Tomorrow: I’m a script kid running an OSPO.

 

This is part 3 of this blog post series.
See the earlier posts:

  1. A (re)-introduction to the ownCloud community.
  2. What happens when you fork twice, get acquired, and keep shipping anyway
  3. We killed our own CLA. Here’s why that’s a good thing
  4. PHP 8.3. Yes, for Classic. Yes, we heard you

Jordana Fung

25. April 2026

Read now: