UCOSP Week 0

So as part of my final semester I’ve had the opportunity to participate in the Undergraduate Capstone Open Source Project (ucosp.ca) This ‘week’, we kicked it off with a 3-day code sprint in Toronto last Friday through Sunday. The sprint was held downtown at the Mozilla offices (we got a tour and everything, it was quite the experience) and we were able to meet our teams, make sure everything was up and running and configured properly, and began to focus on deciding what our project would be for this term. Overall it was a compressed, super useful 3 days that really helped to get things focused.

From what I understand, the purpose of this week is to clarify our projects and set goals and milestones. For this term I’m somewhat interested on working on the RSS feed-parser functionality. There is an open issue to rewrite the RSS import tool using PyQt4 so that there are less 3rd party dependencies required for the end-user to install. Also Thanh, one of the project mentors suggested that if I was going to rewrite the RSS import tool then it would make sense to address issue 151 and implement the functionality as a Freeseer plugin, using the Yapsy Plugin Manager system which is what the project uses to implement all of its other plugins. All in all, I’ve decided to go with issue #151 for my project and, if I have time, see if I can’t also make a RSS feed importer plugin so that it only depends on PyQt4 instead of both PyQt4 and the other existing 3rd-party library that is currently in use.  This week I’ve mostly researched what I need to do, and been working on developing a plan for my project.

As I’ve been researching, it’s become very obvious that documentation for how to implement a Freeseer plugin is, well, non-existent. Fortunately Yapsy is well documented, and the source-code for the project is well written so that has given me a good place to start. I’ve also noticed that there are no unit tests for the existing Freeseer feedparser functionality so I’ll need to develop some to make sure I’m maintaining functionality as I go along.  So far these are the key objectives I believe should be part of my project:

  • Implement a basic importer plugin (including unit tests) for Freeseer
  • Document the process and create a tutorial for future users on how to create a plugin for Freeseer
  • Extend the importer plugin to fully implement the existing rss-feedparser functionality (including unit tests)
  • (optionally as time permits) implement the importer plugin using only PyQt4.

As I’ve been reviewing these objectives I’ve come up with a general roadmap that looks roughly as follows:

  1. Finish researching how the Yapsy plugin system works in general, and specifically how we are implementing it in Freeseer
  2. Plan my basic OO design for the proof-of-concept general importer plugin
  3. Design (& implement) tests for the general importer plugin
  4. Implement the general importer plugin.
  5. Document the plugin creation steps and create a tutorial
  6. Write the tests to make sure the existing RSS functionality does not break with my changes.
  7. Design a RSS importer plugin that extends the general importer plugin and implements the existing RSS importer functionality
  8. Implement the RSS importer plugin, re-factoring as necessary and making sure that all tests pass.
  9. (optionally, as time permits):
    1. Research how to use only Qt to implement the RSS importer plugin
    2. Document my findings, so that a future contributor could pick up the work if necessary
    3. Design the new plugin
    4. Implement the new plugin making sure that all tests pass

Now that I’ve got all of that figured out, I just need to update my Project Design Document (which is, of course, a work-in-progress).