For a year-long capstone project in computer science, I have to do some 'original research.' I'm still not entirely sure what this entails, but it just struck me that perhaps I can do research and simultaneously help the only open source project I truly believe in. 

Are there any open problems in TeX or LaTeX that I could attempt to solve over the course of a year?

If possible, one problem per answer. (Note you can still post multiple answers.)

---

To clarify, I'm *not* looking for ideas that would make cool packages per se. I'm not looking to add some neat package on CTAN; that isn't nearly fundamental enough. I'm not even looking for high-scale programming project either; those are things you can just truck through (with the possible exception of a BibLaTeX style editor; I understand that's a doosie). I'm looking for problems that

* have (or need) a clear definition of the problem
* are fundamentally applicable to the *core* of TeX's typesetting (To clarify, I'm not *expecting* to re-code TeX for this, but it's not out of the question. The 'rivers' problem may have to lead to this, whoever does it.)
* are within the scope of an undergraduate/graduate final year. (I go to a weird school; we have some pretty amazing research going on at the undergraduate level. See [the project's official specification](http://www.smcm.edu/mathcs/student-resources/smps/), keeping in mind that each department has its own spin.)

---

I ended up going with 're-evaluating and improving Knuth-Plass for modern hardware' as my proposal, and my adviser was enthusiastic about it (at least upon realizing I wasn't wanting to extend the *language* of TeX). So I began my research and, lo and behold, it's [already been looked at](http://bowman.infotech.monash.edu.au/~pmoulder/line-breaking/holkner-multiobjective-linebreaking-paper.pdf)! (This isn't surprising, but it's definitely depressing.) Perhaps this algorithm could be implemented in one of the newer TeX engines, but that is beyond the scope of CS research. (For example, it could be applied to avoid rivers and stacks, to improve pagination, etc.) Thanks for all of your suggestions!