docs: Split development docs intro three pages. Extend roadmap part quite a bit.
This commit is contained in:
parent
8a07155d20
commit
13796b1e42
@ -1,20 +1,11 @@
|
||||
***********
|
||||
Development
|
||||
***********
|
||||
*****************
|
||||
How to contribute
|
||||
*****************
|
||||
|
||||
Development of Mopidy is coordinated through the IRC channel ``#mopidy`` at
|
||||
``irc.freenode.net`` and through `GitHub <http://github.com/>`_.
|
||||
|
||||
|
||||
Scope for the first release
|
||||
===========================
|
||||
|
||||
To limit scope, we will start by implementing an MPD server which only
|
||||
supports Spotify, and not playback of files from disk. We will make Mopidy
|
||||
modular, so we can extend it with other backends in the future, like file
|
||||
playback and other online music services such as Last.fm.
|
||||
|
||||
|
||||
Code style
|
||||
==========
|
||||
|
||||
@ -94,62 +85,3 @@ The documentation at http://www.mopidy.com/docs/ is automatically updated
|
||||
within 10 minutes after a documentation update is pushed to
|
||||
``jodal/mopidy/master`` at GitHub.
|
||||
|
||||
|
||||
Notes on despotify/spytify
|
||||
==========================
|
||||
|
||||
`spytify <http://despotify.svn.sourceforge.net/viewvc/despotify/src/bindings/python/>`_
|
||||
is the Python bindings for the open source `despotify <http://despotify.se/>`_
|
||||
library. It got no documentation to speak of, but a couple of examples are
|
||||
available.
|
||||
|
||||
A list of the issues we currently experience with spytify, both bugs and
|
||||
features we wished was there:
|
||||
|
||||
* r483: Sometimes segfaults when traversing stored playlists, their tracks,
|
||||
artists, and albums. As it is not predictable, it may be a concurrency issue.
|
||||
|
||||
* r503: Segfaults when looking up playlists, both your own lists and other
|
||||
peoples shared lists. To reproduce::
|
||||
|
||||
>>> import spytify
|
||||
>>> s = spytify.Spytify('alice', 'secret')
|
||||
>>> s.lookup('spotify:user:klette:playlist:5rOGYPwwKqbAcVX8bW4k5V')
|
||||
Segmentation fault
|
||||
|
||||
|
||||
Notes on libspotify/libopenspotify/pyspotify
|
||||
============================================
|
||||
|
||||
`pyspotify <http://github.com/winjer/pyspotify/>`_ is the Python bindings for
|
||||
the official Spotify library, libspotify. It got no documentation to speak of,
|
||||
but multiple examples are available.
|
||||
|
||||
A list of the issues we currently experience with pyspotify, both bugs and
|
||||
features we wished was there:
|
||||
|
||||
* None at the moment.
|
||||
|
||||
|
||||
Class instantiation and usage
|
||||
=============================
|
||||
|
||||
The following diagram shows how Mopidy with the despotify backend and ALSA
|
||||
mixer is wired together. The gray nodes are part of external dependencies, and
|
||||
not Mopidy.
|
||||
|
||||
.. digraph:: class_instantiation_and_usage
|
||||
|
||||
"spytify" [ color="gray" ]
|
||||
"despotify" [ color="gray" ]
|
||||
"alsaaudio" [ color="gray" ]
|
||||
"__main__" -> "MpdServer" [ label="create 1" ]
|
||||
"__main__" -> "AlsaMixer" [ label="create 1" ]
|
||||
"__main__" -> "DespotifyBackend" [ label="create 1" ]
|
||||
"MpdServer" -> "MpdSession" [ label="create 1 per client" ]
|
||||
"MpdSession" -> "MpdHandler" [ label="pass MPD requests to" ]
|
||||
"MpdHandler" -> "DespotifyBackend" [ label="use backend API" ]
|
||||
"DespotifyBackend" -> "spytify" [ label="use Python wrapper" ]
|
||||
"spytify" -> "despotify" [ label="use C library" ]
|
||||
"DespotifyBackend" -> "AlsaMixer" [ label="use mixer API" ]
|
||||
"AlsaMixer" -> "alsaaudio" [ label="use Python library" ]
|
||||
10
docs/development/index.rst
Normal file
10
docs/development/index.rst
Normal file
@ -0,0 +1,10 @@
|
||||
***********
|
||||
Development
|
||||
***********
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 3
|
||||
|
||||
roadmap
|
||||
contributing
|
||||
internals
|
||||
68
docs/development/internals.rst
Normal file
68
docs/development/internals.rst
Normal file
@ -0,0 +1,68 @@
|
||||
*********
|
||||
Internals
|
||||
*********
|
||||
|
||||
Some of the following notes and details will hopefully be useful when you start
|
||||
developing on Mopidy, while some may only be useful when you get deeper into
|
||||
specific parts of Mopidy.
|
||||
|
||||
|
||||
Class instantiation and usage
|
||||
=============================
|
||||
|
||||
The following diagram shows how Mopidy with the despotify backend and ALSA
|
||||
mixer is wired together. The gray nodes are part of external dependencies, and
|
||||
not Mopidy.
|
||||
|
||||
.. digraph:: class_instantiation_and_usage
|
||||
|
||||
"spytify" [ color="gray" ]
|
||||
"despotify" [ color="gray" ]
|
||||
"alsaaudio" [ color="gray" ]
|
||||
"__main__" -> "MpdServer" [ label="create 1" ]
|
||||
"__main__" -> "AlsaMixer" [ label="create 1" ]
|
||||
"__main__" -> "DespotifyBackend" [ label="create 1" ]
|
||||
"MpdServer" -> "MpdSession" [ label="create 1 per client" ]
|
||||
"MpdSession" -> "MpdHandler" [ label="pass MPD requests to" ]
|
||||
"MpdHandler" -> "DespotifyBackend" [ label="use backend API" ]
|
||||
"DespotifyBackend" -> "spytify" [ label="use Python wrapper" ]
|
||||
"spytify" -> "despotify" [ label="use C library" ]
|
||||
"DespotifyBackend" -> "AlsaMixer" [ label="use mixer API" ]
|
||||
"AlsaMixer" -> "alsaaudio" [ label="use Python library" ]
|
||||
|
||||
|
||||
Notes on despotify/spytify
|
||||
==========================
|
||||
|
||||
`spytify <http://despotify.svn.sourceforge.net/viewvc/despotify/src/bindings/python/>`_
|
||||
is the Python bindings for the open source `despotify <http://despotify.se/>`_
|
||||
library. It got no documentation to speak of, but a couple of examples are
|
||||
available.
|
||||
|
||||
A list of the issues we currently experience with spytify, both bugs and
|
||||
features we wished was there:
|
||||
|
||||
- r503: Sometimes segfaults when traversing stored playlists, their tracks,
|
||||
artists, and albums. As it is not predictable, it may be a concurrency issue.
|
||||
|
||||
- r503: Segfaults when looking up playlists, both your own lists and other
|
||||
peoples shared lists. To reproduce::
|
||||
|
||||
>>> import spytify
|
||||
>>> s = spytify.Spytify('alice', 'secret')
|
||||
>>> s.lookup('spotify:user:klette:playlist:5rOGYPwwKqbAcVX8bW4k5V')
|
||||
Segmentation fault
|
||||
|
||||
|
||||
Notes on libspotify/pyspotify
|
||||
============================================
|
||||
|
||||
`pyspotify <http://github.com/winjer/pyspotify/>`_ is the Python bindings for
|
||||
the official Spotify library, libspotify. It got no documentation to speak of,
|
||||
but multiple examples are available. Like libspotify, pyspotify's calls are
|
||||
mostly asynchronous.
|
||||
|
||||
A list of the issues we currently experience with pyspotify, both bugs and
|
||||
features we wished was there:
|
||||
|
||||
- None at the moment.
|
||||
53
docs/development/roadmap.rst
Normal file
53
docs/development/roadmap.rst
Normal file
@ -0,0 +1,53 @@
|
||||
*******
|
||||
Roadmap
|
||||
*******
|
||||
|
||||
This is the current roadmap and collection of wild ideas for future Mopidy
|
||||
development.
|
||||
|
||||
|
||||
Scope for the first release
|
||||
===========================
|
||||
|
||||
This was was the plan written down when we started developing Mopidy, and we
|
||||
still keep quite close to it:
|
||||
|
||||
To limit scope, we will start by implementing an MPD server which only
|
||||
supports Spotify, and not playback of files from disk. We will make Mopidy
|
||||
modular, so we can extend it with other backends in the future, like file
|
||||
playback and other online music services such as Last.fm.
|
||||
|
||||
|
||||
Stuff we really want to do, but just not right now
|
||||
==================================================
|
||||
|
||||
- Replace libspotify with `openspotify
|
||||
<http://github.com/noahwilliamsson/openspotify>`_ for the
|
||||
``LibspotifyBackend``.
|
||||
- A backend for playback from local disk. Quite a bit of work on a `gstreamer
|
||||
<http://gstreamer.freedesktop.org/>`_ backend has already been done by Thomas
|
||||
Adamcik.
|
||||
- Support multiple backends at the same time. It would be really nice to have
|
||||
tracks from local disk and Spotify tracks in the same playlist.
|
||||
- Package Mopidy as a `Python package <http://guide.python-distribute.org/>`_.
|
||||
- Get a build server, i.e. `Hudson <http://hudson-ci.org/>`_, up and running
|
||||
which runs our test suite on all relevant platforms (Ubuntu, OS X, etc.) and
|
||||
creates nightly packages (see next items).
|
||||
- Create `Debian packages <http://www.debian.org/doc/maint-guide/>`_ of all our
|
||||
dependencies and Mopidy itself (hosted in our own Debian repo until we get
|
||||
stuff into the various distros) to make Debian/Ubuntu installation a breeze.
|
||||
- Create `Homebrew <http://mxcl.github.com/homebrew/>`_ recipies for all our
|
||||
dependencies and Mopidy itself to make OS X installation a breeze.
|
||||
|
||||
|
||||
Crazy stuff we had to write down somewhere
|
||||
==========================================
|
||||
|
||||
- Add or create a new frontend protocol other than MPD. The MPD protocol got
|
||||
quite a bit of legacy and it is badly documented. The amount of available
|
||||
client implementations is MPD's big win.
|
||||
- Add support for storing (Spotify) music to disk.
|
||||
- Add support for serving the music as an `Icecast <http://www.icecast.org/>`_
|
||||
stream instead of playing it locally.
|
||||
- Integrate with `Squeezebox <http://www.logitechsqueezebox.com/>`_ in some
|
||||
way.
|
||||
@ -7,7 +7,7 @@ Contents
|
||||
:maxdepth: 3
|
||||
|
||||
installation/index
|
||||
development
|
||||
development/index
|
||||
api/index
|
||||
changes
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user