Hi folks, when you read headline, you probably ask yourself that what is the relationship between ‘Passionate’ and ‘Publish Libs’. But please don’t ask, because I will try to give a perspective to passionate and starting point to create and publish a lib as open source.
We usually need third party libraries to add into Android or any other platform projects and sometimes develop our own small library projects inside our application without depend on other third parties. Well, while you are using any third party, do you realize that why I always be a consumer and not be a producer? I wonder what kind of things I would gain if I was on the producing side. This question will be critical point to consider after reading this article for you :)
I have been developing Android applications about 8 or 9 years, have been also a lot of different projects, working with both small and big teams. In this period I coded small libraries which used inside android applications and some third party libraries had been forked by me to customize according to projects needs. But I have been asking myself about 2 years, why don’t I develop my own useful third party libraries to publish Github? Everyday that I asked this question myself, I could say that I was disappointed. After I was considering and researching on this situation for a long time, I decided these two keywords which will be my needed motivation source: Self-Learned and New-Challenges.
Now I try to explain connection between these key-words with a few samples and steps.
- Find An Idea: Any widget that can help with a feature needed in a project you are developing.. For instance: Custom Material Chip View.
- Define Requirements: Buldugunuz fikri koda dokebilmek icin gerekli materyalleri hazirlayin. Prepare the necessary materials to code you idea. Thre might be UML diagrams, design specs, software design patterns, etc.
- Use Your Software Skills: Object-Oriented Programming, Design patterns, language specific documentation. In all of them there will be things you need to repeat or learn from scratch. So you will always keep your information up-to-date.
- Write Good Readme: You can actually learn how to write a good readme. And it will create a source of motivation for you to write better. Because it is always a challenge to provide the most explanatory document to those who use your library. (just remember how you felt when you used a poorly documented library )
- Publish: Publishing a library will be redirect to use advance Git features like tagging, branching, pull-request process, etc. Of course you know how to use git but how professional are you?
- Follow Android Version Updates: Even doing a little research after the new Android versions coming every year and checking if we need any updates in our library will lead us to repeat and learn the differences between the versions.
- Be Responsive For Feedbacks: This is perhaps the most important part for us. There are maybe millions of use cases in the Android Ecosystem. These may be device specific or user prompt. Bug fixing, develop new features. This will motivate us the most, and we can see it as a job.
Above, I wanted to set some steps for myself and explain them a little. Let’s now associate these steps with the self-learned and new challenges keywords as we said before. Finding idea, following version updates and respond for feedbacks, these may be new challenges for us. Think about it, different bugs and new requests come from different people, and while researching and coding all of them, you learn brand new technologies, new design patterns, and many things that will improve language use. Other than this, we can add the rest into the part we call self-learned.
Every day, new technologies and methods related to the different uses of these technologies are emerging. In other words, the ecosystem grows as it grows. How do you intend to keep yourself up-to-date and self-motivated? Even when you apply for a new job, almost all companies look at the blogs you have written and the projects you have done as open source. I think you need to start somewhere. Publishing a library, even a simple one, would be a good start for you.
Keep motivated and productive :)