My recommendation tho of course is to find an existing project you’re passionate about, find their tracker, and dig in! Few softwares are ever truly done. Make one you love even better.
I've been volunteering with them on and off for several years and it's always a lovely experience. Their backend is python and frontend mostly from python templates and some Vue for librarian stuff.
Every Tuesday they have a call on Zoom that everyone is welcome to join to share what they're working on, ask for help, and generally chat a bit. It's a great time.
Depending on what you're interested in there's a lot to do from helping build import pipelines for more book entries, writing bots to cleanup data, Performance improvements, better documenting public APIs, etc
I'm currently slowly working on a wikidata integration for their authors page. We also could use some help upgrading to Vue 3, mentors for Google summer of code would be helpful, find of ML projects needing help, moving away from old jQuery libraries, etc.
They can be quite responsive to PRs too like I blogged about here: https://blog.rayberger.org/idea-to-merged-in-less-than-30-mi...
For example, here's a small issue that could use some help on the python side: https://github.com/internetarchive/openlibrary/issues/8928
https://github.com/borgbase/vorta
Or if you join as mentor, you will be supporting the Python Foundation.
If interested, just email the address in my HN profile.
Small Python library, slowly and steadily growing in use. New contributors, junior devs welcome. Mainly just maintenance work, occasional bug fixes and small feature development. Fine someone looking for casual involvement.
There are loads of low hanging improvements to the build system that can be made (not least to support 3.12). Contributions gratefully received!
I have a lot of ideas for new ones, for example, I want a CLI that can take an artist name like "Theodor Kittelsen" and fetch highest quality public domain images--but I realize any implementation that does this well will be somewhat fragile so I haven't really attempted that yet. Other ideas that I have are often solved by piping output from one of my existing commands to another or adding some optional args to an existing command.
I feel for the author of this comment, you want to help out and work on stuff you have energy at the beginning, I find it easier to write my own code than to get up to speed with someone else's code. Because you lose steam or the activation energy to get the project built and ran and then played with and customised/changed/"hacked on" is a major effort.
I have been thinking a lot on an idea inspired by compiler design: intermediate representations and term rewriting.
If software features were an arbitrary stack of crisscrossing intermediate representations that are rewritten and mutually recursive/referential or parsed or transpiled into actual code, then we could inspect the intermediate representations to work out how things work.
It would be nice to narrow down on a piece of behaviour and see how it works from end-to-end. But in practice, you have an opaque wholeness of a codebase to understand.
A modern system or codebase at a company or mature open source project: it's like those games of wooden sticks or wooden bricks jenga where they're arranged in a pile and you're piling things on-top of things and if you unsettle it slightly, it falls over or doesn't work.
I used a piece of software called OpenGrok which renders a large code base as clickable surfable wiki in the browser. So you can explore codebases.
I have a primitive python SQL database on my github that can execute simple graph cypher queries, simple joins of multiple tables, "dynamodb" style queries and document database queries.
Maybe share more info on what you like so we can suggest something you might enjoy?
It is however much easier if you contribute to a project that you already know and use personally.
I have been working on a static site generator which uses Flask.
https://github.com/siecje/htmd
I have been learning trio (async Python library) by implementing beanstalkd.
https://github.com/ericoporto/agstoolbox
There are a few number of open issues but if you play with it and find something else you want to add just open an issue and ask about it.
I have no experience with the platform myself, just bumped into it by coincidence when my OSS project (written it Typescript) was featured
I have a project now in Python. Feel free to reach out.
Plus, if you create your own project, you can make it into a product, and try to market and sell it.
It's fun!