Week 6 -- Time to Pick a Project
This week’s progress is themed around evaluating and picking potential open source projects to contribute to. Looking over numerous projects on Github, sometimes I am inspired that there are so many talented people working on tons of mature projects making our life easier, sometimes I would also feel pity seeing tons of interesting projects no longer active or not attracting many users and contributors. And in general, it is very hard to pick a project that is interesting, understandable, and has an active community at the same time.
When I searched for open source projects, I mainly held two goals to begin with. The first one is about my personal interest and strength. Technically, I am really fond of playing with data structures and algorithms, while I may not prefer to do things highly related to machine learning and AI. At the same time, I hold the belief that every progress in any field is ultimately related to human beings, and it would be meaningful if I can do something helping spread good human virtues. And the second goal is more practical, I would like to learn some new skills which can benefit my future career. For example, I haven’t learnt any specific software development knowledge, so it would be better if this is a chance pushing me to gain some new skills.
Bearing these in mind, I firstly looked for social-good projects as our professor suggested. There are various options popped out when searching on google. I clicked a random suggestion list and started browsing. Most of them aim at improving living quality including the quality of medical service, education, especially for relevant poor areas and areas that have experienced devastation like an earthquake. Actually I have always thought that these works are totally done by government and official charity organizations, so it was quite impressive realizing lots of programmers are building open source projects to help them as well. At the end I found something special and decided to pick it as my social-good project proposal. It is an application named Terrastories. Just as its name indicates, it aims at collecting and storing meaningful community stories associated with a special place to them. It perfectly meets my understanding toward computer science technology. I have always been thinking about using modern techniques to preserve or spread lively warm and meaningful stories that don’t have to vanish. So this application caught my eye immediately when I realize someone is actually doing so. And luckily, their community seems active on Github, and they are also welcoming contribution both on their website and on Github.
Moving on the pick other potential projects, I found that there are mainly three restrictions. The first one is that, for some field, it is nearly dominated by only one organization or project, and such project might be too big for us to understand or contribute to. For example, I considered something related to graph theory and algorithm, so I looked for projects about trip route planning and I found OpenTripPlanner which is based on OpenStreetMap. It is cool but complicated as well. And sadly there aren’t many other similar projects. The second challenge is purely about my personal ability. The distance from learning undergraduate college course to really doing something useful in the industry is noticeably far. For a great number of projects, it was hard to understand what it is for and how it generally works at the first place. And it was also hard to understand what the issues on Github are talking about. The last challenge is associated with doing contribution. There is never a lack of great projects, however, as I have mentioned above, it was sad seeing many of them are no longer active and I gave up considering them due to this reason. And perhaps it is truly hard to have preservation maintaining a project, especially under the condition that the project was not gaining a lot of popularity at the first place.
At the end, I picked an IOS application called earth that can track users’ carbon emission footprint. I like its purpose and its simple but comfortable outlook. I have already downloaded it and I truly believe it is an app some people would like to use. Its maintainer seems to be friendly on Github as well, though he is not very active.
Except from these two projects that I picked. I also scanned the projects that my classmates chose. Many of them seems interesting and I would also be glad to contribute to them.
The thing that I am most looking forward into is to learn knowledge from each other and truly engaging in the industry. I can imagine that I would learn a lot just reading the codes of these open source projects, not mentioning discussing with other talented programmers. For example, I believe I would learn more practical knowledge about operating systems than I did in my operating systems course. And I would also learn about how testing works.
Of course the difficulties come along. Communication would be a challenge since the maintainer may not respond. But the biggest obstacle for me would still be the technology. I am not sure to what extent I can understand to code. And having a specific plan of learning necessary background knowledge would be a must to overcome this. I would discuss with my partners and set such plan as soon as possible.
In conclusion, it is still great to know that I will begin doing something “big.” I feel this is also a decent pre-internship training opportunity that can benefit me a lot.