Saturday, October 25, 2014

There's so many projects, which one should I choose to pursue?

I want to switch gears and talk about my own experience in starting to contribute to an open source project. First I want to make a big disclaimer. Applying to OPW and choosing from active projects with vetted mentors made things A LOT easier. An advantages of this is that you have someone to contact who is first and foremost interested in mentoring someone, and willing to do so for a substantial amount of time.

OPW has several participating organizations to choose from, and under each of those organizations there are several projects with available mentors. The choice of projects is slightly overwhelming, since they all sound interesting. Since I am not an experienced developer, I thought it would be better to choose an organization whose product I was currently a user, thus providing me with some familiarity. My next selection criteria was language proficiency in the project's source code. Goodbye javascript projects! This narrowed the projects down to a reasonable amount to explore and subsequently make an educated choice. I found several suitable projects and honestly I would be more than happy to work on any of them but GNOME Keysign sparked my interest the most. It's a small project with less infrastructure than some of the other projects, which I initially had some concerns about but now I see as a potential strength. My previous post has a link to the advantages and disadvantages of choosing a small versus larger project. For me, I think there will be a lot of valuable insights into learning how a newer project is developed. I contacted the mentor of the project, Tobias, and found him to be prompt in responding and a very agreeable fellow. :-) After discussing a feasible project timeline, the advantage of working on a smaller project really shined. There was a lot of variety, which I think will maximize the amount of things that I could learn. So far, things have worked out really well. The application process requires at least one contribution and I have been able to submit a few and hope to submit more, which brings me to the realization, "Look at me! I'm contributing!" Regardless of being accepted into the program, I've already achieved my goal of getting involved in open source.

I hope, however, that for someone who is reading this who is either not eligible to apply or not obsessed with OPW like I am, finds that my experience is generally translatable. Had I not found OPW, I would most likely either be at the Mozilla or GNOME bugzilla page facing similar dilemmas and wondering where to go next. It probably would have been more of a hit and miss, but I think I would of followed a similar path as above.


Saturday, October 18, 2014

Getting involved with FOSS

I mentioned in my last post that the GNOME OPW page was a great place to find information on how to get started in contributing to open source, regardless of your gender. It wasn't that long ago that I was at a total loss of how to get started, and now I'm almost overwhelmed by the list of resources at my disposal.  When I asked others about contributing, the advice I received was to look through the list of projects on github, particularly the trending repositories. Github is a very useful tool in finding open projects; however as a beginner it was like finding a needle in a stack of needles, without knowing what the needle looked like.

Before I forget, I wanted to highlight a few pages that I found very helpful. The first one is kind of a no-brainer https://openhatch.org. It matches your interests with prospective projects in a much friendlier format than other sites. Simply put, their mission is "lowering the barriers to entry into the open source community and increasing diversity." I have to say, I felt a shade of crimson rising up into my face when I admitted that I had never heard of this site. You would think that this might be the first place you'd find when searching "how to contribute to open source." In my defense, that exact google search did not display the OpenHatch result on the first page.

With so many projects available to work on, how do you find a good match? My own personal advice would be to find a project with a very clear developer's page and list of resources on how to contribute. A good, basic "how to contribute" page has information on how to build the system, where to find tasks or bugs to work on, and how to submit these patches. I'll use GNOME Love as a great page for newbies seeking to contribute, https://wiki.gnome.org/GnomeLove. GNOME love has the previous attributes but it also has tutorial pages, a list of mentors to contact, and most importantly a mailing list and irc channel devoted specifically to those needing additional help. More than that, they even have a mock bug that you can report, fix, and patch with step by step instructions on how to it. Here's another page that I liked, http://blog.melchua.com/2010/10/08/possesa-fri-5-minutes-of-improvisation/. An experienced developer takes us through a five minute tour of what she looks for in an evaluating a prospective project that she is interested in getting involved. I like this page because it's pretty helpful if you're looking at several projects and you don't want to spend all day deciding if one of those projects is for you.

The last resource is from a previous wikimedia mentor to a former OPW student. She's clearly thought deeply about mentoring and she has a lot of useful advice. She is also a prolific writer and you may find her blog of general interest, http://www.harihareswara.net/sumana. She has several entries that include help for new open source people, what a good mentor/internship relationship should look like, choosing a young versus older open source project, etc... You could spend several days exploring her blog.

Saturday, October 11, 2014

OPW

I woke up the other morning to find an email from a fellow Girl Develop It! member who had sent out a group message about the Outreach Program for Women (OPW). She didn't say much about what it was, but I was pleasantly surprised when I followed the link, https://wiki.gnome.org/OutreachProgramForWomen. What I found was a program to promote women  working on FOSS projects by providing them resources to find a mentor and the monetary means to work on a project for ~12 weeks.  Historically, women have always been extremely underrepresented in Computer Science; however the percentage of women working in FOSS is even lower than that of industry, http://geekfeminism.wikia.com/wiki/FLOSS. For instance, women developers in Debian is abysmally low at 1.8%, while women represented the Ubuntu community at 2.4%. There are a few communities who are doing better, such as women make up 10.3% of GNOME foundation members. It's not hard to put two and two together to realize the potential benefit of more women participating in FOSS. OPW is working to improve these numbers and there's evidence that the program is successful. You only need to take a look at some of the contributions of past participates to realize that these women are having a very positive impact.

As soon as I read the brief synopsis of the program, I knew that this program was very much aligned to my current goals. Thus far, just the collection of information about FOSS, mentors, projects, blogs of past participants experiences, etc... has been an invaluable tool in helping me to get involved in FOSS. Unfortunately, Mozilla isn't participating this round, but I found a GNOME project that I'm getting more and more excited about. Despite being in the middle of finishing my dissertation, I've managed to make the required small contribution in the form of a README page. The closing date for the program application is fast approaching, and time is tight to make a coding contribution as well. Regardless of being accepted into the program, OPW/GNOME has already helped me towards my goal of contributing to FOSS by putting me in contact with a mentor for a project that I'm really excited about.

Wednesday, October 1, 2014

Learning programming the hard way

Before delving into where I'm at, I wanted to provide more of a back story. However, I think that I will have to jump around and things are not going to be in chronological order. My goal with this blog is show people how I got from A to Z. Let's hope I get to Z, right! : )

From what I've gathered, it seems that one of the most important things that you need in order to get someone to pay you to program (yes, eventually you'll need someone to pay you to do it), is to have some kind of demonstration of your abilities. I'm talking side projects. It makes sense though, you learn, you practice, and you have a side project to show for it. So, I've started a list of things I would like to learn and a side project that can go with learning that skill. However, one of the things that I think would make me a better programmer is looking at other people's code. For myself, one of the best ways to accomplish this was to work on a FOSS project. When I first started looking around I didn't know where to start and how I would start working on something. A couple of weeks later, I don't know how I will be able to focus on one project when there are so many things you can do. When I first started looking I got a little lucky, I absolutely adore quora.com. I noticed that someone asked the exact question that had been on my mind, "Which open source projects are simple enough for beginners to start working on?" Yes! Exactly! So this led me to bugzilla.com or more specifically joshmatthews.net/bugsahoy/, where there you can sort the available Mozilla bug fixes by project type, language, and if they are a "good first bug." In addition, the developer pages, which includes pages for new contributors, are clear and easy to understand for the beginner. It's hard enough to be thrown in a new project, but even harder when people expect you to know information that is cryptically conveyed. 

After building firefox into an isolated Linux virtual machine, I realize the gap between taking CS classes and working on a project in the real world. First, I take a look at the code. You would expect that these projects would contain massive amounts of code separated into many files. Even knowing this, when I first opened it up and started looking around all I could say is wow! Wow! I'm still speechless at the number of files and lines of code.