About This Site

This site celebrates open-source culture in journalism.

I’m Scott Klein, publisher advocate at Newspack and co-host of the Data Journalism Podcast. For more than 25 years I’ve worked at the intersection of journalism and technology, including a long stint at ProPublica where I helped build the data and interactive teams.

Earlier this year, Ben Welsh and I published research showing that open-source culture in newsrooms has collapsed. New public repositories from news organizations on GitHub dropped more than 80% from their peak in 2016. Posts to the NICAR-L listserv, once essential reading for data journalists, fell 89%. Even the most well-resourced newsrooms walked away — The New York Times posted zero new public repos in 2024.

We believe this matters. The “show your work” ethic helped newsrooms build trust, attract talent, and solve problems bigger than any single organization could tackle alone. With AI reshaping how people access and evaluate information, the need for openness and collaboration is greater than ever.

Even though it’s diminished, there are newsrooms still working in the open and sharing code and knowledge. This site is here to highlight and celebrate them.

What’s Here (and Elsewhere)

Biweekly open-source updates. Every two weeks, I publish a roundup of new public repositories from news organizations. What are newsrooms building? Who’s sharing their work? What’s worth paying attention to? These posts are drawn from data collected by the Open Journalism Bot.

The Open Journalism Bot. A BlueSky bot at @openjournalism.bsky.social that monitors the GitHub accounts of roughly 350 news organizations and posts whenever one of them creates a new public repository. It’s the spiritual successor to @newsnerdrepos, a Twitter bot that went dormant after Twitter’s API changes. The bot is open source, naturally.

The org list. The bot monitors organizations from a curated list originally compiled by Scott Klein (me), Silva Shih, and Ben Welsh. If your news organization is missing, open an issue or pull request on that repo.

What Isn’t Here

I have a presumption in favor of mentioning the repos my code finds, but I curate it so it doesn’t feel like a chore to read it. For example, I avoid highlighting empty repos (there are a surprising number of these), forks of other projects, and repos that are clones of project templates. I also tend not to highlight projects that are highly specific to a niche tech stack or a single newsroom.

That being said I have an expansive view of what counts as journalism, and an even more expansive view of what counts as interesting, so this is not limited to any one kind of project. You might find a scraping library next to an R Markdown notebook next to an interactive graphic next to a utility that cleans up audio. The eclecticism is a feature, not a bug.

A Note on Unpublished Work

Sometimes a public repo supports a story that hasn’t been published yet. The whole point of this site is to celebrate open-work culture in journalism, not to scoop people with their own code. So I try to hold back on writing about a repo if I think the underlying story hasn’t come out yet. I will take a project mention down temporarily to give you time to publish your story. That also goes for the Open Journalism Bot BlueSky account. Just let me know at kleinmatic@gmail.com.

Get in Touch

Follow @openjournalism.bsky.social on BlueSky for real-time updates. If you have questions, suggestions, or want to let me know about a project or repo I missed, email me at kleinmatic@gmail.com or find me on the News Nerdery Slack channel.

How I Use AI

I used Claude Code extensively in building and maintaining the Open Journalism Bot and use it to do the analysis and summaries for the biweekly updates. I’m the human-in-the-loop on everything. Every line of code and word of prose goes through me before it gets here. I’m the human in the loop.