GSoC Application Review

Myriam Schweingruber myriam at kde.org
Mon Apr 29 12:20:52 UTC 2013


Hi Anmol,

Thank you for your proposal.

Just one remark about your availability: June 4 to June 17 is almost 2
weeks you will not be available, and according to your time-line you
have quite some stuff planed for that time:

June 31  - July 6  :  Write QtScriptObject for Querymaker and
Bookmarks. Add accessor for QueryMaker to Collections object

July 7  - July 13 : Podcast Management. Synchronization Jobs.

July 14  - July 20 :  Dynamic playlists and automatic playlist generators

You might want to adjust your timel-ine accordingly.


Regards, Myriam



On Sat, Apr 27, 2013 at 1:21 PM, Anmol Ahuja <darthcodus at gmail.com> wrote:
>
> Short description : My proposal aims at revamping the Amarok scripting interface, and adding an intuitive Script Creator graphical application allowing easy script creation by non-coders and coders alike. This involves getting rid of dangerous and obsolete methods, and adding accessors for all the new features added to Amarok over the years. Every major type will have a QtScript object representation, allowing unparalleled scripting flexibility. I also plan on writing unit tests to allow automated testing of the Amarok scripting API. The third part involves documentation of the entire scripting API in-source and automating the generation of Amarok Scripting API documentation from the in-source documentation. All of this will lead to a cleaner and more feature rich well-documented scripting API hopefully generating new interest in Amarok script. Other features I plan to work upon, if time permits, are allowing users to terminate long running or stuck scripts instead of forcing a restart, adding GUI handling to the script creation utility and porting popular Amarok 1.4 scripts, if possible, to the newer QtScript based interface.
>
>
> Name : Anmol Ahuja
>
> Email Address : darthcodus at gmail.com
>
> Freenode IRC Nick : darthcodus
>
> IM Service and Username :  Google Talk - darthcodus
>
> Location (City, Country and/or Time Zone) : New Delhi, India ( GMT +5:30 )
>
>
> Proposal Title :
>
> Revamping Amarok’s Scripting Interface
>
>
> Motivation for Proposal:
>
> Amarok has a thriving scripting community, but the existing scripting API is:
>
> Undocumented
>
> Currently, Amarok script functions must be documented manually on the wiki, and the documentation in its current state only includes only names of Global objects and methods, with no description or example to clarify their purpose or usage. [BR 313283]
>
> Untested
>
> No tests for Amarok’s scripting interface exist as of this writing
>
> Unreliable
>
> Inconsistent signals [BR 299218]
>
> Incomplete
>
> No scripting interface for new features added to Amarok over the years, like saved playlists and playlist object, CollectionManager, Dynamic Playlists, etc.
>
> Dangerous
>
> Allows direct access to the underlying SQL database
>
> Obsolete
>
> Uses deprecated methods and calls, for instance, the Collection methods called in AmarokCollectionScript.
>
>
> Implementation Details:
>
>
> My proposal involves four main parts :
>
>
> Part I : Revamping the Scripting API
>
>
> Clean up existing scripting API and add accessors for the other Amarok features to the Amarok scripting API ( I will be documenting code as I write it ) :
>
> Add global CollectionManager object
>
> Remove AmarokCollectionScript and re-implement as QScriptObject
>
> Remove direct SQL access
>
> CollectionLocation
>
> Transcoding
>
> QueryMaker
>
> Playlists
>
> Dynamic Playlists
>
> Automatic Playlist Generator
>
> Bookmarks
>
> Implement Equalizer support in the AmarokEngineScript
>
> Synchronization Job
>
> Podcast Management
>
> Others
>
> Add suspend inhibition to AmarokScript
>
> TagMatchEditWidget access
>
> Add other requested features/ wishes and fix bugs
>
> Bug 213376 - Implement setter for Amarok.Engine.currentTrack().imageURL
>
> Bug 183497 - Scripting API to add a context menu to everything representing a song or file
>
> Bug 187957 - Create submenus from the Scripting interface
>
> Bug 176663 - Installing a new script requires a restart of amarok
>
> Bug 23271: - Provide scripting interface to customize collection display (filter, sort, group, displayed tags, etc.)
>
> Bug 205509 : Add dbus functions to update podcasts and download podcast tracks
>
>
> Others ( Covered earlier/ later ):
>
> Bug 299218 - Amarok script API track signals are unreliable, undocumented ( Covered by Step 3 )
>
> Bug 150610 - Add Dynamic Playlist API for scripts
>
> Bug 279701 - Scripting support for the equalizer
>
> Bug 243096 - Load a saved playlist in database from script
>
>
> Add new scripts demonstrating the new scripting API ( and adding cool new features )
>
> A generic full-fledged synchronization framework like iTunes written in Amarok Script for media devices
>
> Link to Google Music Search for currently playing artist (also Bug 136502)
>
> Automatic adjust equalizer according to genre (also Bug 129374)
>
>
> Part II : Design a graphical Script Creator utility
>
> Create a user-friendly script creation GUI allowing everybody, coders and non-coders alike to write scripts for Amarok. The utility will be generic enough to allow easy porting to other KDE apps.
>
>
> Part III : Automated Testing Scripts
>
> Write scripts for unit-testing the scripting interface. Look into existing solutions like QSTestLib ( http://blog.qt.digia.com/blog/2007/11/05/unit-testing-with-qt-script/ ) to see if they’re viable for
>
>
> Part IV: Automating Documentation
>
> Document any undocumented scripting API code
>
> Use Doxygen for generating the wiki Scripting API Documentation content from in source documentation. [Or should I write my own scripts for that?]
>
>
> Others ( if time permits, can be continued after GSoC )
>
> Add GUI Handling to the Script Creator utility
>
> Add support for handling  GUIs  to the Script Creator utility. GUIs can be made
>
> in QtCreator and the .ui files loaded in script. The Script Creator  will allow
>
> handling UI elements both for input and output.
>
> Allow abortion of long running scripts
>
> The scripting engine is blocking, and poorly written scripts freeze the UI. Popup a dialog box (popup delay user configurable) allowing users to terminate long running scripts.
>
> Port popular Amarok 1.4 scripts to the newer QtScript based scripting API if possible, and more scripts!
>
>
> Tentative Timeline:
>
> May 27 - May 30 : Familiarize myself with members of the Amarok team. Discuss  proposal with team-members and fine-tune implementation details based on the feedback.
>
> May 31 - June 5 : Finalize all implementation details and the work plan, resolving any ambiguities.
>
> June 6 - June 17 : Unavailable due to my exams
>
> June 17 - June 23 : Work on cleaning up existing API,  implement CollectionManager and write QtScriptObject accessor for for Collections and CollectionLocations
>
> June 24 - June 30 : Implement file copying and moving among CollectionLocations, with script configurable transcoding support
>
> June 31  - July 6  :  Write QtScriptObject for Querymaker and Bookmarks. Add accessor for QueryMaker to Collections object
>
> July 7  - July 13 : Podcast Management. Synchronization Jobs.
>
> July 14  - July 20 :  Dynamic playlists and automatic playlist generators
>
> July 21 - July 27 : Other requested features and bug-fixes
>
> July 27 - July 31 : Other features, like suspend inhibition and TagMatchEditWidget access.
>
> <--------August 2----------> Midterm Evaluations Deadline
>
> August 3  - August 9 : Write the new scripts
>
> August 10 - August 16 : Design a UI for Amarok Script Creator
>
> August 17  - August 23 : Write code for Script Creator
>
> August 24  - August 30 : Test script creator, add new features based on community feedback
>
> <----- All components of the scripting interface ready at this point----->
>
> August 31  -  September 9 : Write unit tests for the Amarok scripting interface
>
> September 10 - September 16 : Write missing documentation, set up automatic documentation generation
>
> <-----September 16-----> Suggested Pencils Down
>
> September 17   - September 23  : (Buffer Time)  Finish any pending tasks, implement miscellaneous features (GUI handling in Script Creator, abortion of long running scripts, porting Amarok 1.4 scripts)
>
> <----- September 23----->Firm Pencils Down
>
> September 23 and on - tweaking, bug fixing, polishing interface based on community feedback
>
>
> About Me:
>
> I’m Anmol, a 20 year old engineering student studying Computer Science and Engineering in New Delhi, India.
>
>
> I  was introduced to KDE by my college senior Rishab (spacetime) as a solution to my session management problem, and I was hooked. Being an avid music fan, I was naturally drawn to Amarok as my music player of choice, and eventually the first  open source project I decided to contribute to.
>
>
> The Amarok community has been very welcoming, especially Matěj (strohel) and Myriam (Mamarok), guiding me through my open source journey, and it’s been a lot of fun  working with them. Even more exciting has been adding features from my wishlist to Amarok myself and watching them being accepted upstream, knowing they’ll eventually reach the entire Amarok user-base [ waiting for 2.8 ;) ].
>
>
> I am a rapid learner and a proficient C++ developer, it being the first language I started coding in four years ago in high school. I have worked in several other languages over the years, including Python, Java, Javascript and Dart . I have made some projects in college, and an Android app B’Wished (now defunct), and have been an active member of the Amarok community.
>
>
> After GSoC, I will continue contributing to Amarok as I have been, and hopefully contribute to some other KDE software too!
>
>
> My contributions to Amarok include the following patches:
>
>
> Contributions to Amarok:
>
>
> Description
>
> Reviewboard Link
>
> Commit
>
> Added power management options to Amarok-
>
> allow pausing playback on suspend and inhibiting automatic suspend if playing
>
> https://git.reviewboard.kde.org/r/109846/
>
> 71e55e7bdd9b31642d09145a5801777c0e120454
>
> Added  fine-tuning transcode control options while copying and moving tracks
>
> https://git.reviewboard.kde.org/r/109781/
>
> e84b44ebbb6c470af1272852ba8afd258aa858d0
>
> Added tooltips describing why a track doesn’t play
>
> https://git.reviewboard.kde.org/r/109817/
>
> 0b1391318ae98c5f077b301ccb76a23b7efd1c3f
>
> Handle Data CDs in Amarok
>
> https://git.reviewboard.kde.org/r/109752/
>
> 6dd3e1e190118dd079c7c414a44f22eaecffc5d5
>
> Added 3 different seek options to Amarok
>
> https://git.reviewboard.kde.org/r/108964/
>
> 265696b694559e09cad34f4b5e06077b92f91dce
>
> SIGNAL SLOT Normalization patch
>
> https://git.reviewboard.kde.org/r/109794/
>
> 7a72f13d7f57e83efdae66b5078b7f1aa0131b2d
>
> Added a prepareToQuit() signal to amarokWindowScript
>
> https://git.reviewboard.kde.org/r/109695/
>
> b0c79900429e8987c018112f875e09e565126408
>
>
>
> Other Obligations:
>
> I have my current semester’s final exams from June 4 to June 17, during which I will unavailable. I have no other obligations for the rest of my summer vacations and will be fully available for my GSoC work.
>
>
>
> _______________________________________________
> Amarok-devel mailing list
> Amarok-devel at kde.org
> https://mail.kde.org/mailman/listinfo/amarok-devel
>



--
Proud member of the Amarok and KDE Community
Protect your freedom and join the Fellowship of FSFE:
http://www.fsfe.org
Please don't send me proprietary file formats,
use ISO standard ODF instead (ISO/IEC 26300)


More information about the Amarok-devel mailing list