Ask HN: What are some of the most elegant codebases in your favorite language?

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
  • desktop

    Focus on what matters instead of fighting with Git.

  • At the beginning of the year I was rewriting a SPA and looking for ideas on how to structure a web app. One project I looked at was Github Desktop and I think it has very clean code for an app.

    https://github.com/desktop/desktop

  • cl-ppcre

    Common Lisp regular expression library

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • FS2

    Compositional, streaming I/O library for Scala

  • fs2 (reactive streaming, https://github.com/typelevel/fs2) written in Scala. It shows how nicely things can compose in a typesafe way if the language supports it.

    And then, the opposite is Monix (https://monix.io/). It's also about reactive streaming and the API is great, but the inner code is ugly because it sacrifices readability/composability for performance.

  • Monix

    Asynchronous, Reactive Programming for Scala and Scala.js.

  • fs2 (reactive streaming, https://github.com/typelevel/fs2) written in Scala. It shows how nicely things can compose in a typesafe way if the language supports it.

    And then, the opposite is Monix (https://monix.io/). It's also about reactive streaming and the API is great, but the inner code is ugly because it sacrifices readability/composability for performance.

  • ajqvue

    Ajqvue is a Java based GUI frontend for accessing data in several mainstream databases.

  • Do this and your documentation will be easy.

    "https://github.com/csanyipal/ajqvue/blob/master/src/com/dand..."

  • Redis

    Redis is an in-memory database that persists on disk. The data model is key-value, but many different kind of values are supported: Strings, Lists, Sets, Sorted Sets, Hashes, Streams, HyperLogLogs, Bitmaps.

  • ruby

    The Ruby Programming Language

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • Botan

    Cryptography Toolkit

  • ClickHouse

    ClickHouse® is a free analytics DBMS for big data

  • Elm

    Compiler for Elm, a functional language for reliable webapps.

  • Mezzano

    An operating system written in Common Lisp

  • Carbon

    A simple PHP API extension for DateTime. (by briannesbitt)

  • Laravel

    Laravel is a web application framework with expressive, elegant syntax. We’ve already laid the foundation for your next big idea — freeing you to create without sweating the small things.

  • pytudes

    Python programs, usually short, of considerable difficulty, to perfect particular skills.

  • sf

    Simple Features for R

  • Sequel

    Sequel: The Database Toolkit for Ruby

  • Sidekiq

    Simple, efficient background processing for Ruby

  • ripgrep

    ripgrep recursively searches directories for a regex pattern while respecting your gitignore

  • Backbone.js

    Give your JS App some Backbone with Models, Views, Collections, and Events

  • solvespace

    Parametric 2d/3d CAD

  • C++ this file covers all the math for working with NURBS curves and surfaces:

    https://github.com/solvespace/solvespace/blob/master/src/srf...

    There is a lot more in other files - triangulation, booleans, creation - but the core math functions are there in very readable form.

  • toucan

    A classy high-level Clojure library for defining application models and retrieving them from a DB (by metabase)

  • Metabase's toucan (https://github.com/metabase/toucan) has some elegantly annotated source code: https://rawgit.com/metabase/toucan/master/docs/uberdoc.html

  • gitfs

    FUSE filesystem to mount git repos. (by gravypod)

  • (Opinions are my own)

    At my employer we use a subset of C++ and we use Go. We have a process by which when you write code others have to review it and you need to have a review by someone who is an "expert" [0] in the language [1]. You become an "expert" by being ordained by a shadowy committee who reviews code you submit to the code repository. They look for knowledge of the core language, how this language is used within the company, the external and internal libraries, performance, testing, etc. There are many factors and if you demonstrate all of them you get marked as being this type of "expert."

    Before I joined this company I had written code which was launched into production in the following languages: Java, PHP, C, C++, assembly (arm + x86), Python, JavaScript (browser + node), and a few more. I would consider myself about average in all of these. I did not write any golang.

    After I joined my current job I obtained this "expert" bit for both C++ and Go. It took ~1.5 years to get the C++. It took ~3-5 months for Go.

    You can actually see the first golang code I wrote (this was at home when I was experimenting with the language before convincing some team members we should rewrite some of our infra in go): https://github.com/gravypod/gitfs

    It has all sorts of mistakes but I didn't read any guides. I just used https://cs.opensource.google to search for examples of things that I thought I would need to do (ex: "how do I do a switch statement").

    For C++ I had worked on ~2 projects that used it. My first few PRs were very rough and I had a lot of performance issues that crept into my code. If I didn't already have a lot of C experience I would have also had a bunch of pointer/lifetime stuff the reviewers would have found (I know this from reviewing new team members first lines of C or C++).

    I know that to some C++ represents a literal worst case but most people coming from C++ to Go will think it's amazing because it removes all of the common footguns.

    > Things like awkward error handling

    Yes, it is very clunky and annoying but it's very simple. It's just a normal if statement and doesn't use any special language rules. I think this would still be better if there was dedicated syntax for it (something like throw/try/catch which works the same way but gives it a different syntax) but honestly I don't think it's as bad as it's made out to be. It's basically a "less bad" errno and that worked go-... dece-... ehm fine for many years.

    > dealing with null

    I've never really had to think about this too much. There are some times it is important but I rarely return nullable things without errors and it hasn't bitten me yet. My code is not provably correct but for the things I'm working on I don't need that guarantee. If I did I'd probably switch to Rust or something with better type safety.

    > capitalization for public/private

    Yea, this sucks but it doesn't really get in my way much. I don't like it but it isn't actively hurting my usage.

    > magic functions

    Like `String()`? I don't know if that's the worst think in the world. Python, C++, and Java have things like this.

    > and imports

    It's not been too bad for me. What I think is unfortunate is that the package of something is unconnected to where it is in most go usages which is annoying but it makes things more terse. This does actually hamper my productivity.

    > I don't think it's good or easy to use at all, but people rave about it.

    It's pretty easy to use because all of the libraries I've seen share common interfaces for behavior. This makes things feel a lot more cohesive. fuse-go and billy was very easy to use in gitfs because of this.

    [0] - This is not an expert as in "knows everything" but more like "has been seen to consistently write efficient, simple to understand, idiomatic code." It basically means that when someone else from this subset of SWEs reviews your code they often do not have many comments. Again, I want to stress, this is not expert as in "knows everything" just as in "good enough".

    [1] - https://abseil.io/resources/swe-book/html/ch03.html#what_is_...

  • FizzBuzz Enterprise Edition

    FizzBuzz Enterprise Edition is a no-nonsense implementation of FizzBuzz made by serious businessmen for serious business purposes.

  • Folly

    An open-source C++ library developed and used at Facebook.

  • Not sure if it's still the case but about 6 years ago Facebook's folly C++ library was something I'd point to for my junior engineers to get a sense of "good" C++ https://github.com/facebook/folly

  • Bitwarden

    The core infrastructure backend (API, database, Docker, etc). (by bitwarden)

  • [C#] Bitwarden server repository is probably one of the cleanest (non-novel) solution architectures I have seen so far. I always point people to it as learning material for structuring the code. It is not the most minimalistic but I feel like it strikes very good balance and does not follow blindly all the """fancy""" OOP patterns people should never use anyway.

    https://github.com/bitwarden/server

    Otherwise, I can see why people are burned, average Java/C# codebases look abysmal and written without understanding of (not) using heaps of mediator/factory/adapter/provider classes.

  • hattery

    Java library for making HTTP requests with a fluent, immutable API

  • While I think there's a lot to love about Java, I think the standard library itself is not an especially great role model. Most of it was written a long time ago and has a fairly antiquated style - lots of mutable state, nullability, and checked exceptions. Not that the library isn't an incredible asset - it's luxuriously rich compared to working in Node.js - but if it were written from scratch today, I suspect it would look fairly different. Eg, the collection classes would use Optional and have separate read/write interfaces.

    For an example of "modern Java" I would point at something like this (which I wrote, sorry about the hubris):

    https://github.com/stickfigure/hattery

  • Stellar

    A Tetrahedral Mesh Improvement Program (by ctlee)

  • Lua

    Lua is a powerful, efficient, lightweight, embeddable scripting language. It supports procedural programming, object-oriented programming, functional programming, data-driven programming, and data description.

  • https://github.com/lua/lua

    Everything is nicely documented and pretty easy to read.

    It's a great companion if you want to learn more about how languages are implemented.

  • pandoc

    Universal markup converter

  • I really like Pandoc codebase [0]. It is a document converter written in Haskell.

    Reading it’s source code a decade ago was a turning point for me. Prior to that, I always felt an insurmountable gap between my toy codebases and real projects. All those open source software written in C++ etc. looked so unapproachable that I felt like I could not write production ready software.

    Pandoc however, was written in a language I didn’t know and did something very complicated very thoroughly, yet remained accessible. It was very nicely laid out and I could easily follow how it constructs it’s internal representation of documents and converts between them. I think this made me catch the functional programming bug for the next decade that let me build way bigger things than I had any right to, without getting crushed underneath all the complexity. Putting together something in Java or even contributing to OOP Python codebases was still like an exercise in frustration, no matter how much better I thought I’m getting at programming I would feel stupid trying to wrap my head around those abstractions and hierarchies. Somehow FP just clicked for me and made me see how I could start from a simple library call and little by little build the complete program.

    Today I am comfortable with all kinds of paradigms and levels of abstraction, but I definitely owe a lot to Pandoc for showing me I was smart enough to understand and modify real world software I did not build myself.

    [0] https://github.com/jgm/pandoc

  • Phoenix

    Peace of mind from prototype to production

  • I’m surprised that nobody has posted about Elixir yet. I nominate the excellently written Phoenix library. Not only is the code well organized and easy to find, the documentation is expansive and right next to the code.

    https://github.com/phoenixframework/phoenix

  • Programming-Language-Benchmarks

    Yet another implementation of computer language benchmarks game

  • I found Zig implementation of json parsing is interesting. The code is free from hidden control flow !.

    https://github.com/hanabi1224/Programming-Language-Benchmark...

  • I found Zig implementation of json parsing is interesting. The code is free from hidden control flow !.

    https://github.com/hanabi1224/Programming-Language-Benchmark...

  • freebsd-src

    The FreeBSD src tree publish-only repository. Experimenting with 'simple' pull requests....

  • SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts