1. 24

I’m really really really, really bored. It has been a few months since I quit my job and I want to write code and I don’t want to get a job again. I don’t really care what language or technology it is, I think, I just want to read a lot of code. Ideally something that doesn’t take ten years to compile I guess.

All of the Google search results on this topic are blogspam or focused on beginners. I’m exaggerating but it’s not great.

    1. 38

      how about pick a project that you already use?

      1. 16

        This. I don’t think you’re going to get anywhere if you don’t contribute to something that scratches your itch (or you get paid for it, whatever).

    2. 21

      Nixpkgs is a great project for this IMO - it’s the first project in 20 years as a developer where I just feel like I could work on it full time and not get bored. There’s packages to … package, reproducibility issues to quash, Python tests to write, refactoring to improve all sorts of things, best practices to work out and enforce, and so much more.

    3. 20

      Ladybird browser is doing an amazing job making contribution look appealing. There is a YouTube series showing some debugging and development for it that gave me a programming itch to scratch.

      1. 5

        SerenityOS is another cool project (and for those who aren’t familiar with it, that project is the origin of Ladybird).

      2. 3

        Heh. I have the opposite impression.

        After seeing the creator’s response to this PR, https://github.com/SerenityOS/serenity/pull/6814, it makes working with him look really UN-appealing.

        I have a firm “never work with @$$h0l3s” policy these days.

    4. 11

      The Oils project always welcomes contributors, and has had 82 contributors over the years. It’s a new Unix shell, but also a vision for simpler computing, which I think is practical to adopt – because it doesn’t insist on rewriting the world. It uses what’s already there, and what’s known to work.

      It’s not for everyone, and I specifically list 6 reasons why here, so as not to waste anyone’s valuable time: https://github.com/oils-for-unix/oils/wiki/Where-Contributors-Have-Problems


      It’s all Python, C++, and shell - the most bog standard and proven/reliable technologies. Although we use those to implement domain-specific languages, i.e. the “middle-out” style:

      This makes the code very short:

      If you want to read a lot of code, I think our code is very readable, once you understand the patterns. The syntax for the entire language is described in ~650 lines of algebraic data types:

      https://github.com/oils-for-unix/oils/blob/master/frontend/syntax.asdl

      And the runtime is even smaller - https://github.com/oils-for-unix/oils/blob/master/core/runtime.asdl

      It’s detailed, but conceptually, that’s all it really takes to understand the project. I often say it’s “Crafting Interpreters + 20 or so syscalls”. So anyone who understood 50% of Crafting Interpreters, and knows Python, should be able to contribute to Oils.

      The other thing that is a “must” is a healthy respect for testing, and what I think of as “adversarial testing” – i.e. trying to prove yourself wrong, not prove yourself right.


      Contributors may not end up writing large volumes of code. It’s more about reading, as you say! And thinking

      We try to write as little code as possible – the whole point of the short style is to reduce the number of bugs. I think it’s pretty accepted that the number of bugs is proportional to source code size, regardless of language.

      I’d also claim that it isn’t linearly proportional – my experience is that once code reaches a certain size, the number of bugs grows nonlinearly. Bugs lead to other bugs – including performance bugs, which often end up as permanent properties of the software.


      There’s also a separate shell GUI project I mentioned here, if anyone wants to run with it, and write a ton of code: https://lobste.rs/s/ineb98/ghostty_1_0_is_coming#c_fb1rw7

      1. 6

        I should also add that you don’t have to be paranoid about introducing bugs when contributing to Oils.

        You can kinda just hack and see what works

        We have so many tests that almost all breakages should be caught – and if they aren’t, that’s the fault of the tests, not the person making the change

        So IMO it is kind of fun to work on a project like that – where you don’t have to be paranoid about what you can do, and can just try stuff. It enables much faster learning.


        Also, being in Python means that your “compile” loop is non-existent. It is < 30 ms to iterate, which is practically instant.

        But then we compile the Python to C++, which makes the code 2x-50x faster. We are in the realm of hand-written C++/Go/Rust, but we write typed Python.

        So it’s a quirky toolchain that we spent a lot of effort on, but the result is the best of both worlds IMO.


        The typed Python is also nice … I do aggressive global refactorings with types. But sometimes I ignore the types when I’m trying to debug/reverse engineer an algorithm, and then fix types later. So you can choose whatever is faster.

      2. 2

        Honestly I never read any of the ASDL files. I just tried the language, asked for a few pointers for a feature I wanted to see, wrote some spec tests and started tinkering with the python code.

        I believe this project has a very easy entry (e.g. implementing simple builtin methods/functions, or even something in the stdlib which is just shell itself)! And then the curve goes up until you land at C++ transpilation, the handwritten GC, etc. - way above my head at least!

        Really something for anyone if you ask me! And Andy is super responsive & helpful in providing guidance and tips on zulipchat/github - super motivating.

        It was also super rewarding to get something from the NLNet fund for some IMO very small contributions!

    5. 11

      If you’re interested in contributing to an open-source compiler, Roc is under active development - currently a couple hundred thousand lines of Rust code, 30k commits, and the top 5 committers all have 1.5k+ commits each.

      https://github.com/roc-lang/roc

    6. 8

      I’ve been busy with school, but if you’re willing, you can help me on my Jellyfin SSO project. The issues are piling up, and the code is a mess, mostly because it was my first time writing C#.

    7. 8

      I am working full-time on the open-source TLA+ tools! I would be happy to mentor you for onboarding to contributing to them as well. There are a few projects in Java, Scala, and OCaml that need some love and you could make a real impact in; I also find there is great depth to the subject matter that makes the work very interesting.

      1. 1

        Hey, I would like to contribute if this is open. I really like reading about TLA+, although my knowledge and level of understanding is at newbie level but I am willing to work on it. It will be interesting to work on some tools to know the internals of model checker or anything similar. Aside: Leslie Lamport published a new book on TLA+ -> https://lamport.azurewebsites.net/tla/science-book.html

        1. 2

          Sure, I sent you an email!

    8. 6

      You like game programming, functional programming, and audiovisual experiments, according to your profile.

      My project is kind of related to all of that. It is a pure functional programming language for creating animated colour 2D and 3D models using signed distance fields and function representation, the same underlying tech used by the demos on ShaderToy. 3D models can be converted to a mesh and 3D printed (in full colour if you like).

      See https://curv3d.org for a video and some links.

    9. 6

      You really need to find something that works for you. That means it’s aligned to your interests so you have motivation; it aligns with your technical skills and direction; and it has developers/maintainers who have compatible work styles.

      I’d selfishly suggest projects that are interesting to me, but…that’s missing the point. It’s about you.

      So your profile suggests you’re into games - anything more specific? Where would you like to be technically in five years? What interactions do you enjoy, and which do you find toxic?

    10. 4

      It looks like you’re into audiovisual stuff and gamedev. Perhaps bintracker is up your alley. It’s an interactively programmable music editor for Chiptune written in CHICKEN Scheme, and should be fairly lightweight.

      1. 1

        This is really cool. Thanks for sharing the link.

    11. 4

      I’d look at alternative OSs that are actually trying to do something different than UNIX.

      The likes of HaikuOS, seL4 and related projects, Genode.

      There’s also a lot to be done and fun to be had with hand-written optimized RISC-V assembly in key projects like ffmpeg.

      1. 4

        Redox is also a good alternative.

        1. 1

          In a few years, Redox has a chance to.

          The ones I listed have already had decades of development effort put into them; they are not comparable.

    12. 4

      Read up on Forth. Consume all Forth resources. See you in a bit ;)

    13. 4

      I’m really really really, really bored. It has been a few months since I quit my job and I want to write code and I don’t want to get a job again.

      I don’t want this to sound mean but that’s a very privileged position. Is there a chance you could find a project that you think would be a boon to humanity or your community? I know that’s highly subjective but if you are lucky enough that you don’t have to work, maybe some of that time could be used to give back a bit.

    14. 4

      If a lot of projects bore you to the detail, it’s perhaps time to ask yourself what exactly you’re looking for in a FOSS project. Is it the technology or folks that interest you? It might sound a bit preachy but for a lot of people, open source is less about technology and more about the happiness derived from a spiritual sense of giving and sharing of a utilitarian object (software or program). At least for people like Richard Stallman, Cory Doctorow and Ryan Dahl (Node.js creator), etc., FOSS meant a lot more than just a business proposition, they derived meaning and purpose out of life through FOSS! You say you don’t care about language/technology and stay away from corporate job, probably this kind of path might be of your liking and passion me thinks!

    15. 3

      The new COSMIC desktop environment for Linux is written in rust and has a lot of really cool moving parts. I’m excited to see this come together:

      • a new Wayland compositor
      • a new way of building Wayland apps, via the iced toolkit and TEA (“the elm architecture”)
      • beautiful, fast, memory-safe components like greeter, session, panel (both dock and applets), launcher, text editor, terminal, file manager, screenshots, settings, and wallpapers, notifications, and on-screen displays like volume, bluetooth, screen brightness. Multi-monitor, multi-workspace.

      I think COSMIC is reviving old hardware, making it usable again, and generally creating an option for tinkerers and customizers to find a way to build their dream desktop on Linux.

    16. 3

      I worked on some open source package because I wanted some functionality for my own non-OS but not commercial project. But as I started contributing, I found a lot of friction in setting up the development environment. So much in fact that I felt that just powering through may be too stressful.

      So I spent several months fixing the onboarding experience: upgrading to newer generation of packaging tools, adding proper diagnostics that are only relevant on a clean machine, fixing README’s, etc., etc.

      In parallel I submitted my own changes and I think that both activities were reinforcing each other: I’m not sure if just my own changes would be accepted as readily as when I already demonstrated proof of effort.

      My point is that IMO it’s a very good focus point for an experienced dev who is not obligated by deadlines etc. Work as a sort of icebreaker ship, reduce the barrier to entry somewhat, submit incremental changes. Anyone can add new features, lol; and fixing bugs is usually motivated by people who are affected by this bug. Fixing DX is often deficit activity.

    17. 2

      Terminator (https://gnome-terminator.org) is always looking for contributions, there’s a bunch of issues that I haven’t had time to get around to, and though we have a lot of contributions from various people, few of them stick around. The code is all in python and GTK3 and uses the VTE lib heavily and lives here https://github.com/gnome-terminator/terminator

      I’m usually hanging out in matrix here: https://matrix.to/#/#gnome-terminator_community:gitter.im if you want to say hi.

    18. 2

      https://github.com/bablr-lang/ is probably among the most challenging and rewarding projects you might pick to get involved with. I’ve been working for the last four years and now the work is at a critical final stage where it badly needs the kind of contributors who read code carefully and leave documentation behind them where they go. We’re already planning to have next week as a kind of open work party where the in-person members of the team will be getting together for the first time (in Boulder, CO).

      We think the work is super exciting because we’re a major player in the IDE-making game, and nobody really knows it yet. You could say that we’re making the first API-first IDE, designed from the ground up to make programmatic changes to code to be as easy to design and implement as UI-based changes. It’s a bit like having a chance to help design and implement the first ever web browser. If it sounds interesting we have an active chat too: https://discord.gg/NfMNyYN6cX

    19. 2

      If you are (or anyone reading this is) interested in helping scientists make new discoveries using program synthesis DM me :)

    20. 2

      I don’t have any suggestions, but I’m curious if you’re hoping to eventually make money from this somehow or you want experience or if it’s just to satisfy your own intellectual curiosity. Is there an end goal? Regardless, I am interested to see other responses.

      For what it’s worth, I decided to try writing code in 100 different languages to see if it would spark my curiosity, and it has… but I’m fairly sure that’s not what you had in mind.

    21. 2

      Help others figure out what to use when they’re working in a new language in a way that’s not AI.

      https://codethesaur.us/

    22. 1

      Are there FOSS projects that you like to use?

      Jazzband always needs plenty of help, but it’d seem best to start with things you use.

    23. 1

      If it were me I’d pick one of the open source science packages and work on those, just because they would intersect with my interests.

    24. 1

      OSQuery is an incredibly interesting project that could use some fresh eyes. It’s something that has pretty much endless scope, and I’ve found the contributors to be pretty friendly! There’s a lot of older tables that need refreshing up to newer standards, and any amount of any OS’s vastness that could be added as new tables. Add BSD tables, add Linux tables, add Windows tables, add MacOS tables, iPhone, Android, Chromebook, whatever you want.

      The build-chain is also pretty good, there’s a long initial compile but then after that it’s great.

    25. 1

      Check out pkgsrc and NetBSD.

    26. 1

      Don’t forget to update your lobsters profile ;-)

    27. 1

      Hey if you’re taking requests, here are some of mine:

      • Adopt the recently abandoned Ward testing framework for Python
      • Write a Rust library for the NestedText format
      • Contribute (anything) to the Factor programming language
      • Write a tree-sitter grammar for Zsh
    28. 1

      Why not start your own?

    29. 1

      I’m currently working on FlowG. At the moment I’m busy building the SaaS offering for it. But I’d love to start working on the replication part using Raft.

      I am also working with coworkers on https://github.com/saashup/netbox-docker-plugin & https://github.com/saashup/netbox-docker-agent. Some help here would be great as well.

    30. 1

      I’m working on a medium sized suite of projects for building ActivityPub services/clients in the Go programming language. I’m implementing a lot of things from scratch so the amount of work seems to be never-ending.

      If you’re interested in making social networks more accessible for people, maybe you can lend a hand.

    31. 1

      Another cool project that could probably use some help: https://github.com/ponyorm/pony

    32. 1

      There are a bunch of emulators that could use some help. All of the Nintendo Switch emulators are dead now. I am under the impression that NetherSX2 is struggling.

      1. 1

        You might want to mention that Switch (and other Nintendo) emulators open you up to litigation, which is why there’s not much going on ATM.
        Not that I think it’s good at all, just worth knowing if you consider this.

    33. 1

      Write a Haskell compiler from scratch in a language that’s already bootstrapped. Then GHC could be bootstrapped using that compiler.

      It’s a fun project because there is only one program you need to compile, so you can cut all the corners you want. And you could even modify the code of GHC itself. You’d have to make sure it still compiles itself correctly, of course.

      Since you like reading, Haskell is a good option, since its academic tint means people have had to write papers for the most innovative ideas. So there is a bunch of papers you could dive into.