DylanMccall

Revision 1 as of 2010-04-06 05:19:27

Clear message

Dylan McCall

Contact information

Project

  • 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.

  • 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. Another feature mocked up at Harvest/NewUI, where packages are filtered based on the user's Launchpad profile, is a separate beast. I am not experienced with Launchpad's API so I can't guage for sure whether I could manage such a feat. (Happy to learn!). At any rate, I would like to build the filtering interface cleanly so that features such as that 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. With the above pieces in place, it would be worth investigating who uses Harvest and why, so we can serve them better on an individual basis. With the filtering system it should be easy to "tune" Harvest towards particular types of users, for example aspiring contributors interested specifically in small, bite-sized bugs in order 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...
    • 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.
    • 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.
    • Cool Javascript stuff for loading package information without leaving the current page.
    • Base template and visual design for filters.
    • Time permitting: Landing page, explaining what Harvest is for and getting people acquainted with its features.
      • Though I realize this is itself a big thing, if I somehow end up slipping backwards in time and have an extra two weeks of time to work on something, I would like to do some user research, to figure out who we can make Harvest for, and therefore appeal to in the landing page design. If I do this, I'll document it on the wiki.
  • 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.

Availability

  • 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...

Other

  • 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 great opportunity to spend my time doing something constructive: developing open source software, hopefully of a useful variety. It would be a really unique experience for me, since I have never done software development on a structured basis like this before, outside in school. The experience (and credits, and money) would feed beautifully into my education so I could keep learning and improving for years to come.
  • 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 Smile :) 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 I get from 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 / open source software community as a result Smile :)

      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 the tools involved in Harvest, so I am sure I could make a valuable contribution. That is, of course, 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!