Geek; Programmer; Pythonista; FOSS enthusiast, evangelist and contributor; Melange developer; opinionated about programming languages; crazy about cars and air-planes; choosy in watching movies; loves Bangalore, San Francisco and Southern California; and most importantly addicted to coffee!
Madhusudan C.S.
map (thoughts) => words;   reduce (words) => this;
April 22, 2009, 9:20 p.m.
GSoC
GSoC 2009
Melange

Title: Implementation of Task-based GHOP-like work flow.

~~~~~~~~~~~
Abstract:
~~~~~~~~~~~

Greetings!

I wish to implement a task-based work flow for Melange, where the
program administrator, organization administrators and mentors will
be able to define tasks, tag them, set difficulty levels and track
students' progress for each task. Also students will be able to look
at tasks, claim them, work on them, indicate their progress for tasks
claimed and submit their work. Also I wish to provide Melange some
automated features for processing student submissions and selection of
students for prizes.
Content:

Name: Madhusudan.C.S
Email: madhusudancs@gmail.com
Age: 21

~~~~~~~
Why?
~~~~~~~

Melange's development has mostly concentrated on a Google Summer of
Code like, project-like work flow, where individual students select a
project, write a proposal, get selected and work on a single project
during its course. But Google Highly Open Participation has an
entirely different approach, where organizations list a set of tasks
which students claim and start completing them one by one. Also unlike
GSoC each student is allowed to take up one task after the other,
without limit. Further there is a need for a tagging system and
filters for these tags.

~~~~~~~
How?
~~~~~~~

Firstly I begin my project by defining the necessary base models for
GHOP. These models may be an extension of the existing Data models
(inherited) or completely new models as per the requirements.
A rough list Models that I intend to create are (note the names of
the models are tentative):
1. Task - This model holds data related to a single task. It holds the
Organization, the tag assigned, task status, task
description, time allocated, difficulty level, time when it
was created among other things.
2. TaskTrack - This holds data related to task status, Student who
claimed it, if completed - its evaluation (say score
on a scale of 10), comments on it.
3. OrgTask - This can reuse GSoC's Org models. It holds the maximum
allowed tasks for the org, the number of currently
listed tasks and so on.
4. ReopenedTasks - Holds information about students who failed to
complete the task previously, reason for it,
previous difficulty level, previous time allocated.
5. Student - Holds data related to the tasks completed, tasks claimed,
the current score, tasks claimed but not completed. Also
it may contain other generic information/references to
such like Age, Country, regional restrictions and so on.

Other models like Organization, Org Admin, Mentors, School, etc can
mostly be reused from GSoC's models since their job is mostly the same
as far as Melange is concerned.

The above mentioned data items need not be Model fields precisely,
they may be reference to other Models that hold the actual data. Also
the models mentioned above is by no means complete. It is the set
of major models that are required for the implementation. Other models
will be added as and when requirement arises.

Then I define 4 separate views for GHOP(by view here, I mean user
level views, not the individual classes that use Django framework) one
for Program Admin, Organization Admin, Mentors and Students. Each view
discussed here will include a multitude of View Classes that are used
to present the data.
Each user-view(i.e role in Melange jargon) can do the following
tasks:
1. Program Admin - In addition to what can be done in GSoC, like
Organization application review, selection; he/she
can also set the number of tasks per org, send
reminders and notifications to students/mentors/org
admins to update their profiles. View profiles,
extract student progress data, task progress data,
organization progress data like total number of
tasks, number of tasks in each tag, in each state.
Can retrieve the Winners, Runners-up and type of
prize given to each student. Can configure prizes
for each type of selected students like T-Shirts.
In addition can do everything that org admins and
mentors can do.
2. Org Admins - Can assign mentors to tasks. Can send notifications
to mentors/students. Track student progress/task
progress. Track mentors as to how many tasks they
are mentoring/completed mentoring. Can set the
number of runner ups for their org. Retrieve
Winners and runner ups for their org. Can select
student(s) for special recognition and prize. In
addition can do everything that a mentor can do.
3. Mentor - Can define tasks, tag it, set its difficulty level, time
limits. Can track students/task progress, comment on
tasks. Can change status, tag and difficulty level.
Reopen the unfinished tasks. Can send notifications to
students.
4. Student - Can view available tasks. Can claim them. Set the
progress indicators for the claimed task(say on a scale
of 100). Comment on tasks. They will get notifications
from mentors/admins. They will also be able to see the
newly added tasks in a small dashboard at the top.
Filters will be provided as said below.

Each of the above user will be given filters to see the tasks by
status, difficulty level, time allocated, tags. In addition Admins
and Mentors will be given views to see the list of students who
completed specified number of tasks, those who claimed the task
but failed. They can also filter by total scores, by difficulty
level of the tasks completed, individual student's progress and so on.

For everything related to Prize selection, a separate view is given
to the admins/mentors to select the students for Grand Prizes and
runner ups.

The logic and the remaining features I wish to implement are as
follows:

1. Firstly Melange will be able to automatically calculate the total
score of the student using various parameters like number of tasks
completed, difficulty level, time taken to complete and so on.
2. Mentors/org admins are sent a notification automatically whenever
a student claims a task, comments on the task.
3. They also get the notification as soon as the student updates the
progress indicator, and completion notification when he sets it to
100%.
4. They also get notification automatically if a student who has
claimed the task fails to complete it within the time allocated
for it.
5. Logic for filters will also be implemented.
6. Finally the most required logic for GHOP is to allow a student to
work on only one task at any given instant of time. This will be
enforced.

~~~~~~~~~~~~~~~~~~~~
Benefits to Melange
~~~~~~~~~~~~~~~~~~~~

By the end of this project Melange will have the capability to
create, organize and manage an entire program completely based on
task-based work flow. Most of the task-based work flow features
required will be implemented. Melange team and LH will have most of
the app infrastructure needed to organize next GHOP.

~~~~~~~~~~~~
Deliverables
~~~~~~~~~~~~

1. A set of models to hold the task-based data.
2. A set of Views for rendering and displaying task-based data.
3. A set of templates for the above views and models.
4. Logic required to perform automated tasks like winner and runner
selections, notifications among other things.

Non-Code deliverables include testing performed at various phases to
verify the correctness of the code and features implemented in
general. Also detailed user and development documentation for using
Melange for GHOP will be added. If time permits a set of test cases
will be added.

~~~~~~~~
When?
~~~~~~~~

The project is planned to be completed in 8 phases. Every phase
includes documenting the progress during that phase. The timeline
for each of these phases is given below:
1. Design Decisions and Initial preparation(Community Bonding Period
: Already started - May 22nd )
Closely working with Melange community to learn more about
Melange code base in depth, Melange's approaches to different
types of problems, reading documentations related to GHOP,
Django. Communicating and discussing with the Melange
community to resolve the outstanding issues and potential
blockages to the progress. Design decisions are discussed and
finalized.

2. Coding Phase I (May 22th – June 2nd )
Write the set of models required.

3. Coding Phase II (June 3rd – June 20th )
Views required for Program Admin, Org Admin and Mentors will
be completed. Also automatic notification features will be
implemented.

4. Testing Phase I (June 21st – June 25th )
Explicit testing of the above implemented features will be
done and any major bugs will be fixed.

5. Coding Phase III (June 26th – July 21st )
All the other required views, including Student views will be
implemented. Filters will be implemented. Enforcing students
to claim single task, logic for calculating prizes will be
implemented.

6. Testing Phase II (July 22th – July 27th )
Testing the features implemented in the previous phase
and fixing any major bugs.

7. Requesting for community wide Reviews, testing and evaluation
(July 28th – August 2nd )
Final phase of testing of the overall project, obtaining and
consolidating the results and evaluation of the results.
Requesting community to help me in final testing and closely
working with testers.

8. Scrubbing Code, Wrap-Up, Documentation
(August 3rd – August 10th )
Fixing major and minor bugs if any and merging the project
with the Melange SVN Trunk. Writing User and Developer
documentations and finalization.

~~~~~~~~
Where?
~~~~~~~~

I am already comfortable with using the melange-soc-devel mailing
list and IRC channel #melange@freenode.net. I will be able to contact
my mentor in both of the above two forms and will also be available
through google-talk(jabber). I am also comfortable with svn since I
was the SVN administrator for 2 academic projects.

~~~~~~~~~~
Why Me?
~~~~~~~~~~

I am a 4th Year undergraduate student pursuing Information Science
and Engineering as a major at BMSCE, Bangalore, India(IST). Have been
using and advocating Free and Open Source Software from past 5 years.
Have been one of the main coordinators of BMSLUG. Have given talks and
conducted workshops on various FOSS tools:

- Most recently I conducted a Python and Django workshop at National
Institute of Technology, Calicut, a premium Institution around.
- How to contribute to FOSS? - A Hands-On hackathon using GNUSim8085
as example.
http://groups.google.com/group/bms-lug/browse_thread/thread/0c9ca2367966...
- Have been actively participating in various FOSS Communities by
reporting bugs to communities like Ubuntu, GNOME, RTEMS, KDE.
- I was a major contributor and writer of the KDE's first-ever
Handbook.

http://img518.imageshack.us/img518/9796/hb1o.png
http://img518.imageshack.us/img518/4296/hb2.png

I have been contributing patches and code to various FOSS
communities, major ones being:
- GNUSim8085 (http://is.gd/p5wZ , http://is.gd/p5xK)
- KDE Step (http://is.gd/oci7)
- RTEMS
- Have been involved in Django community, but haven't written any
code yet.

My involvement with Melange:
http://code.google.com/p/soc/source/browse/trunk/AUTHORS - I used to
send patches but I was not very active recently. Thanks to University
coursework.

I have a fair understanding of concepts of Python and have One and
half years of Python experience. I have a fair understanding of Django
and have around 8-10 months of experience. Also I have been using
Google App Engine from 5 months. Since I am already involved with
Melange, I don't have any difficulty reading and understanding its
code and structure,

Since I have been working with FOSS communities I have a good
understanding of FOSS Development methodologies of communicating with
people, using issue tracker at code.google.com, coding and testing.
I have been using code.google.com for one my academic projects.

Lastly I want to express my deep commitment for this project and
Melange in general. I'm fully available this summer without any other
commitments and will be able to tune my day/night rhythm as per my
mentor's requirement and assure a dedicated work of 35-40 hours/week.
Also I will assure that I will continue my commitments with Melange
well after GSoC. If you find any part of this proposal is not clear
please contact me.

Last but not the least, Why GHOP? To be very frank, I like to work
with school children, rather Child prodigies and encourage them to
work on Open Source projects. Doing this will give me an opportunity
to interact with them when GHOP takes place.

Location: Bangalore, India
Timezone: Indian Standard Time (GMT+5:30)

~~~~~~~~~~~~~~~~~~~~~~~~~
Important Links and URLs
~~~~~~~~~~~~~~~~~~~~~~~~~
My Blog: http://madhusudancs.info
My CV : http://www.madhusudancs.info/sites/default/files/madhusudancsCV.pdf
IRC Nick: madrazr Server: irc.freenode.net

comments powered by Disqus