Skip to content

Instantly share code, notes, and snippets.

@dellsystem
Created July 27, 2012 03:11
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dellsystem/5a222e8f5a834ed9459f to your computer and use it in GitHub Desktop.
Save dellsystem/5a222e8f5a834ed9459f to your computer and use it in GitHub Desktop.
Agora project proposal for GNU Octave

I'm interested in working on the Agora website. I would love the opportunity to help build the website, mainly because I enjoy working with Django and the requirements for the website seem like a fun challenge without being intractable. I'm also a big fan of open source software in general - I've been volunteering with phpBB (bulletin board software released under the GPL) for nearly 5 years as an official team member (currently on both the website and moderator teams) - and would love the chance to contribute to the GNU Octave project.

Below, I will detail the different components that I've identified for this project and my experience with each, as well as a rough timeline of when I would expect to complete the various steps.

Components

Taken from the repository readme.

Django

Django is one of my favourite tools to work with, and I've used it for three medium-sized projects in the past year: Wikinotes, a wiki-based platform for collaborate note-sharing (source on Github); the website for the McGill Model United Nations conference (2013) (source on Github); and Rodan, a distributed system for automating optical music recognition (repository currently private). Through these projects, I've learned to use a wide variety of different tools and apps in the Django ecosystem, such as queue systems, code highlighting with Pygments, and user authentication and profiles. Many of the requirements mentioned in the readme are similar to components that I've written in previous projects, and those that aren't still seem doable.

Mercurial

I've never used Mercurial before, but from what I can tell it seems very similar to Git, which I use on a daily basis, so I don't anticipate any problems with learning Mercurial. As for integrating Mercurial with the site itself (as mentioned in the readme, lines 62-64) - I had to do a similar thing with Git, for Wikinotes, and learned a lot in the process, and while it could potentially prove challenging I would be very interested in working on this.

User authentication

I've worked primarily with the default Django authentication module, and have implemented custom registration/profile features around it. I've also worked with the django-registration app, so I have a general idea of how it works, although I ended up using custom code to handle registration instead. I don't expect much difficulty in this component.

Bundle upload and code highlighting

The outlined code bundle uploading system bears some similarity with the note-sharing feature I developed for Wikinotes, and while there are some complexities I think this component will be manageable.

Comment system

I haven't used the threadedcomments app before, but I took a quick look at the code and it doesn't seem too hard to use.

User interface

I would like to develop a clean, consistent, and usable user interface for the website, with or without a CSS framework like the Twitter Bootstrap or Foundation (depending on time constraints, level of originality desired, and the needs of the website). Some websites/apps that I've designed include McMUN, The Salzinnes Antiphonal (a demo of the Diva.js document viewer that I'm primary developer of), Wikinotes, and my personal site.

Unit tests

Since there are some features with potentially complicated interactions, I will make sure that any code whose validity isn't readily apparent is thoroughly tested. I would also like to use continuous integration with Travis, in order to ensure that tests are always run, if the need arises.

Documentation

I will endeavour to keep my code as well-documented as possible without going overboard, in the form of inline comments, docstrings, notes in the README, and external documentation if need be.

Timeline

  • August 1-15: Check out codebase, get it running; read all the code and documentation; start learning Mercurial
  • August 16-31: Start working on design; start mocking up models and routes for the components
  • September 1 - October 15: Work on the core components, with as much test coverage and documentation as is feasible; start implementing the views, models and templates
  • October 16-31: Ensure that documentation is thorough and up to date; write any remaining tests that need to be written; test out the user interface and fix any bugs
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment