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
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:
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:
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
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
The production-quality libraries are mixed up with a bunch of definitely-not-production-ready junk on my personal Github account
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.
Creating the com-lihaoyi
organization should help us:
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
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.
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.
The com-lihaoyi
ecosystem started off as a one-man show of fun experiments, but has since grown far beyond that:
Many projects are now used pervasively in the community and industry, with most Scala shops using at least one or two of them. In total, these projects get about 9,000,000 downloads a month from 300,000 unique IPs from the Maven Central package repository.
Rather than a loose collection of helpful tools, these projects now form a self-sufficient ecosystem that lets people be immediately productive with the Scala language, scaling seamlessly from "hello world" to the most complex backend systems.
I have published a book, Hands-on Scala Programming, that makes full use of this com-lihaoyi
ecosystem to teach developers how to productively use Scala for all sorts of scenarios: websites, programming languages, real-time distributed systems, and much more
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