• 2 Posts
  • 225 Comments
Joined 1 year ago
cake
Cake day: August 14th, 2023

help-circle





  • Several months ago I installed Tumbleweed on a VM just for kicks and giggles. A week later it refused to install updates at all due to some weird conflict, even though the system was vanilla to the goddamn wallpaper. In a week I try upgrading and magically the conflict is gone. I’ll be honest, this was my only experience with Tumbleweed and it managed to have its update system broken in the meantime. I’ve never had anything close to this on Debian Unstable lol.

    Not hating on Tumbleweed, on the contrary - I have been testing it for quite a while to see if it’s as good as they say. But it doesn’t look like a middle ground between Arch and Debian. At least in my short experience.









  • I have two key points to understand any large codebase:

    • Start with the entry point. Check the initialization process. It will most likely tell you what other parts of the code are crucial to the application. Start digging into those parts that are mentioned in the initialization process. Rinse and repeat for their dependencies which might look important. Just read and take notes if necessary. Try to understand how the application gets its stuff running. Don’t spend too much time on a specific part, just get a broad understanding and how it all flows.
    • After the first step, you should start seeing some sort of patterns to how the software is made: repeating principles, common practices, overall architecture. This is the point when you should be confident enough to introduce changes to the software, therefore you should have a build environment which guarantees the application works. If it doesn’t, have someone in the team help you to get it running without any changes to the codebase. Don’t make changes until you have a working build environment.

    With both done, you should already be comfortable enough to start modifying the application.

    I cannot stress enough how many developers I’ve seen trying to dig into random parts of the code knowing nothing where or how it all begins, making it super-problematic to add new features. Yeah they can fix a bug or two, but the biggest issues start when they try to implement something new.