(no commit message)
[wiki.git] / projects / ideas.mdwn
1 [[!meta title="Project Ideas"]]
2
3 A lot of what SIPB does which is not helping users with immediate
4 problems and answering questions falls under the heading of SIPB
5 projects. SIPB projects are usually things that a member or two have
6 decided are worth doing and are working on. The main qualification of
7 SIPB projects is that they help the MIT community or the world at large
8 in some way. In general they also involve computers.
9
10 Here's a list of SIPB project ideas that have been mentioned recently,
11 along with the person who's suggested the project or a team that would
12 be good to contact. Feel free to get in touch if something sounds
13 interesting or you want advice getting started.
14
15 A [[list from 2008-2009|/doc/project-ideas]] may also have some relevant ideas.
16
17 ## "add me to this list" button
18
19 If I'm a webmaster for some group with an announcement list, it would be
20 really nifty if I could add some HTML code to my page to create a button
21 that, if someone clicks it, would use MIT certificates to find their
22 username and automatically add them to a list. This isn't particularly
23 difficult; you'll need to get a keytab (essentially, an account in
24 Kerberos / Moira) for the website, and write a script to set that keytab
25 as the list's "membership ACL" and a webapp to use that capability to
26 add or remove people from the list.
27
28 _Contact: geofft_
29
30 ## debdiffs of Debathena packages
31
32 We have [a webpage](http://debathena.mit.edu/package-list/proposed) to
33 list all Debathena packages in the ["proposed"
34 repository](http://debathena.mit.edu/experimental#proposed), i.e., things
35 we just changed and are waiting a few days for testing before pushing to
36 the clusters, etc. However, that page gives you no information on what
37 the change was. A very useful addition would be to use the `debdiff`
38 tool to link to the changelog and code changes for each new package.
39
40 _Contact: broder, debathena_
41
42 ## Better Trac-email integration
43
44 A bunch of SIPB projects use [Trac](http://trac.edgewall.org/) as a bug
45 tracker. The current email adapter we use [isn't very
46 clever](http://debathena.mit.edu/trac/ticket/308); it'll send
47 out each update to a ticket with a generic subject line, so it doesn't
48 easily indicate whether the bug was resolved or someone just commented
49 on it. It also doesn't know how to receive e-mail, so we can't reply to
50 the e-mails it generates and have our comments go back into the bug
51 tracker, and we can't [make bugs@mit.edu create Trac
52 tickets](http://debathena.mit.edu/trac/ticket/216). There are one or two
53 alleged plugins to do this, but they create a new ticket on every
54 e-mail, rather than doing something intelligent with replies; a better
55 plugin in both directions would be extremely helpful.
56
57 _Contact: debathena, geofft, broder_
58
59 ## PulseAudio support for the office sound system
60
61 There's a server in the SIPB office that you can "print" MP3 files to,
62 and they will get played one by one. A significantly more modern
63 interface to this would be to make a
64 [PulseAudio](http://www.pulseaudio.org/wiki/AboutPulseAudio) server out of the
65 computer hooked up to our sound system; this lets computers running
66 PulseAudio (notably, most recent desktop Linux distributions, but
67 Windows computers that install Pulse as well) route their sound to the
68 office speakers.
69
70 _Contact: geofft_
71
72 ## Cluster and printer viewer for the iPhone
73
74 You might have seen the xcluster displays (in the SIPB office, near the
75 four building 11 quickstations, and in the building 12 cluster) that
76 show you which clusters aren't in use and which printers aren't hosed.
77 This would be immensely more useful as an iPhone application.
78
79 _Contact: ccpost_
80
81 ## Snapshotted virtual machines for all popular Linux distributions
82
83 A common need for people writing Linux software is to check that their
84 software works on many popular distributions (Red Hat, SuSE, Debian,
85 Ubuntu, Xandros, etc. etc.), and on multiple versions of these
86 distributions. The qemu system emulator, and its virtualization cousin
87 kvm, support image snapshots and a fairly lightweight process for
88 running virtual machines, so you could set up an Athena locker with a
89 few commands that give you a temporary copy of a Linux system for a
90 particular distro and version that runs inside your terminal.
91
92 _Contact: geofft_
93
94 ## Efficient disk snapshot support
95
96 The previous project and a lot of other work could be made significantly
97 more efficient by rethinking the design decisions in qemu's snapshot
98 support. If this is the kind of thing that interests you...
99
100 _Contact: nelhage_
101
102 ## SIPB PostgreSQL server
103
104 A lot of people prefer Postgres to MySQL, so having a community Postgres
105 server akin to [sql.mit.edu](http://sql.mit.edu/), with similar access
106 control, could be a useful project. You could set it up on
107 [XVM](http://xvm.mit.edu/) with an eye to redoing the configuration on a
108 scripts-hosted VM at some future point.
109
110 This could easily become a bigger project, integrated with scripts'
111 autoinstallers, etc., depending on ambition. Or it can just be a
112 standalone server for people who want access to a Postgres database, but
113 don't want to set up and maintain a server on their own.
114
115 _Contact: mitchb, geofft_
116
117 ## Rewriting "add", "attach", etc. for Debathena
118
119 Athena used to have a system _liblocker_ for managing the /mit
120 directories and attaching and detaching links to networked filesystems.
121 Debathena and Macathena come with an automounter for /mit, so links
122 automatically appear when you use them, and nobdy cares much about
123 detaching them, but we still use most of the complexity of liblocker
124 because we haven't gotten around to cleaning it up. There's a [design
125 proposal](http://debathena.mit.edu/trac/wiki/FixingLiblocker) on the
126 Debathena bug tracker listing what should be a better implementation.
127
128 _Contact: broder, debathena_
129
130 ## Checking scripts.mit.edu servers for consistency
131
132 Now that we have five or six web servers (I've lost count), it's
133 become entirely too easy to change something on one or some but not
134 all of the servers. We often test changes, like newer versions of
135 packages or tweaked configuration, in place on one of the servers, but
136 we'd like something to remind us if we don't copy these changes to all
137 the other servers. This involves checking packages (RPM, perl, etc.) as
138 well as config files in /etc and possibly other things like LDAP config.
139
140 I've also been told by multiple people that
141 [Puppet](http://reductivelabs.com/products/puppet) or some other
142 configuration mangement framework is the Right Answer here. We looked at
143 Puppet and a bunch of others last summer and concluded none fit our
144 workflow well, but we could re-evaluate that.
145
146 _Contact: geofft, scripts-team_
147
148 We'd like a cron job to automatically tell us if
149 there are RPM packages installed on some but not all of the servers,
150 or if there are changes in /etc, other than hostname and such, that we
151 haven't committed to the scripts Subversion repository.
152
153 ## SIPB Library
154
155 SIPB has a bunch of books in its library. It'd be nice if a list of
156 the library books also existed online in some sort of sane, searchable
157 database. One possible platform is the [Exhibit](http://simile-widgets.org/exhibit/) project (which originates from a collaboration between the Haystack group in CSAIL and the MIT Libraries). This would require mostly just making a spreadsheet of the information.
158
159 _Contact: pbaranay, fawkes_
160
161 ## Improve the Setup and UI for new users of Zephyr
162
163 Currently, it is a pain to get someone else set up using zephyr
164 within screen on Linerva with automatically-renewing tickets.
165 We should write scripts to set them up so that that all they
166 have to do is enter a command or click an icon, type their kerberos
167 password, and then know how to use Barnowl.
168
169 _Contact: afarrell_
170
171 ## MITeX
172
173 Not a fully formed thought, yet, but the basic idea is to have a web app that lets users create a document, and then it texs the document nicely for them, based on some template that they've selected, and gives them a PDF.  They should have the ability to edit the source or just use the WYSIWYG editor.
174
175 _Contact: jhamrick_
176
177 ## Build a web client providing full control to the user
178
179 Create a web browser extension (or possibly a stand-alone browser) that is "web-developer antagonistic".  It essentially takes full advantage of the
180 immense power of a web client, ignoring the wishes of the web developer and server while letting the user take full control.  Every JavaScript event (ideally variable, function, etc.), every rendering decision, every cookie setting, every HTTP request, if the user so desires, etc. is not only made visible but easily changeable.  When making a request, every aspect of the
181 transaction can be completely fiddled with.
182
183 There are several extensions that allow you to do stuff sort of like
184 this (Firebug, Web Developer Toolbar, Chrome's web developer tools).  But they're hard to use and really mostly just debuggers.  Our goal here is to build something that goes out of its way to give you complete control via a nice UI.
185
186 _Contact: leonidg_
187
188 ## Improve git with shared checkouts
189
190 Around SIPB we're kind of [big](http://sipb.mit.edu/iap/git/) [fans](http://web.mit.edu/cluedumps/slides/understanding-git-2008.pdf) [of](http://blog.nelhage.com/2010/01/on-git-and-usability/) [git](http://negativespace.mit.edu/2010/03/08/gitionary-the-graphical-game-of-git-guessing/). But there is an area that git comes up short. We have a lot of common directories where people really just want to edit files in place (instead of wanting to clone/checkout, edit, commit, push...), but git doesn't support that well. It would be cool if there was a way to work with non-bare repositories in shared directories.
191
192 One idea might be using FUSE to present a separate checkout to each person using the directory.
193
194 _Contact: broder_
195
196 ## Scripts Pony Improvements
197
198 [Scripts Pony](http://pony.scripts.mit.edu) is scripts.mit.edu's new hostname management system.  It was just released recently, and has lots of bite-sized improvements remaining to be implemented.  Particularly good ideas include adding the ability to show and edit hostname aliases, checking whether hostname paths exist and giving appropriate feedback, creating a zephyrbot to allow people to approve tickets easily, and adding the ability to check hostnames in Moira automatically.
199
200 See [the project TODO file](http://web.mit.edu/pony/TODO) for more ideas.
201
202 _Contact: xavid_
203
204 ## Bazki
205
206 [Bazki](http://bazki.mit.edu/) is a wiki written in Python designed around several principles: structured data with object-oriented inheritance; using a wiki language with powerful macros that can be compiled into either HTML or PDF (via LaTeX); and making the content editable offline using a VCS.  Bazki works enough to to be useful, but it has lots of room for improvement and probably would benefit from some major design changes.
207
208 _Contact: xavid_
209
210 ## Your Project Here
211
212 SIPB can help you out in terms of both computing resources and
213 experienced people to bounce ideas off of. If you've got an idea for
214 something cool to advance the state of computing at MIT or just
215 computing in general, [[drop by our office|office]] and say hello.