source: server/lib/TODO @ 15fb0f8

no-cups
Last change on this file since 15fb0f8 was 15fb0f8, checked in by George Silvis, III <george.iii.silvis@…>, 12 years ago

Expanded TODO with information about the potentially-planned transition to MPD

  • Property mode set to 100644
File size: 3.6 KB
Line 
1* This is a scrap todo file while the new IPP server based Gutenbach is
2* being developed.  Once this branch is released and becomes master,
3* items in this file will be merged into the Trac.
4
5- finish implementing a bunch of the IPP handlers
6     [ ] print job
7     [ ] validate job
8     [ ] pause printer
9     [ ] resume printer
10     [ ] set printer attributes
11     [ ] send uri
12     [ ] set job attributes
13     [ ] restart job
14     [ ] promote job
15     [ ] cups get document
16
17- add support in printer.py for:
18     [ ] print job
19     [ ] validate job
20     [ ] pause printer
21     [ ] resume printer
22     [\] set printer attributes
23     [\] send uri
24     [\] set job attributes
25     [X] restart job
26     [\] promote job
27
28- add support in job.py for:
29     [X] restart job
30
31- finish test cases for printer.py
32- write test cases for requests.py
33- write convenience client-side API
34- write test cases for future client API
35- all the documentation
36- deal with all the code marked 'XXX'
37- setuptools entry points for notification system (e.g. zephyr)
38- check test case coverage ( http://nedbatchelder.com/code/coverage/ )
39- deal with queue management/reordering
40- add support for volume management
41- make sure all CUPS commands are compatible
42- rewrite gbr/gbq/etc. scripts to use client API
43- rewrite server-side queue display to use API
44- support authentication/security
45- why doesn't the bug tracker work?! relatedly, figure out a
46  solution that makes it easier for non-MIT developers to contribute
47
48Ponies
49   - gapless playback
50   - display video
51   - youtube
52   - pandora
53   - last.fm
54   - local streaming
55   - generic streaming
56   - zephyr control (e.g. youtube link)
57
58Tickets that should be fixed by this new version:
59   http://gutenbach.mit.edu/ticket/21
60   http://gutenbach.mit.edu/ticket/2
61   http://gutenbach.mit.edu/ticket/7
62   http://gutenbach.mit.edu/ticket/39
63   http://gutenbach.mit.edu/ticket/47
64   http://gutenbach.mit.edu/ticket/48
65   http://gutenbach.mit.edu/ticket/8
66   http://gutenbach.mit.edu/ticket/34
67   http://gutenbach.mit.edu/ticket/38
68   http://gutenbach.mit.edu/ticket/41
69   http://gutenbach.mit.edu/ticket/18
70
71
72
73 === CONSIDERATIONS FOR MPD ===
74
75We are considering using MPD (the Music Player Daemon) for playback, instead
76of mplayer.  This gives us a pony (gapless playback), and makes some other
77things, like keeping track of the queue, much easier.  There is a lot of work
78needed to make this work, though.
79
80THIS ADDS A DEPENDENCY:  python-mpd
81
82We will have to re-implement all the functions in jobs.py, and completely
83re-structure player.py
84
85If we want video playback eventually (and we do), there will be some hackery
86involved.  We will pause mpd playback, do the video playback completely
87separately, and then resume mpd playback.
88
89Some almost-pseudocode:
90
91startup:
92  client = MPDClient()
93  client.connect(**{'host':'/var/run/mpd/socket', 'port':'6600'})
94
95adding a song to the queue:
96  Receive job
97  Put it into a file                    [gutenbach/FILENAME]
98  Tell MPD to add it to the queue       [client.addid('gutenbach/FILENAME')]
99  Find out what the id is
100  Store all the data [including the temporary filename]
101  IF WE ARE SUPPOSED TO BE PLAYING, MAKE SURE WE *ARE* PLAYING
102    In particular, if the queue was empty, start playback   [gutenbach.play()]
103
104when a job completes playing:
105  Remove the file                       [rm gutenbach/FILENAME]
106
107getting the queue:
108  get playlist, parse return            [client.playlistid()]
109
110removing a job:
111  dequeue it                  [client.deleteid('NUMBER')]
112  remove the file
113  tell them what you did
114
115restart song:
116  client.seek(0,1)   [0% through song 1...]
Note: See TracBrowser for help on using the repository browser.