Labs Small Projects: Difference between revisions
| Line 39: | Line 39: | ||
=== Keyhole for Linux === | === Keyhole for Linux === | ||
Mac and Windows versions of Firefox 3 have keyhole-shaped Back and Forward buttons. This project is to bring those to the Linux version, perhaps using canvas to draw the keyhole with the colors specified by gtk-go-back and gtk-go-forward. | Mac and Windows versions of Firefox 3 have keyhole-shaped Back and Forward buttons. This project is to bring those to the Linux version, perhaps using canvas to draw the keyhole with the colors specified by gtk-go-back and gtk-go-forward. Even more difficult would be to do some type of image analysis of gtk-go-back and gtk-go-forward to determine the correct texture and level of reflection. | ||
= Back-end Projects = | = Back-end Projects = | ||
Revision as of 23:49, 12 March 2008
This is a vetted list of small or self-contained labs projects. They are perfect for student projects, or someone who is interested in getting involved with Labs.
Front-end Projects
Navigating backwards and forwards in history via the keyboard can be a frustrating proposition, since you can generally only jump one step at a time, you can't see where you're landing until you get there, and you often have to contend with intermediate pages that make you re-post data you might not want to re-post.
This project is to extend the forward/backward keyboard shortcut to a method of visually showing the users history. Imagine a Timemachine style effect. Or a zoom effect. Or an Alt-Tab effect. Or something entirely new.
Bonus points for extending history to show additional paths taken and then retreated from (an oft-dreamed-about feature that may or may not prove more useful than annoying).
Rich Content Microsummaries
Akin to IE8's new "webslices," this takes Firefox's "microsummaries" feature to the next level by extending it to support rich web content. This project could include a variety of other innovations to microsummaries, including distribution via RSS/Atom feeds and display on tab labels.
Rich Search Results
The goal of the rich results feature is to improve the speed, relevance, and usability of search when used to find a specific piece of information by providing users with a way to go directly to that information when it seems likely, based on the terms they enter into the Firefox search box, that they are looking for something that we can direct them to.
Read Later
Currently, tabs are abused to mean "I want to read this later": You see something interesting and open it in a new tab for later consumption. This causes a proliferation of tabs, and it decreases the usefulness of tabs as a sane way to deal with multiple pages being open. Is there a better way of marking a link as something to read later?
The right-click context menu changes depending on what you right-click on. For example, if you click on text or the background the first option is "Back", but if you click on an image the first option is "View Image", or if some text is selected the first option is "Copy".
For folks who use the context menu for navigation this is annoying, because muscle memory will cause them to hit "View Image" or "Copy" instead of "Back", so not only did they fail to go back, but some unwanted side-effect happens. In those two examples the navigation links are actually completely gone from the menu.
The project is to write a simple extension (little to no configuration) that makes the Back and Forward always be the first two items, no matter what.
Saved Login Autofill
If you have chosen to save a password for a site, Firefox will fill it in next time you visit the site. If you use a different password, it will be properly updated. However, if you use a different login entirely and save it, next time you visit the site nothing will be filled in, with no indication that Firefox knows any logins at all. Only after you type the first character of your username do you get prompted for autocomplete.
One possible solution is to pop down the infobar letting the user know what the available choices are. If designed cleverly, this might also be used to solve another problem: stale logins. These accumulate when you had a saved login and switched to another. Firefox remembers both, and removing the old one breaks workflow (requires you to go into the prefs and search for it, then delete it).
Keyhole for Linux
Mac and Windows versions of Firefox 3 have keyhole-shaped Back and Forward buttons. This project is to bring those to the Linux version, perhaps using canvas to draw the keyhole with the colors specified by gtk-go-back and gtk-go-forward. Even more difficult would be to do some type of image analysis of gtk-go-back and gtk-go-forward to determine the correct texture and level of reflection.
Back-end Projects
Client-Side Database Storage
Implementation of client-side database storage, which is part of the HTML 5 spec (and implemented by Google Gears):
http://www.whatwg.org/specs/web-apps/current-work/#sql
Firefox already comes bundled with SQLite, upon which this API is based. This sets the stage for being able to use web apps in Firefox without the need for a net connection.
Worker Threads
Mirrors the Google Gears feature of native support for worker threads in Firefox.
Weave
I (thunder) don't have a good list of small TODOs for Weave, but here's a start. Once we have project wikis we'll move this there, and we can just link to it from here.
This list is not exhaustive ;)
WebUI
Ability to view bookmarks. Adding bookmarks or otherwise managing them would be nice too. Viewing history would be a plus.
Encryption and decryption in the browser will be quite slow, both RSA and AES are required, the web app will probably need to present progress to the user so they know what's up.
Server Formats / DB Splitting
The server currently has all data from a given engine (bookmarks, history, etc) all in one big blob. This needs to change to multiple files so that we can share different chunks of data with different people.
Another related project is to split up deltas so they are on separate files on the server, with the filenames being the delta version number. Currently they are all in one file, and that means that adding a delta requires downloading all deltas, appending, then uploading all of them again.
UI Work
From design to implementation, we need it all.
OAuth Support
Implement OAuth on the server-side to allow 3rd parties to access your data. This involves creating a registration system for 3rd parties, implementing the OAuth spec (probably in python/django), and creating some basic landing pages for it all to work.
Thunderbird Port
Thunderbird trunk would be easiest. Chris has some starter code here already, but there's a lot to do, and interesting projects to build on top, sharing data between TB and Fx.
Mobile Devices
Any project here would be great to see. It can be web-based, and through a separate service that talks to Weave using the 3rd-party API (e.g., OAuth), then transcodes to make content easy to consume on the phone.
NSS Support
Not sure I'd wish this upon anyone, but it is work that remains to be done. We are using openssl at the moment.
Additional Data-Type Support
Dictionaries, sessions (or just open tabs if that's too hard), installed extensions, preferences, ...