Convert most http: links to https:
[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 [[!toc]]
18
19 ## "add me to this list" button
20
21 If I'm a webmaster for some group with an announcement list, it would be
22 really nifty if I could add some HTML code to my page to create a button
23 that, if someone clicks it, would use MIT certificates to find their
24 username and automatically add them to a list. This isn't particularly
25 difficult; you'll need to get a keytab (essentially, an account in
26 Kerberos / Moira) for the website, and write a script to set that keytab
27 as the list's "membership ACL" and a webapp to use that capability to
28 add or remove people from the list.
29
30 [adehnert notes 2013-02-24: More recently, WebMoira has been redone, and might more conveniently support this. It might be possible to directly integrate with WebMoira, or you might conclude that WebMoira is already good enough.]
31
32 _Contact: geofft_
33
34
35 ## debdiffs of Debathena packages
36
37 We have [a webpage](https://debathena.mit.edu/package-list/proposed) to
38 list all Debathena packages in the ["proposed"
39 repository](https://debathena.mit.edu/experimental#proposed), i.e., things
40 we just changed and are waiting a few days for testing before pushing to
41 the clusters, etc. However, that page gives you no information on what
42 the change was. A very useful addition would be to use the `debdiff`
43 tool to link to the changelog and code changes for each new package.
44
45 _Contact: broder, debathena_
46
47 ## Better Trac-email integration
48
49 A bunch of SIPB projects use [Trac](https://trac.edgewall.org/) as a bug
50 tracker. The current email adapter we use [isn't very
51 clever](https://debathena.mit.edu/trac/ticket/308); it'll send
52 out each update to a ticket with a generic subject line, so it doesn't
53 easily indicate whether the bug was resolved or someone just commented
54 on it. It also doesn't know how to receive e-mail, so we can't reply to
55 the e-mails it generates and have our comments go back into the bug
56 tracker, and we can't [make bugs@mit.edu create Trac
57 tickets](https://debathena.mit.edu/trac/ticket/216). There are one or two
58 alleged plugins to do this, but they create a new ticket on every
59 e-mail, rather than doing something intelligent with replies; a better
60 plugin in both directions would be extremely helpful.
61
62 _Contact: debathena, geofft, broder_
63
64 ## PulseAudio support for the office sound system
65
66 There's a server in the SIPB office that you can "print" MP3 files to,
67 and they will get played one by one. A significantly more modern
68 interface to this would be to make a
69 [PulseAudio](http://www.pulseaudio.org/wiki/AboutPulseAudio) server out of the
70 computer hooked up to our sound system; this lets computers running
71 PulseAudio (notably, most recent desktop Linux distributions, but
72 Windows computers that install Pulse as well) route their sound to the
73 office speakers.
74
75 _Contact: geofft_
76
77 ## Cluster and printer viewer for the iPhone
78
79 You might have seen the xcluster displays (in the SIPB office, near the
80 four building 11 quickstations, and in the building 12 cluster) that
81 show you which clusters aren't in use and which printers aren't hosed.
82 This would be immensely more useful as an iPhone application.
83
84 _Contact: ccpost_
85
86 ## Snapshotted virtual machines for all popular Linux distributions
87
88 A common need for people writing Linux software is to check that their
89 software works on many popular distributions (Red Hat, SuSE, Debian,
90 Ubuntu, Xandros, etc. etc.), and on multiple versions of these
91 distributions. The qemu system emulator, and its virtualization cousin
92 kvm, support image snapshots and a fairly lightweight process for
93 running virtual machines, so you could set up an Athena locker with a
94 few commands that give you a temporary copy of a Linux system for a
95 particular distro and version that runs inside your terminal.
96
97 _Contact: geofft_
98
99 ## Efficient disk snapshot support
100
101 The previous project and a lot of other work could be made significantly
102 more efficient by rethinking the design decisions in qemu's snapshot
103 support. If this is the kind of thing that interests you...
104
105 _Contact: nelhage_
106
107 ## SIPB PostgreSQL server
108
109 A lot of people prefer Postgres to MySQL, so having a community Postgres
110 server akin to [sql.mit.edu](http://sql.mit.edu/), with similar access
111 control, could be a useful project. You could set it up on
112 [XVM](http://xvm.mit.edu/) with an eye to redoing the configuration on a
113 scripts-hosted VM at some future point.
114
115 This could easily become a bigger project, integrated with scripts'
116 autoinstallers, etc., depending on ambition. Or it can just be a
117 standalone server for people who want access to a Postgres database, but
118 don't want to set up and maintain a server on their own.
119
120 _Contact: mitchb, geofft_
121
122 ## Rewriting "add", "attach", etc. for Debathena
123
124 Athena used to have a system _liblocker_ for managing the /mit
125 directories and attaching and detaching links to networked filesystems.
126 Debathena and Macathena come with an automounter for /mit, so links
127 automatically appear when you use them, and nobdy cares much about
128 detaching them, but we still use most of the complexity of liblocker
129 because we haven't gotten around to cleaning it up. There's a [design
130 proposal](https://debathena.mit.edu/trac/wiki/FixingLiblocker) on the
131 Debathena bug tracker listing what should be a better implementation.
132
133 _Contact: broder, debathena_
134
135 ## [Checking scripts.mit.edu servers for consistency](https://scripts.mit.edu/trac/ticket/84)
136
137 Now that we have five or six web servers (I've lost count), it's
138 become entirely too easy to change something on one or some but not
139 all of the servers. We often test changes, like newer versions of
140 packages or tweaked configuration, in place on one of the servers, but
141 we'd like something to remind us if we don't copy these changes to all
142 the other servers. This involves checking packages (RPM, perl, etc.) as
143 well as config files in /etc and possibly other things like LDAP config.
144
145 I've also been told by multiple people that
146 [Puppet](http://reductivelabs.com/products/puppet) or some other
147 configuration mangement framework is the Right Answer here. We looked at
148 Puppet and a bunch of others last summer and concluded none fit our
149 workflow well, but we could re-evaluate that.
150
151 *Note:* mitchb has begun working on this. Coordinate with him if you'd like to
152 work on this project.
153
154 _Contact: geofft, scripts-team_
155
156 ## SIPB Library
157
158 SIPB has a bunch of books in its library. It'd be nice if a list of
159 the library books also existed online in some sort of sane, searchable
160 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. Check out <https://sipb.mit.edu/library/> for the current state of the catalog.
161
162 _Contact: zhangc, fawkes_
163
164 ## Improve the Setup and UI for new users of Zephyr
165
166 Currently, it is a pain to get someone else set up using zephyr
167 within screen on Linerva with automatically-renewing tickets.
168 We should write scripts to set them up so that that all they
169 have to do is enter a command or click an icon, type their kerberos
170 password, and then know how to use BarnOwl.
171
172 _Contact: afarrell_
173
174 ## Build a web client providing full control to the user
175
176 Create a web browser extension (or possibly a stand-alone browser) that is "web-developer antagonistic".  It essentially takes full advantage of the
177 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
178 transaction can be completely fiddled with.
179
180 There are several extensions that allow you to do stuff sort of like
181 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.
182
183 _Contact: leonidg_
184
185 ## Improve git with shared checkouts
186
187 Around SIPB we're kind of [big](https://sipb.mit.edu/iap/git/) [fans](https://web.mit.edu/cluedumps/slides/understanding-git-2008.pdf) [of](https://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.
188
189 One idea might be using FUSE to present a separate checkout to each person using the directory.
190
191 _Contact: broder_
192
193 ## Scripts Pony Improvements
194
195 [Scripts Pony](https://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.
196
197 See [the project TODO file](https://web.mit.edu/pony/TODO) for more ideas.
198
199 _Contact: xavid_
200
201 ## A zephyr log viewer
202
203 Many SIPB-affiliated people use the [Zephyr](http://zephyr.1ts.org/) messaging system, and the [BarnOwl](https://barnowl.mit.edu/) client for it in particular. BarnOwl has a number of very nice features that make it easy to follow large amounts of zephyr traffic: search, color coding, auto-narrowing, etc. BarnOwl can also store logs of zephyrs sent and received for future reference, but the logs are saved separated by class in a way that's quite annoying to navigate sometimes. A BarnOwl-like interface (perhaps implemented as a BarnOwl plugin) for viewing zephyr logs would be a great thing to have.
204
205 _Contact: oremanj_
206
207 ## Multiple views in BarnOwl
208
209 [BarnOwl](https://barnowl.mit.edu/) nominally has views support. However, it consists of verifying that the view name is "main" and returning an error otherwise. It would be nice to maintain multiple sets of view state at once. This would involve figuring out semantics, moving some data structures around, adding the new functionality, designing some interface, and probably much testing for subtle bugs.
210
211 _Contact: davidben_
212
213 ## Etherpad
214
215 [Etherpad](http://etherpad.com/) is an awesome tool for online collaborative text editing. It's recently been open-sourced; set up a Java servlet container on XVM, make it work, and then start adding cool MIT features like, oh, the ability to edit daemon.etherpad-writable files in AFS, login with certs and see all your files, and print to Athena printers. Or add cool non-MIT features such as an Emacs client (possibly proxying [Infinote](http://gobby.0x539.de/trac/wiki/Infinote/Protocol), which appears to have some F/OSS implementations already), or integration with [codepad](http://codepad.org/) or [gists](https://gist.github.com/).
216
217 *Note:* tvald has set up [etherpad.mit.edu](http://etherpad.mit.edu/).
218 Coordinate with him if you'd like to get features into etherpad.mit.edu.
219
220 _Contact: geofft_
221
222 ## RFC pretty-printing
223
224 I think every RFC website I know of just puts the entire RFC plain text in a &lt;pre&gt; tag. It should be possible to parse out the headers and footers every "page", make section headings into useful ones, and reflow the non-diagram text in a proportional font, which would make RFCs more readable.
225
226 _Contact: geofft_
227
228 ## scripts.mit.edu file upload form
229
230 Really, it should not be as hard as it is to make a website where people can upload files too big for e-mail to your locker. Either find a good, simple, PHP or Python or something file upload app, or write a (relatively small) one of your own and a scripts autoinstaller.
231
232 _Contact: geofft_
233
234 ## fakechrooted distros in AFS
235
236 Thanks to the deeply disturbing magic of a couple of programs named fakeroot and fakechroot, you can without root privileges enter a "chroot" of an operating system and look at how things work in it. Create some appropriate chroots for popular Linux distros in a locker and appropriate wrapper scripts.
237
238 _Contact: geofft, broder_
239
240 ## A couple of C/C++ hacking projects
241
242 * Each AFS cell has its own database of users and groups. If you run `ls`, it will look up users and groups against the local machine's conception of users and groups, so if you take a stock Linux etc. machine and look at most any AFS cell, you'll get a bunch of unhelpful numbers. Make an interface that stands a decent chance of being merged into upstream `ls` to permit it to call `pts examine` (or, rather, the AFS library equivalent) against the appropriate servers instead of `getpwnam` etc. on AFS files. See also [Debathena Trac #300](https://debathena.mit.edu/trac/ticket/300).
243 * OpenSSH has an option to enable [non-strict acceptor checking](https://www.sxw.org.uk/computing/patches/openssh-patches/strict-acceptor) for Kerberos authentication, so you can ssh to, say, scripts.mit.edu and successfully authenticate despite being load-balanced to a machine that thinks its name is, say, old-faithful.mit.edu. (Specifically a non-strict acceptor lets you authenticate to a machine using any credential in its keytab; a strict acceptor will require that you authenticate to the specific key for the machine's name.) Port the non-strict acceptor option to [Cyrus SASL](http://asg.web.cmu.edu/sasl/) so that scripts.mit.edu can pull the same trick for SVN and LDAP and so forth.
244 * I often find that [sbuild](https://packages.debian.org/stable/sbuild) installs many of the same packages into the "base" chroot; for instance, a bunch of Debathena packages depend on cdbs and config-package-dev. sbuild should have the ability to take advantage a chroot with these packages preinstalled (so long as all the packages in this chroot still are a subset of the build dependencies), and for extra awesome bonus points, look at a repository and suggest what non-base chroots I should create.
245 * [Write a caching NSS module](https://debathena.mit.edu/trac/ticket/486) that will play more nicely with Debathena than nscd (the current solution) does. It will probably end up looking like nss_nonlocal.
246
247 _Contact: mostly geofft_
248
249 ## Binary compatibility between OSes
250
251 Help the cause of OS ecumenism! FreeBSD provides [binary
252 compatibility](https://www.freebsd.org/doc/handbook/linuxemu.html) with
253 Linux operating systems: an add-on module to the kernel knows how to
254 interpret Linux-"personality" programs, just like the base kernel can
255 interpret FreeBSD-"personality" ones, and a standard component in the
256 FreeBSD ports system will install a number of libraries from Fedora 10
257 in /compat/linux.
258
259 However, the number of people who use FreeBSD as their own OS is limited
260 compared to those who use Linux or Mac OS X. Possible projects here
261 include BSD binary compatibility on Linux, or porting FreeBSD's Linux
262 binary compatibility to Mac OS X (which has a bunch of BSD-like parts,
263 but whose core kernel is actually Mach). The latter would allow running
264 Linux locker software on [MacAthena](http://macathena.mit.edu).
265
266 _Contact: geofft, kaduk_
267
268 ## Consolidate and Update Athena documentation
269
270 Athena documentation these days seems somewhat lacking and/or hard-to-find, which should not be the case. Athena is already foreign enough to incoming students, who are more likely to use their laptops than an Athena machine. Help make it easier by consolidating and updating available Athena documentation so that people know here how to use their Public folder, their Private folder, their dotfiles, and so on.
271
272 _Contact: zhangc, kasittig_
273
274 ## Zephyr Client Hints
275
276 Some time ago I wrote [a spec for zephyr client hints](http://geofft.mit.edu/p/zephyr-client-hints.txt), optional extensions that zephyr clients can easily implement to add nifty stuff like typing indicators and [preventing zwgc from starting more than once per user](https://debathena.mit.edu/trac/ticket/206) and such. I got lazy before actually implementing these specs, but I believe they'd be relatively easy extensions to both zwgc and BarnOwl (in their respective extension languages, even &mdash; no changes needed to core).
277
278 _Contact: geofft_
279
280
281 ## Project Waverly
282
283 [Project Waverly](http://waver.ly/) is attempting to rethink collaborative text editing. We are starting a project to do collaborative text (and other
284 stuff) editing right -- clean protocol, reasonable algorithms, good web
285 client, good plugins for desktop text editors, nice API, version control
286 integration, etc. etc.
287
288 _Contact: lizdenys, geofft, maria89_
289
290 ## Your Project Here
291
292 SIPB can help you out in terms of both computing resources and
293 experienced people to bounce ideas off of. If you've got an idea for
294 something cool to advance the state of computing at MIT or just
295 computing in general, [[drop by our office|office]] and say hello.