Roadmap

This is currently just a dump of most of the things I've got in my head, and could do with some debate and revision. There's no real order here.

Tipping systems

Artist management tools

Already possible to edit some artist details and add new albums, should be extended to add:

  • Ability to register a new artist. [DONE]
  • Possibility to claim management of an existing artist (may require manual approval, e.g. e-mail from an official address or similar). [DONE]
  • Uploading music - Initially this could just be a form that allows artists to link to a file on archive.org, eventually it should upload to archive.org for them. The upload script needs to perform checks on the file before accepting it though, only ogg vorbis is acceptable for streaming urls and only vorbis or flac is okay for download urls. We should probably decide on a maximum vorbis bitrate (e.g. 192kbps). (basic implementation)

Online import from last.fm

  • Click a button and have Libre.fm pull in all your last.fm scrobbles itself (also possibly loved/banned tracks).

Scrobbling 2.0

  • Needs some thought:
  • Initially it could potentially just act as a proxy sending stuff on to gnukebox via curl, this results in some unnecessary overhead but avoids duplicating code between gnukebox and nixtape?
  • Would be nice to get rid of gnukebox altogether at some point (e.g. when most clients have shifted to 2.0), so a full implementation in nixtape would be good for that.

Gnukebox cleanup:

If we don't get rid of gnukebox we should at least clean it up:

  • Most of the code doesn't match coding guidelines.
  • Little in the way of comments.
  • Some bugs in the handling of long artist/album/track names.
  • Might be good to fail silently if its just a single track going wrong (but still log it), so that scrobblers don't get stopped by one bad track and then stop working (as far as the user is concerned).

OpenID Login

  • For the main website.
  • For webservices auth.

Make webservices login page prettier

  • Use a smarty template and our css to make it look nice and consistent.
  • Brief explanation of what libre.fm is for people who have been sent there by a client and don't know what's going on.
  • Link to registration.

GNU Social integration

Personally I'm not interested in a Social based rewrite, I'd rather see us allowing users to connect their Libre.fm account to a Social account on another system and we pull in their friends, groups, etc. (and push back info to social as well).

  • Pull in FOAF data from social (and optionally other services).
  • Write a libre.fm plugin for social so people can display their libre.fm stats on their social page.
  • Make this all automatic if they login via OpenID with a social account.

Make html5 player prettier

  • Beg someone with artistic skills to do a few design mock-ups (Pablo?)

News/podcast integration

General comment system

  • Make it so that users can comment on artist pages, track pages, news pages, podcast pages, etc.

Identi.ca/twitter hashtag integration for artists

  • Allow artists to display what people are saying about them on their artist page.

Events

  • Artists should be able to schedule events.
  • Users who have loved that artist and are nearby get those events recommended to them.
  • Show which of your friends are going, etc. (needs social integration)

Better stats pages

  • Use something like jqplot to draw pretty graphs. [DONE]
  • Stats for artists as well as users (e.g. how many people listened each month, etc.).
  • Make it so that users can see their stats for a specific day.

Selective deletion of scrobbles

  • Make it easy for users to delete individual scrobbles from their history.

Small improvements for Libre Droid

  • Add a screen displaying the GPL.
  • Show the song length and amount played.
  • Translation support. [DONE]

Widget for Libre Droid.

  • To appear on the Android home screen showing song details and a couple of small buttons for controlling it.

Maybe some sort of karma system?

Users could receive karma for doing nice/useful stuff like:

  • Listening to free artists
  • Tagging artists
  • Tipping artists

Documentation

  • Installation guide for nixtape
  • Some webservice API info (mostly we can just point at last.fm's api docs, but we should say what we do/don't support and what differences there are between us).
  • Improve documentation coverage in the code, nixtape is pretty well covered for its main objects but some functions still need docs, gnukebox lacks much in the way of documentation altogether.
  • Generate some html docs from the code and upload them to help new developers.
  • An overview of the architecture would be helpful for new developers too.

More webservice methods

  • In general just keep plugging away at the list here: http://www.last.fm/api
  • Some require other core functionality to be added first though (like Social integration for friends based features, or Events support for event features).

Sort out "meeja" + libre.fm repo [DONE]

  • Some content currently in the meeja directory should be shifted to the librefm repository. [DONE]
  • Missing images need to be placed in the librefm repository. [DONE]
  • Fix some CSS and image links in the librefm templates that are hardcoded. [DONE]

Better scrobble sanitisation

  • Reject the various versions of "Unnamed artist/album/track"
  • Strip out any URLs from submissions
  • Artist merging

Privacy options

  • Should profile be visible to anyone
  • How much data is allowed to be retrieved via API
  • etc.

Integration with audio production software

  • Create web-service methods to allow artists to publish their songs directly from their audio editors.
  • Write an example plugin for Jokosher.