> Have you contacted an XMMS2 mentor (use IRC or soc2...@xmms.se) and
discussed the project already?

Yes.

> Have you read and understood the rules and requirements?

Link Broken. I don't think there will be any clashes though! :)

> Just write a small introduction to yourself.

I'm a 20 year old guy who likes drinking coffee, listening to music and
writing code, not just because all these things rock but also because he
can do all of them at the same time. I use Vim and run StumpWM.

> State your preferred email address.

san...@playingwithpointers.com

> State your IRC nickname.

sanjoyd (or sanjoyd_ sometimes).

> What are you studying, subject, level and school?

I'm doing an integrated MS in Mathematics and Computing in the Indian
Institute of Technology, Kharagpur. I am in my second year now and I
will graduate in 2013.

> Have you developed software in a team environment before? (As opposed
to hacking on something on your own)

I've developed an application for the Google Android platform with
another developer working on the Ruby based back-end. Other than that,
no.

> Are you already involved with any open source development? If yes,
please describe the project and the scope of your involvement.

I've patched MonoDevelop and the Mono runtime. I'm currently working on
a QtScript based plugin framework (which I eventually plan to use to
implement the XMMS2 client).

> Have you participated to the Google Summer of Code before? As a mentor
or a student?

No.

> Describe what you consider your three main shortcomings (relevant to
GSoC) and how you cope with them.

1. I used to over-engineer at times. These days I tend to cancel this
    out by applying the YAGNI principle as much as possible.

2. Though I've worked on a few small user facing applications     
    (http://github.com/sanjoy/Xants-Simulator-Log-Player-Qt4 for 
    instance), I'm not terribly experienced in designing user
    interfaces. This is taken care of in two ways:
     * My proposal proposal essentially revolves in providing an 
       infrastructure on which user interfaces may be written easily 
       and dynamically. While I will design a basic user interface, the 
       dynamic nature of the (proposed) infrastructure will ensure that
       the UI can easily be changed or extended if need be.
     * Notwithstanding the above point, I will read up extensively on 
       the best practices in UI design to bring myself up to speed 
       before the actual coding session starts.

3. I sometimes tend to get lost in the details - this directly 
    pertains from the perfectionism inherent in me. This can be 
    taken care of by me not losing track of the big picture and at least
    semi-rigidly sticking to the timeline.

> Describe what you consider your three main strengths (relevant to
GSoC) and how they show in previous projects of yours. 

While I don't like self-appraisal; mainly because I like my code to
speak for itself and also because I think it is difficult to list one's
strengths without going overboard, here is a list of three strengths I
thought would be relevant.

1. I learn fast - I had no idea of the QtScript module (and only a
    little idea of Qt) till started working on Boom (the Qt plugin
    project) and bootstrapped the project in a total work of eight
    hours, complete with a QtTestLib (again something I had know
    pre-knowledge of) test framework.

2. I write clean and well documented code - Though I am no one to judge
    myself, I suggest you check out http://github.com/sanjoy/Boom and 
    decide for yourself.

3. I'm a good software architect - This is, again, evident from the 
    above link.


> Please describe the project and the scope.

I plan to create an ultimately extensible XMMS2 client which essentially
operates through QtScript based plugins. These plugins provide most of
the user-facing functionality the client has to offer.

The final deliverables shall look like the following:

   i. The ability to connect to the Xmms2 server and perform all the
      IPC using libxmmsclient++

  ii. A very basic GUI with demarcations (possibly using QPanels) which
      divide it into  areas responsible for hosting various parts of 
      the application, like the Collection Browser, maybe the media
      info, or maybe the player controls.
   
 iii. Various extension points which plugins can hook onto. We provide 
      the GUI elements (like the QPanel, in the above case) as global
      objects or arguments to the relevant plugins. Since the scripts
      have access to the entire Qt library, the scripts may build up
      the UI in whichever way they want. By segregating the UI elements
      (say, by assigning one QCanvas to the visualization plugin and one
      QPanel to the lyrics plugin), we can segregate the plugins in a
      neat modular way. Possibly an infrastructure which allows auto 
      installation and updating of the plugins.

  iv. A default set up consisting of basic, high quality plugins which
      provide essential functionality and possibly a _little_ more.

> Why did you choose this project?

My interest writing and maintaining the official client specifically
comes from the 'scratching your own itch' idiom. Despite the
me finding Xmms2 a fantastic music player, I have not come around to
using it due to the lack of a decent client. I wish to change all that.
The whole inspiration behind writing a plugin based client is that while
it allows regular click-to-run users to stick to the defaults, it also
allows people like me, who like changing every little bit about how they
work _and_ how they play, to configure their ultimately extensible
client to be what they had only dreamt of.

> Include a timeline for your work on the project

I will work out a timeline as soon as all the details are finalized
(sometime in the 2 days).

 > Include as much technical detail about your implementation as you can

The client shall loosely revolve around a plugin architecture I'm
currently developing called Boom. While a very basic, proof of concept,
version should be ready within 3 days, some of the more advanced stuff
in Boom (like automatic updating and installation of plugins etc.) will
be developed as a part of the GSoC.

Here is the 'docs/Architecture' file from http://github.com/sanjoy/Boom

"""""

ARCHITECTURE

        Sanjoy Das <san...@playingwithpointers.com>

A lot of the core architectural idioms have been lifted from the
(awesome) Mono addin framework.

The entire plugin architecture revolves around the concept of extension
points. An extension point is a virtual path where a plugin 'hooks
onto'. Multiple plugins may register or hook onto the same the extension
point(s).

For instance, a path might be something like '/network/broadcaster' and
we might have two plugins 'LANBroadcaster' and 'HTTPBroadcaster' hooked
onto the same extension point. The core application may, then, query the
plugin framework and figure out the plugins registered onto the specific
extension point. It is then up to the core to decide what kind of
services it wishes to extract from each of the plugins and whether to
use them at all.

The plugins are essentially ECMA Scripts which have the entire Qt
library available to them. Furthermore, the application may make some
additional API available to it by creating QObjects and adding them to
the globals.

The Qt API shall be make available to the plugins using
qtscriptgenerator, a Qt Labs project
(http://qt.gitorious.org/qt-labs/qtscriptgenerator).

To allow true extensibility, one to-be-conceptualized feature is to
allow plugins to have their own extension points.

This is very much a work in progress and as such these specification are
to change from time to time.

"""""

So, for instance, in the client application, we might have an extension
point named '/xmms2/visualization' where all the visualization plugins
hook onto. We provide a global object named 'visualizationWindow' and
plugins do something like the following in their initializing function:

function initialize () {
        visualizationWindow.reDraw.connect (function (canvas) {
                // ... 
                canvas.drawLine ( ... );
                // ...
        }
}

Please have a look at Architecture.png (attached) for a visual
representation.

 > What do you expect to gain from this project?

The awesome feeling one gets when he sees someone using his software and
points out that he helped make it possible. The more awesome feeling one
gets when himself using software he wrote.

 > What would make you stay in the xmms2-community after the conclusion
of SOC? 

Essentially maintaining the developed client, both by writing new
plugins, maintaining old ones, keeping the code in sync with Qt. The
above point still applies.

 > Are you familiar with any of the following tools?
    + git
       Yes, my preferred version control system.
    + waf 
       Enough to compile XMMS2. Unless it is a major problem, I plan to 
       use qmake.

 > Which tools do you normally use for development? Why do you use them?

Vim / GCC / GDB. I work on a Debian (Testing) amd64 system. In case
testing in M$ windows becomes necessary, I've a Virtual installation of
the same.

 > What development model would you use?

I generally practice defensive programming. I first bootstrap the
project by writing a few core modules and then I immediately write unit
tests for the same. Then I keep iterating over this again and again. I
also tend to use a lot ASSERT macros - especially where I'm making
(seemingly obvious) assumptions - I like getting a clean abort rather
than a dirty segfault.

 > What programming languages are you fluent in?

C, C++, Java, C#. I know enough python for most purposes, though I will
not call myself fluent.

 > What spoken languages are you fluent in?

English, Hindi, Bengali.

 > At what hours are you awake (please specify in UTC)

0530 hours to 2130 hours generally. This won't be a problem during the
actual GSoC session - I can shift as required.

 > Would you mind talking with your mentor on telephone / internet
phone?

No.

 > Will you be available full summer, or do you still have
lectures/exams/whatever when GSoC starts?

No.

 > Are you planning on some vacation (when you won't be coding on GSoC
project) during the summer? 

No vacation as such. I might have to take a day or two off if I travel
back home - but such a gap will occur only twice (at most four days of
no work) and I will inform well in advance.

-- 
Regards,

Sanjoy Das
http://playingwithpointers.com
http://playingwithpointers.com/custom/public_key.txt

Attachment: signature.asc
Description: This is a digitally signed message part

--
_______________________________________________
Xmms2-devel mailing list
Xmms2-devel@lists.xmms.se
http://lists.xmms.se/cgi-bin/mailman/listinfo/xmms2-devel

Reply via email to