Haoyi's Programming Blog

Table of Contents

Introducing the com-lihaoyi Github Organization

Posted 2021-02-23
From First Principles: Why Scala?

This is a short blog post to introduce the new com-lihaoyi Github organization: a place for all of my most production-ready projects will live to be easily maintained and discovered. We will discuss the status quo, what is changing, and what I hope to achieve with this change.


About the Author: Haoyi is a software engineer, and the author of many open-source Scala tools such as the Ammonite REPL and the Mill Build Tool. If you enjoyed the contents on this blog, you may also enjoy Haoyi's book Hands-on Scala Programming


Background

I maintain a large number of Scala projects of varying levels of production readiness on my personal Github account. These projects are very inter-dependent, building upon each other to reach greater and greater heights:

com-lihaoyi/graphviz.svg

This modularization is not itself an issue: in fact, it is often convenient that someone using a particular project can pull in exactly what they need and nothing more.

While this has worked so far, over time the following issues have become clear:

  1. Apart from myself, most of these libraries have different maintainers, making coordinated updates difficult if I'm not around to personally shepherd it through. e.g. let's say a fix in OS-Lib needs to be pulled in by Ammonite, and then pulled in by Mill

  2. Related to the above, contribution is difficult since you may have to wrangle different people to review/merge PRs to each repo, and any individual repo may only have 1-2 people with permission to merge and publish

  3. The production-quality libraries are mixed up with a bunch of definitely-not-production-ready junk on my personal Github account

What

As of today, the Github repositories representing production-ready Scala projects on my personal Github account lihaoyi have all been moved to the Github organization com-lihaoyi:

The initial set of members for the organization include people who are already maintaining large swathes of the ecosystem in the past:

These maintainers will have commit and publish access to any library in com-lihaoyi.

The set of repositories and members may change over time, but the goal is to have a place where someone can find all the production-ready Scala repositories

Individual repositories can continue to have repository-specific maintainers who can push and administer the individual repos; the only change is that now the most prolific such maintainers will now have credentials to help move things across the entire ecosystem of related libraries

Repository links, e.g. to download Ammonite or Mill binaries, should continue working without issue due to Github's automatic redirecting of transferred repositories.

Why

Creating the com-lihaoyi organization should help us:

  1. Simplify cross-cutting changes: things like Scala 3 support, Scala-Native support, etc. can now be performed by anyone and pushed through the entire ecosystem of related libraries

  2. Improve bus-factors of each individual repo: now other organization maintainers can step in to merge PRs or run releases if an individual library's maintainer is unresponsive.

  3. Improve the discoverability of these libraries: someone interested in one can easily find others, rather than having to trawl through a bunch of unrelated repositories on my personal Github account

The name com-lihaoyi stems from the com.lihaoyi snippets people using these libraries are already used to putting in their build-files: com.lihaoyi::requests-scala, com.lihaoyi::os-lib, com.lihaoyi::fastparse, etc. I decided to go with this label people may already be familiar with rather than trying to come up with a whole new branding.

Conclusion

The com-lihaoyi ecosystem started off as a one-man show of fun experiments, but has since grown far beyond that:

My hope is that the com-lihaoyi organization on Github will help bring these libraries to the next level of maturity: from some scattered gems on a personal Github account, to a solid, maintainable, discoverable platform for the next generation of Scala developers.

If you have been helping to contribute and maintain any libraries in the above list and would like wider org-wide access, send me an email and I can add you!


About the Author: Haoyi is a software engineer, and the author of many open-source Scala tools such as the Ammonite REPL and the Mill Build Tool. If you enjoyed the contents on this blog, you may also enjoy Haoyi's book Hands-on Scala Programming


From First Principles: Why Scala?