Summer Coding 2010 proposal - Four Seasons of Code

About your project
1. The project is titled 'Four Seasons of Code'

2. Does your project come from an idea on the Summer Coding 2010 ideas page? If so, provide a link for reference, as well as a link to any discussions with mentors about your proposal.

Yes, this project comes from the ideas page. This is a link to the specific page.

3. Describe your project in 10-20 sentences. What are you making? Who are you making it for, and why do they need it? What technologies (programming languages, etc.) will you be using?

The project is for the Fedora community, and is aimed at automating the process of mentoring and easing the process of collaboration between the students and the mentors during the Fedora Summer of Coding. Currently, the process of is tightly not controlled. For example, the administrator of the program cannot automatically stop application submission after the deadline. The wiki format does not strictly enforce access control, and once the students are accepted, there is no strictly defined process for assigning tasks to students, deadlines, mail reminders etc.

All the above mentioned and several other features are automated in the project. Thus, I am hopeful that in the next edition of Summer of Coding, all users will have a very pleasant experience with respect to the application/collaboration process.

I will be using Ruby on Rails for making this project.

4. What is the timeline for development of your project? The Fedora Summer Coding work period is 11 weeks long, May 24 - August 9; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it's good to have a plan at the beginning so you have an idea of where you're headed.) Note that you should probably plan to have something "working and 90% done" by the midterm evaluation (July 5-12); the last steps always take longer than you think, and we will consider canceling projects that are not mostly working by then.


 * If your project development progresses differently so there is not 90% functionality by the mid-term, you must be in regular contact with your mentor about this. Your mentor must not be surprised about the state of your project when the mid-term comes.
 * If you are not progressed this far in mid-term, you must have a plan with your mentor to fix the situation.

The majority of the work is planned to be done before the mid-term evaluation deadline. Initially the development would be accompanied by concurrent Unit Testing. Later in the summer, the project would be open to the community to test and provide feedback.

Week 1 : June 1 - June 6 1. Work on Mail Reminders 1.1 Send automatic reminders when task delivery deadlines approach. 1.2 Allow mentor to send customized manual reminders. Week 2 : June 7 - June 13 1. Work on the Task Journal functionality 1.1 Associate a journal with each atomic task, so that the mentor is aware with the progress. 1.2 Allow student to add/update/delete journal entries. 1.3 Allow mentor to comment on journal entries.

Week 3 : June 14 - June 20 1. Allow admin to configure the mode (Year-round mode / Summer-coding mode). With specific deadlines with regards to ideas, proposal submission, beginning of coding, end of coding, etc. This is to be done in the admin panel. 2. Work on Project / User Dashboards 2.1 Enforce deadlines as specified by the administrator. 2.2 In User Dashboard, show pending tasks, and integrate associated functionality like journals, reminders etc. with the same. 2.3 In Project Dashboard, list accepted students and respective mentors. 2.4 Allow mentors to sign-off once all the tasks have been done. 3. Scrub up code, and discuss the work done till now with mentor. 4. Make ammends as necessary.

Week 4 : June 21 - June 27 1. Complete the work in the Admin Panel 1.1 Look up the status of individual projects 1.2 Generate Certificate of Participation for projects which have been signed-off by mentors. 2. Work on Project Calendar 2.1 Show approaching deadlines. 2.2 Allow mentor to add events. 3. Discuss work done with mentor, and corrections (if any) made.

Week 5 : June 28 - July 4 1. Work on integration with FAS. 2. Fine tuning features 3. Implement minor functionalities. Clean up code if necessary.

Week 6 : July 5 - July 11 1. Work on integration with code repository.

Week 7 : July 12 - July 18 1. Begin to composing documentation 2. Prepare tutorials for Admin, Students and Mentors. 3. Discuss the project with the community, and implement any changes if required. 4. Buffer period for any unforeseen delays. Week 8 : July 19 - July 25 1. Iron out rough edges in the code. 2. Fixing bugs if any. 3. Buffer period for any unforeseen delays. Week 9 : July 26 - Aug 1 1. Final testing of system. Beta testing with community. 2. Fix bugs if any.

Week 10 : Aug 2 - Aug 8 1. Scrub code and documentation 2. Fix bugs if any.

5. Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.

I liked this project and immediately started working on it. In fact, I have contributed two new features to the project already. The first one is the 'Discuss' section on the project page and the second is the 'Mailer' utility. The features have been approved by the mentor and have been merged with the master branch. You can see my fork of the project here.

I believe I am familiar with the code written so far, and would be able to take it ahead from here.

You and the community
1. If your project is successfully completed, what will its impact be on the Fedora community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Fedora community, at least one of whom should be a Fedora Summer Coding mentor. Provide email contact information for non-Summer Coding mentors.

My Answer (Gaurav Menghani):

As I look at it, the Fedora Community is looking forward to conducting the Summer of Coding again. I believe, to conduct the event of such a scale in a smooth fashion, the project would be a great boon. As I mentioned, currently, the wiki format of the event does not provide ample features for the mentor-student connect, nor does it allow the administrator centrally control things like proposal submission etc. Neither there is an access control over important documents like proposals, which should not be accessible to other students.

The project's features are essential for conducting such a program in a controlled fashion. With the growth of Summer of Coding programs in the coming days, I feel this would become a necessity.

Mentor's Answer (Shreyank Gupta):

Summer Coding as a program needs a better structure and tooling in order to be administered efficiently. Four Seasons of Code aims to provide that structure. It will enable better student mentor collaboration, right from the stage of Project Ideas to Mentor's sign-off.

FSoC, if completed successfully, would like to replace the infrastructure for Fedora Summer Coding.

Non Mentor's Answer (Sankarshan ):

I'd like to state first up that I don't expect the FSoC cycle to actually lead to a very feature-rich product. Having said that my expectations from the FSoC cycle of participation is that it will lead to a release that is an usable product and, it will help evolve this into a project that has active contribution. A project like this that provides the project management framework is generic enough to be used by a large spectrum of users - academic institutions desiring to undertake semester end projects, FOSS projects willing to do an interim SoC kind of effort etc.

I'd love to see this proposal getting accepted. It needs a bit of work, personally, I'd like to see the tasks becoming more atomic with specific milestones and, more importantly, an element of dog-food(ing) could happen too - FSoC being developed and tracked via a being developed FSoC. It sounds like a strange loop, but it is possible to do so.

2. What will you do if you get stuck on your project and your mentor isn't around?

I am active on the IRC channels, as well as Twitter. If stuck, I would first try to search for any possible solutions that exist for my problem on the Internet. If I do not meet with any success, I would like to take help from the Open Source community through IRC / Twitter etc. Also, some of my friends also have experience with web development, and I could leverage their expertise too.

3. In addition to the required blogging minimum of twice per week, how do you propose to keep the community informed of your progress and any problems or questions you might have over the course of the project?

I am active on Twitter and IRC. I would keep the community informed through those media.

Miscellaneous
1. We want to make sure that you are prepared before the project starts


 * Can you set up an appropriate development environment? Yes, I have done that.
 * Have you met your proposed mentor and members of the associated community? Yes, I have had discussions with the mentor several times.

2. What is your t-shirt size?

Medium

3. Describe a great learning experience you had as a child.

Coincidentally, it also pertains to Computer Science. As a student of fourth standard, my school's computer lab had computers that ran on MS-DOS, and only one computer had Windows 95. One day, we had to sit in the computer lab for a few hours for some work. I got done with my work soon, and started tinkering with the computers with the limited knowledge of DOS that I had. I saw programs written in BASIC by students of fifth and sixth standards in a directory. We were hardly taught a few elementary concepts of BASIC then. But I was amazed by what those programs did and started playing with the code. Soon, I was completely captivated and started writing programs involving simple text animation etc. In a couple of days, I had completed the entire syllabus of BASIC of fifth and sixth standards by myself.

4. Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?

I would say that I am quite passionate about this project, and as I said, have already made some progress. Given an opportunity, I will give it my best.