I work to improve the openSUSE Tumbleweed (GNU/)Linux distribution. Specifically I make sure that all packages can be built twice on different hosts and still produce identical results, which has multiple benefits. This generates a lot of patches in a single week.
Sometimes it is enough to adjust the .spec file – that is a small text file usually specific to us. Then it is straight-forward
- osc bco
- cd $PROJECT/$PACKAGE
- optional: spec_add_patch $MY.patch $SOME.spec
- edit *.spec
- osc build
- osc vc
- osc ci
- osc sr
And OBS will even auto-clean the branch when the submit-request is accepted. And it has a ‘tasks’ page to see and track SRs in various stages. For the spec_add_patch to work, you need to do once
ln -s /usr/lib/build/spec_add_patch /usr/local/bin/
When you want to contribute patches upstream, so that other distributions benefit from your improvements as well, then you first need to find out, where they collaborate. A good starting point is the URL field in the .spec file, but a google search for ‘contribute $PROJECT’ often is better.
Then there are those many projects hosted on github, where it is also pretty low effort, because I already have the account and it even remains signed in. But some repos on github are only read-only mirrors.
- check pull requests, if some have been merged recently
- fork the project
- git clone email@example.com:…
- cd $REPO
- edit $FILES
- git commit -a
- git push
- open pull request
- maybe have to sign a CLA for the project
- When change is accepted, delete fork to not clutter up repository list too much (on github under settings)
The older brother of github. They integrate various ways of contributing. The easiest one is to open a Ticket (Patch or Bug) and attach the .patch you want them to merge with a good description. While many developers do not have the time and energy to debug every bug you file, applying patches is much easier, so gets your issue fixed with a higher chance.
Some projects collaborate mainly through their development MLs, then I need to
- confirm the subscription
- git format-patch origin/master
- git send-email –to $FOO-devel@… –from $MYSUBSCRIBEDEMAIL 000*.patch
- wait for replies
- if it is a high-volume ML, also add an IMAP folder and an entry to .procmailrc
Like https://bugzilla.gnome.org/ https://bugs.python.org/ https://bugs.ruby-lang.org/ https://bz.apache.org/bugzilla/
- create unique email addr
- sign up for account
- add info to my account list
- optional: search for existing bug (90% of the time there is none)
- file bug
- attach patch
So as you can see there is a wide range of ways. And most of them have some initial effort that you would only have once… But then I only contribute once per project, so I always pay that.
Thus, please make it easy for people to contribute one simple fix.