Dylan McCall

Contact information


  • Project Name: Harvest improvements

  • Project Description: I am interested in working on Harvest, the opportunity aggregator for Ubuntu. The project really intrigues me, and Daniel's recent blog post about it (as well as its entry under the Ideas list) spurred me to take a closer look and really got me to appreciate its potential. I would be thrilled to dedicate time over the summer to improve Harvest and help it reach that level of quality it deserves. In particular, I want to focus on navigation; how people reach specific opportunities among the thousands of packages Harvest lists.

  • If you would be willing and able to do other projects instead, which ones?

    • Home user backup. In particular, I would focus on Deja Dup's user interface, improving the experience for new users who aren't familiar with backup systems.

    • Glue desktop automation tool. Small project I'm pondering that I would love to do for GSoC. Would let users script common desktop functions (accessed over Dbus) with a graphical, node-based “language”.
  • Why did you like this idea?

    • I'm really excited by Harvest's potential to streamline routine fiddling for package maintainers. The data it collects could also be put to interesting use addressing new contributors and tying together various development communities.
      In addition, I have had a lot of fun doing smaller projects with Django, and I just finished a course covering the system in more detail. I would really enjoy working with Django again on something more substantial. I sense an awesome learning opportunity as well as a place where I could contribute something very positive using my existing web development knowledge.

  • Please describe a tentative project architecture or an approach to it:

    • First of all, I would work on infrastructure to only send information about packages and their opportunities to the client when they are specifically requested. For example, when the user clicks a package name, he is taken to a new page with information about it. There would need to be some careful design to ensure that the change is as seamless as possible, and that the user can go back without feeling frustrated. Ideally I would like to do this with some Ajax, but it should be implemented first without Javascript to ensure compatibility and accessibility.

      With that in place, front-end performance should become awesome. This will allow breathing room for the desired interface for filtering the opportunities list, which is elegantly mocked up at Harvest/NewUI. That would be my main focus for the GSoC project. Some of this functionality can be borrowed (or at least gain inspiration) from Django's built in admin system.

      There is one feature in the mockup at Harvest/NewUI, where packages are filtered based on the user's Launchpad profile, which I'm considering a separate beast. Totally happy to (finally!) learn Launchpad's API, but depending on its complexity I may hold off for it until a bit later. At any rate, I would like to build the filtering interface cleanly so different filters could be added easily at a later date.
      Time permitting, I would like to work on the all-important UI glitter, in particular the theme (to fit with Ubuntu's beautiful new branding) and the landing page. If I get to the landing page I would like to do some research, investigating who else Harvest can serve and, therefore, address in the landing page. With the filtering system it should be easy to "tune" Harvest towards particular types of users, for example aspiring contributors interested in small, bite-sized jobs to become acquainted.

  • Give us details about the milestones for this project

    • I guess I went crazy writing things for the last part, but here's a different view of major milestones, in the order I currently intend to work on them...
    • Week 1-3: Getting familiar with the project. Implement deeper navigation; package and opportunity details sent to the client separately from initial list of packages, on an individual basis instead of all at once.
    • Week 4-8: Filtering by packages and their associated opportunities, including by first letter of package name. Filtering info needs to stay intact when the user clicks on a package for more details (which may constitute loading a new page). The view for an individual package needs to respond to filtering by opportunities, so these all go hand in hand.
    • Week 9-11: Cool Javascript stuff for loading package information without leaving the current page.
    • Time permitting: Updated visual design. Landing page, communicating what Harvest is for and how it can help people.
  • Why will your proposal benefit Ubuntu?

    • I think Harvest has a lot of potential to improve Ubuntu's development process by making it easier to keep track of all the things that go on in the open source world from a single place. For package maintainers, this tool could be indespensible, and with the back end already in a rather nice state at this point, I believe some UI-focused work, as I intend to do, would have a powerful impact.

Open Source

  • Please describe any previous Open Source development experience

    • I have been involved with Ubuntu (and other open source software) for a long time now. I have done a lot of tinkering in this environment and I have come to love Vala and Python for development. Recently, I picked up the effort to have a slideshow play while Ubuntu is installed. The goal is to give people a simple and interesting introduction to Ubuntu so that, when they get to their new system, they have a good understanding of it and are excited to explore it on their own. The result was shipped in Ubuntu Karmic and it is doing really well for Lucid. There are a lot of beautiful new visual designs and two new slideshow content packages, and I am proud to say they were contributed by other people Smile :)

  • Why are you interested in Open Source?

    • Tough question to answer, really. The thing that strikes me most about open source software is the spirit of collaboration. If some piece of software doesn't do the job for me, it is possible to modify that and make it work; we don't have to become competitors and maintain two completely different code bases that do almost the same thing. That culture of cooperation which runs through the open source community is amazing.


  • How long will the project take? When can you begin?

    • My current semester ends at the end of April, so I could work on this from the start of May, even. The three months should do the trick for the work as outlined above.
  • How much time do you expect to dedicate to this project? (weekly)

    • I could dedicate about 30-35 hours a week.
  • Where will you based during the summer?

    • I will be based in Vancouver, Canada. (UTC-7)
  • Do you have any commitments for the summer? (holidays/work/summer courses)

    • At the moment, no. I may be taking a Math course during the summer, which would take about 10-15 hours a week. Still, that is looking less likely (I can do it next semester without trouble). This could easily be my one and only focus.
  • Please designate a back up student (in case you need to withdraw your application)

    • Sorry, no idea at present...


  • Have you ever participated in a previous GSoC? (describe your project)

    • No, I haven't.
  • Have you applied for any other 2010 Summer of Code projects? If yes, which ones?

    • I haven't applied for any other projects. I will update this if I do.
  • Why did you apply for the Google Summer of Code ?

    • GSoC would give me a unique opportunity to develop my interests in software development, contribute to free software, and prepare for my next year of school, without making sacrifices. It would be a fresh experience for me since I haven't done software development in as structured a way before (outside of school). I think I would really benefit from the experience, the university credit and the cool t-shirt.
  • Why did you choose Ubuntu as a mentoring organisation?

    • There is the sentimental reason and there is the practical reason, but I'll try to convey a middle ground. I am comfortable working with Ubuntu's community and infrastructure already, so I think I can do my best work over here. In addition, Harvest really is that cool!
  • Why do you want to participate and why should Ubuntu choose you?

    • I live on that warm fuzzy feeling of having made something nice, so doing this (instead of selling HDMI cables) would feed straight into that energy source and I would have even more initiative (and confidence!) to work with the free software community as a result :)

      I really want to see Ubuntu and its community grow. I think this GSoC project would be a great way to help that cause. I am well acquainted with many of the tools used in Harvest, so I am sure I could make a valuable contribution. Of course, that is not to say I'm a guru! (That would be boring). There will be a lot for me to learn in the three months, as I have never worked on a major Django project. It should be fun, eye-opening and exciting!

GSoC/2010/DylanMccall (last edited 2010-04-06 17:02:45 by d154-20-147-36)