Memories: My Google Summer of Code proposal from 2005
Ha. After talking to aspilicious tonight about Google Summer of Code (note: still one day left to propose a project!), I dug around in my old e-mail archives tonight and came across my original GSoC proposal from 2005.
= PROJECT TITLE =
Drupal Quiz.Module
= SYNOPSIS =
I wish to take on the completion of the ambitious quiz.module for Drupal, primarily aimed at allowing educational organizations to administer quizzes and track student progress.
= BENEFITS =
1. Provides educational organizations with a set of tools with which can be used in a variety of applications, from instructor-led courses to self-paced training.
2. Enhances the Drupal project, and thus the open source world as a whole, and allows both to obtain a stronger foothold in delivering free, powerful tools to this important target market.
3. Delivers a tool which can be used in a number of other ways as well; for example, website bloggers who wish to use quizzes to enhance the interactivity level for their readers, or employers who wish to use the module as a means of measuring potential job applicants' skills.
= DELIVERABLES =
1. The creation of the quiz.module based on the detailed specifications located at http://www.webs4.com/quiz_module
2. The development of a Drupal distribution specifically for use by educational organizations
3. The drawing up of a project roadmap, based on needs analysis of key members within the target community.
= PROJECT DESCRIPTION =
This quiz.module encompasses several different aspects:
1. Questions and Answers: Questions are abstracted from their answers in order to support a wide variety of question types, rather than just standard multiple choice (though this will be the first to be implemented). Properties on questions will determine things like what category it belongs to, how many possible answers a question has, whether or not multiple answers may be selected, and so on. Each answer can be accompanied with feedback to help point out where the student went right or wrong.
2. Question Types: Question types themselves (ex: multiple-choice, fill-in-the-blank, etc.) will be defined in separate include files to allow for directory scanning, a method used in numerous other places within Drupal with great success. These include files will implement a predefined public interface via hooks to do things like display each question's admin interface and render the questions themselves in a standard way. This allows the addition of new question types by users of the software very easily, and without modifying any of the underlying code, both of which are critically important traits for the module's target audience.
3. Quizzes: Creating a quiz will involve choosing one or more question categories and selecting the number of questions for the quiz. The administrator can then select from a list of questions matching the criteria, marking each one as either "include" or "exclude." A number of other properties can be set on a quiz, including whether or not to shuffle questions on each new quiz, whether or not question revision is allowed, whether or not there is a time limit, etc. Quizzes themselves will be randomly generated from the list of included questions.
4. Question moderation and revision: The module will also include the ability for other users to revise questions (to clarify meaning, correct spelling, etc.) in order to ensure their overall quality. This process involves placing proposed revisions into a queue for review by an administrator, who can then make a decision on whether to accept or reject the proposed changes. Allowing users to score a question based on its applicability is another method of gauging overall question quality.
= PROJECT SCHEDULE =
The project will likely take most of the allotted time, and will be broken up into three phases:
1. Planning (completion by end of June): This step will involve getting familiar with the Drupal platform and contacting key people involved with the project and potential users to gain a thorough understanding of all requirements.
2. Development (completion by beginning of August): The development process will be largely iterative, in which small pieces of functionality are added and feedback solicited from the Drupal community at each step, to ensure that the project is adequately meeting expectations.
3. Wrap-up (completion by end of August): Completion final tweaks to module, customized Drupal distribution, and project roadmap.
= BIO =
I've participated in educational organizations both as a student (I've acquired three 2-year diplomas, centered around database management, web development, and application programming respectfully) and as an instructor (I've taught A+ certification and web design courses to the Canadian Navy, and PC maintenance courses to retirees), and I feel this background gives me a unique perspective on the goals of this project. It allows me to "role play" as both an administrator and a consumer of this technology, and I can submit my experiences to the pool as to what well and doesn't within an educational context from both perspectives.
As a result of both my formal education and self-directed learning, I've become somewhat of a "nerd of all trades," with over 10 years of experience in a variety of facets of IT, although my primary focus and interest is on Web technologies. I can offer the Drupal team my experience with both W3C standards-based front-end design and over 5 years of PHP/MySQL development. My online portfolio is available at http://www.webchick.net/ and contains examples of my work.
Finally, I feel that there aren't enough women represented in the IT world in general, and the free/open source software world in particular, and that's something I'm striving to change. My ideals fit in well with both the F/OSS movement as well as education, and I would greatly welcome the opportunity lend my skills to these worthy causes.
Fun facts:
- My only exposure to Drupal before this moment was a "view-source" on spreadfirefox.com. The first time I installed Drupal was the day Google Summer of Code began.
- It probably took me another 3 weeks after that to figure out wtf a hook was. :P~ (remember: there were no Drupal books in those days, and the handbook was only about 300 pages :)). I've made it my mission since then to try and destroy the Drupal learning cliff.
- Right at mid-terms of GSoC, the Drupal servers had a meltdown, leaving CVS, documentation, the issue queue, and other important things inaccessible. As a result, my first documentation contribution was how to set up a local copy of api.drupal.org. ;) Luckily this story had a very happy ending. :D
- In other curve balls, the GSoC projects were being developed against CVS HEAD, which was Drupal 4.7 at the time. GSoC completed about a month before the dreaded Form API patch landed. It was a lot of "fun" re-writing Quiz module a second time, let me tell you. But hey, at least more documentation got written. ;) This is also when I found my first honest-to-goodness Drupal core bug and my first honest-to-goodness Drupal patch was committed, and the rest is history. :D
- There was an 11th hour switch that put my application from #12 to #11 in the list, which put me juuuust barely within the 11 slots the Drupal project was allocated. In other words, I was this || close to not getting into GSoC, and not becoming part of the Drupal community. Thanks for having faith in me, robertDouglass! :D
Anyway, things overall worked out pretty well I think. :D If you're a student interested in working on Drupal, or a Drupal developer with cool project ideas and no time to implement them (but enough time to guide someone like 2005 webchick through the process), hope to see you at http://groups.drupal.org/google-summer-code-2012. The deadline for student applications is 19:00 UTC on April 6.