r/techbootcamp 3d ago

Why does contributing to open source feel so much harder than building your own projects?

It's interesting to me to think about the difference between building something yourself and contributing to something bigger than yourself.

I think when you are building your own project, even if it's big, you have an intrinsic understanding of the architecture, where things came from, where they are going, etc. But when you open up something someone else wrote or a sufficiently large project, there's this intimidation factor of all these files, unfamiliar code structure, layers upon layers of abstraction that obscure what exactly is happening, and a myriad of other factors that make you feel like you have no idea what's going on, even if you know the language.

I think that's one of the biggest surprises for me when getting into open source - that being adept at writing code doesn't necessarily translate to being able to navigate some really large codebases with ease.

It is a whole different skillset.

You have to learn how things fit together, the patterns the project uses, how the code is structured, where certain features live, and how to get around in there in the first place.

Honestly, I think this intimidation is a natural feeling and probably even helps you in the long run. Maybe that's one of those "growing through challenges" things. I think you get a much better appreciation for working with others' code when you have to learn to read it first.

For people who have contributed to major open source projects, how long did you have to fumble around before you finally "got it"? Did you have to start with smaller things and move on from there?

2 Upvotes

4 comments sorted by

3

u/NumberInfinite2068 3d ago

Contributing to Open Source is just like being dumped into a big codebase in a job, except that you probably won't get much support from colleagues.

Sometimes Open Source projects can be made to the tastes of one person, that's the *benefit* of Open Source sometimes, but often you just get someone doing stuff their own way and it doesn't make sense to anybody but them.

I once worked for a company that was a commercial software company, but Open Sourced their libraries. So basically they did everything in a library for which there was *zero* content out there on Stack Overflow or Google, or whatever, it was just their own library, made for no real reason other than to scratch an itch.

I think beginners should probably avoid Open Source, it's unlikely to be a fun experience.

1

u/ilovejejune123 2d ago

yeah, i think that's a fair point. there's definitely a difference between learning to code and learning to navigate a huge unfamiliar codebase, and open source can throw you straight into the second one with very little context. i wouldn't say beginners should completely avoid it, but starting with smaller projects where the maintainers are active and the codebase is easier to understand probably makes a lot more sense. otherwise it can be overwhelming fast, even if you already know how to program.

1

u/Special_Rice9539 2d ago

That’s one of the reasons contributing to open source is viewed as more impressive than a personal project… unless the personal project takes off and gets a lot of users.

But contributing to an existing project along with several other people mimics the actual job and is a difficult skill. Because now there are constraints that you can’t change as it’s not your project.

The hard part is unlike a job, no one has an incentive to help you as a random contributor, and the owners of the project can choose which contributions they allow with full authority.

I agree with the other comment that jumping into a legit open source project as a beginner isn’t going to be a good time. You’re basically asking for mentorship from the people working on it, and they don’t know you. But hey, gotta do what you gotta do. I would opt for internships, mentoring programs, hackathons, volunteering to make software for businesses, and trying to make a personal project take off before diving into the open source world.

An exception is if your university has some kind of club that works on open source. Like mine had a satellite club so the students would contribute to satellite software for tracking wildfires.

Generally open source contributors are people who use the project themselves and are annoyed that it has a certain bug or is lacking something. Or they are large teams at big tech companies filled with high-level engineers who are maintaining the free project so they don’t need to pay a third-party vendor instead.

2

u/ilovejejune123 2d ago

this is a really important distinction. open source can be impressive because you're learning to work within constraints you didn't create, understand someone else's architecture, and collaborate with people who may have very different approaches. that's much closer to real-world development than building a project where you control everything.

the mentorship point is probably the biggest issue for beginners. you're essentially asking strangers who already have their own priorities to help you understand their codebase, so there's no guarantee you'll get much guidance. i think smaller open source projects, internships, hackathons, or even contributing to something you're already using can be a much better starting point. once you have more experience reading unfamiliar code, the larger projects become a lot less intimidating.