The Code Contribution Learning Curve

Contribution Learning Curve

Since the start of the OCPP course, I've had the goal of contributing to IPython because I've been a user of the software for more than six months now and have found the IPython Notebook feature to be immensely useful. I also enjoy taking on ventures that will develop my Python programming skills and since it is a Python project, I felt that this also made for a good fit. I have discovered however, that there is a significant learning curve to joining a long running open source project led by paid developers. No doubt this is due to the complexity of IPython, as it is a serious software project supporting a wide range of platforms and features. I also believe that this is an effect of my own bias that making a meaningful contribution to the project involves a pull request with code.

Time to Contribute

Because I have been determined to make a code contribution, I have gone through the process of getting a developer environment running on my machine and have played around with the front-end JavaScript that controls the feature I plan on adding a requested enhancement to. Asking the community about this enhancement led to their pointing out additional areas where I might make a contribution related to this enhancement. The initual enhancement I set out to make, quickly became more complex, involving the IPython core in addition to the Notebook front-end. What has been difficult has been finding large chunks of time where I can sit down and experiment and learn more about the IPython code base. I feel that this requires (for me) at least 3 hours of uninterupted focusing and it has been hard to find this time among work for other course projects. I've only been able to successfully do this one time and thus have made little progress toward creating a pull request.

This Week's Minimal Contribution

Going forward, I need to better manage my time to find the focused hours of work that are required to make a serious contribution to the project. For now, I have eased off my personal (any maybe biased) requirement for making code contributions and have made a couple of contributions to the Github wiki. On two pages, I discovered broken links to projects showcasing or explaining their use of IPython and I have fixed those two occurences. I definitely believe these contributions will be valuable to the project, as one link correction was for an educational project using IPython on the Notebook example page, a page that attempts to highlight unique uses for the IPython Notebook for new or curious users. One final note is that the enhancement I planned to work on has already been addressed by another developer. This is not surprising, because I acted more as a lurker, not well pointing out or acting quickly on my interest, rather than taking a active role in creating the enhancement.