Biting More Than You Can Chew

Posted on 2020-08-28
This post has corrections, see the "Corrections" section for more information!

Imagine you checked out the sources of a large software project. You have an idea of what changes you want to do to it. The problem? Where do you start?

No, seriously, where _do_ you start? You have ~50 GB (without Git history) of sources in front of you. Where do you begin adding even the smallest thing?

You might think to yourself that _someone_ must've documented how everything fits together. Nope! The project's own documentation only has API usage and how to work on something _targeting_ it, not on its own source code.

Other third party documentation is either lacking, or _very_ surface level. Explaining the simple things like how to clone & build the software, which doesn't help if you want to modify the software and not just use it.

You _can_ read how the old code works, or look through how others do their changes, but that's way too much effort to apply a change that you don't even plan to upstream or maybe even share. Even if you are _really_ motivated to apply your change, the code is _50 GB_, where do you even look _first_?

You might assume you can just throw stuff onto the wall and see what sticks... Good luck. Even the most trivial changes take *at least* 15 minutes to compile, not to mention the extra hassle to deploy the changes. (Since this code compiles to an external device)

What _can_ you do other than just steal commits off of other people? Genuinely curious...

Corrections

It's Actually Not 50 GB

After receiving a reply to this post, that asked which project had 50 GBs of sources, I wanted to make sure my number was accurate.

Reply by Nolan of perplexing.space

The raw sources are around 45-50 GBs, but a large part of these are either:

Approximating the impact of all these, I would say the parts of the source that get built for my uses are around 5 GBs, maybe lower.

Unnecessarily Vague

I have no idea why I kept this post unnecessarily vague, but the project in question is Android (specifically, the LineageOS fork, but it doesn't impact the upstream complexity in any meaningful way)

You seem to be blocking JavaScript, keep up the good work!
This message is just here to remind you that my blog also is available viaGemini, if you wish to read it through a protocol that's lighter and has more than three proper browsers.

Replacehttps://ecmelberk.comwithgemini://ebc.lion the page address to read it from there.