So I decided to contribute to some open source project (we'll call it Andr*id to maintain its identity concealed) to kill some time, make my GitHub grow and learn some things.
Big mistake.
So right off the bat, programming knowledge alone is no good. Besides C++ and Java you must also know:
All the while receiving either completely esoteric error messages (e.g.: error 0x000123" An error that could mean literally anything from a bad sector in RAM to a compiler bug) and/or completely obvious messages ("can't open foo: file or directory doesn't exist" gee, thanks. This would be useful if I had to manually create that file. But turns out 99 % of the time some script or makefile was supposed to create that automatically, so better have fun debbuging thousands of text files until you find the fucking function that fails to send the required int.)
The thing is that there's also a bunch of compile warnings and some errors that can be safely ignored because developers decided it was OK to leverage unexpected behaviour or barely working code as long as it works. So now you have to spend six fucking hours reading threads in XDA and the Linux mailing list trying to fix some errors that may actually end up breaking stuff further. And half the shit you read online either don't apply to your specific problem because a. Android and the Android kernel work completely different from regular Linux in some regards (and it's different for each version of the kernel, each OEM, each device and each Android version) and b. The proccess is such a bugfest, that finding someone else with the same error as you is almost impossible.
Then you try to find help. They will tell you to ask in a forum, IRC or mailing list. Again, a mistake. They either won't answer or tell you to RTFM. I ALREADY READ THE FUCKING DOCUMENTATION YOU IMBRED FUCK. JUST TAKE THE GODDAMN DRAGON DILDO OUT OF YOUR ASS FOR 5 MINUTES AND PLEASE HELP ME.
So after a while they decided to help me. Turns out the script was broken if the device's name contains both numbers and uppercase letters at the same time because the dev also uses that function to wipe his ass or something. So now not only must I read the entire device's source code and the Linux source code, I must also read all the tooling's source code and read the developer's mind to know why the script isn't doing what it's supposed to do. Marvelous.
So after a long while I managed to get a flashable image. What an orgasmic feeling. Time to flash the device and...
Bootlop.
There's nothing useful in the logs. There's no dmesg or journalctl (not like that would help because they also suffer from the shitty errors problem.) There is nothing to do besides recompile the kernel with a couple of flags enabled so the boot proccess can be strace'd. At this point I might as well change the terminal's font to Wingdings because it makes as much sense as the gibberish strace prints.
So the problem was apparently the camera's drivers. Proprietary blobs, of course, and they were failing to execute something.
That's it. I'm officially stuck. The documentation's advice to getting un-stuck? Ask in the IRC.
Fuck this shit.
Tools are shit, error messages are useless, documentation is awful, dealing with new problems is hard and the community is not helpful. No wonder developers are all so bitter and mentally ill in their 30s: this is hell.