On Fri, Feb 28, 2014 at 01:57:03PM -0500, Shiqi Zheng
wrote:> Can I pick multiple project ideas?
I'm not completely sure what your asking exactly, so I'll try to be
clear.
You can submit multiple independent proposals to us based on different
ideas (of which we would select at most one). However, we'd definitely
recommend discussing with us before doing this - writing a good proposal
takes significant effort, so you might be better just picking one of
the projects to focus on, and we can help advise you about that.
If you're trying to cover your bases a bit, a second proposal to another
org is probably a better option. I'd suggest more than two is probably
unwise though - you are more likely to get selected by sending in one or
two high quality proposals than five you've had to rush through to get
them all done.
You can also submit a proposal combining multiple projects ideas (or
parts from them). You can also focus on areas that interest you, and
add in extra parts, maybe drop some others, or come up with your own
idea completely. The main thing is the project needs to be something
we can feasibly mentor you on, appropriate to what Xapian is or aims to
be, and fit the timescale of GSoC, taking into account your skills and
experience.
To emphasise that last part, it's key to remember you need to be able to
realistically complete the proposed project in about 3 months of full
time work. Unless the project is explicitly an experimental one, we'll
be aiming to get code merged into the main tree as each part is ready,
which means making sure there are automated tests and appropriate
documentation, getting it reviewed, responding to feedback, etc. That
all takes time.
Some of the project ideas are smaller in scope, and likely to not fill
the GSoC coding period, especially for a more experienced coder. In
such cases, we'd certainly encourage you to expand the scope of your
proposal. For example, someone working on improving the Java bindings
might consider working on the C# bindings (especially as SWIG's support
for the two languages has a lot in common).
> How is "solid c++" defined, will one-semester long course be
> sufficient?
For the "Learning to Rank" project, one of the key aims for a project
this year is consolidating what we already have, making it ready for
people to actually use. Because of this we're ideally looking for
someone who has a good feel for how to best accomplish things in C++
and has (or can easily gain) an understanding of the sort of issues
that are going to come up (e.g. why you'd pass complex objects by
reference instead of value, why returning a std::map<> is probably
not a good design, what O(n) notation is, the need to consider object
ownership and lifetimes, at least a basic grasp of pointers).
As mentors, we are here to help you, and we don't expect you'll know
everything you need to know before you start the project, but it's not
really feasible for us to guide every single decision, and I think a
student working on this project needs to be able to look at the existing
code, understand roughly what's going on, and have an idea what's good
and what's bad about it. If you're a fast learner and we only have to
explain each thing once, that helps a lot.
If you have programmed a lot in other languages before a one-semester
C++ course, then you'll probably be fine. If that's all the programming
you've done, I suspect it would be a struggle.
The skills and difficulties listed on the project ideas page are
inevitably somewhat subjective - the idea is to try and give students at
least some guidance as to which project ideas they might reasonably be
able to tackle.
Cheers,
Olly