Hi Vivek, and thanks for your interest in the GSoC!
My feedback at this point is that you've been very verbose, but not
especially clear. You've covered a lot of ground here, which shows
you're aware of the broad problems that exist -- but you haven't
really provided enough detail for us to work out if you're on the
right track.
Of course, this is your first post on the topic, so this may have been
intentional -- i.e., use this post as a 'taster' for the broad issues,
which you refine later. However, if you want to get accepted as a SoC
participant, we're going to need to have a very clear idea of what it
is that you're going to implement. History has shown us that students
that begin the SoC with a vague description don't end the SoC with a
completed project.
The suggestion I have made in the past is this: As a proof of concept,
show how you would define Django's existing serialization format using
your definition language. This will be a requirement of the final
deliverable anyway, so you might as well show how it can be done.
Once you've done that, provide a couple of other examples -- showing
both the definition, and the resulting output. The more examples you
provide of specific edge cases, the better we will be able to
understand your proposal.
Yours,
Russ Magee %-)
Here's some advice: If this is what your final plan looks like, I
would expect that your proposal would be rejected. Here's why:
* We prefer projects to have a clear design in mind before
implementation begins. It's ok if refinements happen along the way,
but "investigation" periods (and you have 2 of them) are not something
that should be required. You investigate while you develop your
proposal.
* Testing isn't an activity that can be clearly separated. It's an
integral part of code development. Having a "more tests" activity
indicates you either haven't allocated enough time for testing during
development, or you're trying to pad your timeline.
* Padding with a 3 week cushion gives the impression that you haven't
thought about the effort required. 3 weeks of full time development is
a long time.
* I'm sceptical of any plan that consists of "2 week" estimates.
Again -- a week is a long time. If you can't clearly express what will
be developed, tested and delivered in a week long timeframe, then I
don't think you've thought about the problem hard enough -- at least,
not hard enough for us to recommend that Google give you $4k, and
someone from the project spend many hours mentoring you.
Yours,
Russ Magee %-)
No offence meant here Vivek, but when I'm speccing something out or
reading a spec, if there is a block of work that says 'Implement
<blah>, 1 week', then I know this hasn't been thought out completely,
and that '1 week' could be anything from 45 minutes to 3 months.
The reason why software projects take regularly take longer than
anticipated is often because the design and thought behind the design
was not complete.
Ideally you can start breaking down into discrete tasks, each of which
shouldn't take longer than 4 hours, which is the largest block of time
you should deal with in my experience. Looking at it like that, and
assuming a 40 hour week, and 12 weeks of GSoC, you've got 120 units to
can account for.
Splitting down your project into small chunks will also demonstrate to
people reading your proposal that you understand the subject matter,
and they can have a high confidence of the project being delivered.
Weeks 9-10 made me smile though - no bug fixes allowed in the other weeks? :)
Cheers
Tom