Thoughts, reflections, and ideas

Why Open Source helps you to become a better developer

Posted on

For those who are not conscious about that, Open Source is the reason of the existence of many development communities. Would you imagine nowadays the iOS/OSX development without CocoaPods? And what about Ruby without its Gems? A lot of developers around the world put their efforts to simplify your daily stuff publishing their work in an Open Source way through these dependency managers (for them because otherwise it would be impossible to resolve many dependencies conflicts of our projects). Open Source a project doesn't mean just git push origin of your projects and making them public. It has some extra implications that will help you as a developer and with your future projects. Have you ever done it before? Would you like to know how it helped to me? Let's see.

Why I started Open Sourcing some libraries?

When I started developing app some years ago I didn't know about what the term Open Source meant. I started with iOS, by that time there wasn't a dependency manager like CocoaPods and I integrated the libraries manually. There was though, reference websites like Cocoa Controls where I could check the last libraries that other developers had published and were offering to the community.

I've always been a curious person and I wonder every day how the things work. I like to say that I can't be happy without knowing what there's inside the magic boxes around us. I wanted to know how these libraries worked, and why developers were spending their time developing libraries instead of working on their projects.

I found the answer, and liked the philosophy behind that. What makes a language very important is not only how good it is and what it offers that others don’t but the community that there’s supporting the language with new tools/libraries/tutorials, …. And Objective-C was building a great community thanks to the mobile apps development and tools like CocoaPods, or libraries like AFNetworking that you sure know about. People, packaging, code logic, to simplify others stuff and support the community with great tools. I liked it! I wanted to support the community as well and started giving my first steps sharing some code.

I remember having some friends who started developing apps for iOS as well and that saw (and still see) dependency managers as “tools for those developers that don’t know how to integrate libraries manually” or that think that “those who use libraries are not good developers, they have to use code from others”. Sorry, but I totally disagree with that. The point is that you have bundled something you have to code and that would make you save a lot of time. Why not using it and extending in case you need extra features not supported?. Those developers tend to see their code as Gollum saw the ring:

It’s something really worth to try if you’re a Developer and you haven’t done it before.

Why contributing with Open Source projects helps you as a developer?

I said that it helps to developers but some of you might be thinking why?. These are some points I figured out after creating some Open Source libraries:

Open Source opens your mind, and contributes to design cleaner and better code

Things you have to keep in mind

When you work an Open Source project that you are going to open to more people there’re some points that you don’t usually take care of but that you should if that project’s going to be opened to more people. These points help to get closer to the project and understand how it works. You know how it works, or it components because you have worked on that, but, what about the rest? Developers are your users and if you forget about these points, developers might end up not using your library. What are these points?:

Lastly and not less important, every Open Source project requires one thing, compromise. You’re building a product, you’re building a piece of code other projects depend on. I don’t know about any project that is self maintained. The project will have dependencies with system frameworks, or even with other libraries. Having dependencies mean that if these change the project will need some changes as well. If there’s no compromise with the project it’ll be unusable some months later (unless you have a community that maintains it). An Open Source project requires invested time. The most common Open Source reference projects were built with a big community behind them. They started with a person having an idea, that was later supported by more and more developers that spent time to make it better and bigger.

If you’re thinking about building something Open Source, let me give a recommendation. Try to build something that your project depends on. It’s a good way to committed to the library.

Recent Open Source project

Hope you have enjoyed the article. If you’re another Open Source geek and you would like to comment any other point you consider is important also when working for these projects, feel free to add a comment or contact me, [email protected].