Community:SummerOfCode12: Difference between revisions
No edit summary |
|||
Line 13: | Line 13: | ||
* Read our examples of good applications: [[SummerOfCode/SampleApplications/1|1]], [[SummerOfCode/SampleApplications/2|2]], [[SummerOfCode/SampleApplications/3|3]]. | * Read our examples of good applications: [[SummerOfCode/SampleApplications/1|1]], [[SummerOfCode/SampleApplications/2|2]], [[SummerOfCode/SampleApplications/3|3]]. | ||
* Apply on [http://www.google-melange.com/gsoc/org/google/gsoc2012/mozilla the GSoC site] (note that we have an [[SummerOfCode/ApplicationTemplate|application template]]). | * Apply on [http://www.google-melange.com/gsoc/org/google/gsoc2012/mozilla the GSoC site] (note that we have an [[SummerOfCode/ApplicationTemplate|application template]]). | ||
* It is entirely acceptable to apply for 2 or 3 projects, if more than one catches your eye; if the applications are high quality, that probably improves your chances a little. However, more than that seems like spam. | |||
Questions of any sort? Send mail to [mailto:gerv@mozilla.org Gerv] and/or [mailto:chofmann@mozilla.org chofmann]. We will try and respond as soon as possible and get your questions directed to the right person. Please allow at least 48 hours for a reply. If you want to contact a mentor and contact details are not here, try searching for them in the [http://www.mozillians.org/ Mozilla Community Directory]. | Questions of any sort? Send mail to [mailto:gerv@mozilla.org Gerv] and/or [mailto:chofmann@mozilla.org chofmann]. We will try and respond as soon as possible and get your questions directed to the right person. Please allow at least 48 hours for a reply. If you want to contact a mentor and contact details are not here, try searching for them in the [http://www.mozillians.org/ Mozilla Community Directory]. | ||
Line 27: | Line 28: | ||
|- | |- | ||
|Networking Dashboard | |Networking Dashboard | ||
|Build a UI for insight into Mozilla Networking. This is really both a | |Build a UI for insight into Mozilla Networking. This is really both a Gecko and Firefox project. Show what connections are active, how fast connections have run in the past, what protocols are in use with protocol specific context information (HTTP versions, SPDY, WebSockets), allow management (e.g. shutdown) of particular connections, and even trigger some diagnostic tests. | ||
Skills needed: some | Skills needed: some C++ for core Gecko, some JS and opportunity to use XUL to build the UI - probably as an add-on initially. | ||
| mcmanus | | mcmanus | ||
| mcmanus plus hopefully a ux sponsor | | mcmanus plus hopefully a ux sponsor | ||
| | | | ||
|- | |- | ||
|Improve | |Improve Support for MathML Tabular Expressions | ||
|As you can see on the [https://developer.mozilla.org/en/Mozilla_MathML_Project/Status#Tabular_Math Mozilla MathML Status page], some work needs to be done on Gecko's | |As you can see on the [https://developer.mozilla.org/en/Mozilla_MathML_Project/Status#Tabular_Math Mozilla MathML Status page], some work needs to be done on Gecko's [http://www.w3.org/TR/MathML3/chapter3.html#presm.tabmat tabular math] support. The main goal is to fix {{bug|731667}} by rewriting the implementation of the rowalign, columnalign, rowlines and columnlines attributes. As a next step one could work on the support for rowspacing and columnspacing attributes ({{bug|330964}}). <mlabeledtr> ({{bug|689641}}) and <maligngroup> ({{bug|122253}}) are also other interesting elements to consider. | ||
|Frédéric Wang | |Frédéric Wang | ||
|Frédéric Wang | |Frédéric Wang | ||
|Better tabular support and more specifically support for the <mlabeledtr> element is [http://www.mathjax.org/2012/03/02/news/mathjax-2-0-and-the-default-rendering-in-firefox/ important for the MathJax project]. Removing private _moz- attributes may allow Gecko to pass more test cases from the html5lib test suite. This will hopefully also fix {{bug|491384}}, which has been experimented several times by people who use columnalign to implement LaTeX alignment environments. | |Better tabular support and more specifically support for the <mlabeledtr> element is [http://www.mathjax.org/2012/03/02/news/mathjax-2-0-and-the-default-rendering-in-firefox/ important for the MathJax project]. Removing private _moz- attributes may allow Gecko to pass more test cases from the html5lib test suite. This will hopefully also fix {{bug|491384}}, which has been experimented with several times by people who use columnalign to implement LaTeX alignment environments. | ||
|- | |- | ||
|Implement MathML 3 | |Implement MathML 3 Linebreaking | ||
|MathML 3 comes with an entirely new description of [http://www.w3.org/TR/MathML3/chapter3.html#presm.linebreaking linebreaking] that could greatly improve our linebreaking support in mathematical expressions. A complete implementation may be hard in view of the limited time-frame available, but more modest objectives and incremental steps are proposed in {{bug|534962}}. | |MathML 3 comes with an entirely new description of [http://www.w3.org/TR/MathML3/chapter3.html#presm.linebreaking linebreaking] that could greatly improve our linebreaking support in mathematical expressions. A complete implementation may be hard in view of the limited time-frame available, but more modest objectives and incremental steps are proposed in {{bug|534962}}. | ||
|Frédéric Wang | |Frédéric Wang | ||
Line 57: | Line 58: | ||
! Comments | ! Comments | ||
|- | |- | ||
| Improve Invitation | | Improve Invitation Support | ||
| While Lightning supports invitations, there are still some features that are not supported yet and others that are not quite | | While Lightning supports invitations, there are still some features that are not supported yet and others that are not quite stable. Possible goals for this project include improving the UI to make sure users are not confused and implementing/adapting code to support previously unsupported features of invitations like delegations or counters. Lightning relies on the [http://tools.ietf.org/html/rfc6047 itip/imip] standard for invitations, which is also used by most other calendaring clients and servers, so an interested student should look into these. Related bugs are {{bug|420516}}, {{bug|426532}}, {{bug|445982}}, {{bug|538043}}, {{bug|720263}}, {{bug|624332}}, and {{bug|433848}}. This is not the final list of bugs to be fixed, it is just to give you an idea of what can be done here. A student should specify what they think they can achieve in the time. | ||
Skills Required: XUL, Javascript | Skills Required: XUL, Javascript | ||
Line 66: | Line 66: | ||
| | | | ||
|- | |- | ||
| OS Integration | | Calendar OS Integration | ||
| Lightning | | Lightning needs to improve its integration into the operating system, most importantly on Windows. If you've ever wanted to double-click on an event to open it in Lightning, this project is for you. Note this might be a bit more tricky than it initially sounds, but you will have the chance to contribute to multiple projects, as some parts of this project could possibly be better solved within Thunderbird or even the Mozilla Platform. To get prepared, see the list of [https://bugzilla.mozilla.org/buglist.cgi?product=Calendar&component=OS%20Integration&resolution=---&list_id=2260690 OS Integration bugs], and especially {{bug|352566}}. | ||
Skills Required: Windows API, C/C++, Javascript, possibly XUL. | Skills Required: Windows API, C/C++, Javascript, possibly XUL. | ||
Line 86: | Line 85: | ||
! Comments | ! Comments | ||
|- | |- | ||
| Thunderbird Get Satisfaction | | Thunderbird "Get Satisfaction" Support Dashboard | ||
| Create a real-time Thunderbird support dashboard by implementing i) a REST API to read Thunderbird support data from a MongoDB database ([http://rolandtanglao.com/archives/2011/12/23/mongohq-gs-api-mongopollrb-my-vps-emailreport2rb-cron-awesome-twice-daily blog post on the code that generates the MongoDB Database]) of Thunderbird Get Satisfaction Support topics ii) a JavaScript client that calls the aforementioned API in order to display a real time Thunderbird support dashboard in Firefox - (i.e. [http://blog.xulforum.org/index.php?post/2010/09/02/GetSatisfaction-dashboard-magic port the existing Thunderbird GS Dashboard to the new API]) | | Create a real-time Thunderbird support dashboard by implementing i) a REST API to read Thunderbird support data from a MongoDB database ([http://rolandtanglao.com/archives/2011/12/23/mongohq-gs-api-mongopollrb-my-vps-emailreport2rb-cron-awesome-twice-daily blog post on the code that generates the MongoDB Database]) of Thunderbird Get Satisfaction Support topics ii) a JavaScript client that calls the aforementioned API in order to display a real time Thunderbird support dashboard in Firefox - (i.e. [http://blog.xulforum.org/index.php?post/2010/09/02/GetSatisfaction-dashboard-magic port the existing Thunderbird GS Dashboard to the new API]) | ||
Level of difficulty:easy to medium | |||
Skills needed: JavaScript; Helpful: MongoDB & Information Visualization in the browser using JS and an infoviz toolkit like [http://mbostock.github.com/protovis/ protovis] or [http://mbostock.github.com/d3/ D3] | Level of difficulty: easy to medium | ||
Skills needed: JavaScript; Helpful: MongoDB & Information Visualization in the browser using JS and an infoviz toolkit like [http://mbostock.github.com/protovis/ protovis] or [http://mbostock.github.com/d3/ D3] | |||
| [mailto:rtanglao@mozilla.com rtanglao] | | [mailto:rtanglao@mozilla.com rtanglao] | ||
| Roland Tanglao aka rtanglao | | Roland Tanglao aka rtanglao | ||
| | | | ||
|- | |- | ||
| Get ISPDB | | Get ISPDB Into Production. | ||
| There are a few bugs remaining that the Thunderbird team hasn't had time to fix. It would be nice if we could fix them, and finally get the ISPDB up and running and in use. (If this task was too easy, we could also add in | | [[Thunderbird/ISPDB|The Thunderbird ISPDB]] is an online configuration storage service for email providers. There are a few bugs remaining that the Thunderbird team hasn't had time to fix. It would be nice if we could fix them, and finally get the ISPDB up and running and in use. (If this task was too easy, we could also add in the task of changing Thunderbird to submit working configs to the ISPDB.) | ||
Level of difficulty:easy to medium | Level of difficulty:easy to medium | ||
Skills Needed: Python, Some Django experience helpful. | Skills Needed: Python, Some Django experience helpful. | ||
| [mailto:bwinton@mozilla.com bwinton] | | [mailto:bwinton@mozilla.com bwinton] | ||
Line 105: | Line 105: | ||
|- | |- | ||
| App tabs for Thunderbird | | App tabs for Thunderbird | ||
| Firefox introduced the concept of app tabs - smaller, fixed tabs that contain a web app. We might want to do something similar for Thunderbird, as a foundation for things like: the Home tab, a Chat app tab, etc... | | Firefox introduced the concept of app tabs - smaller, fixed tabs that contain a web app. We might want to do something similar for Thunderbird, as a foundation for things like: the Home tab, a Chat app tab, etc... A student applying for this idea should provide some concrete proposals. | ||
Level of difficulty: medium to hard | Level of difficulty: medium to hard | ||
Skills Needed: Javascript, XUL/XBL, CSS | Skills Needed: Javascript, XUL/XBL, CSS | ||
Line 114: | Line 114: | ||
| | | | ||
|- | |- | ||
|Thunderbird Profile | |Thunderbird Profile Backup or Transfer | ||
| | |Backup and restore of Thunderbird profiles. Should allow users to transfer profiles between machines. Would need to investigate [http://mozbackup.jasnapaka.com/ MozBackup] and figure out how this would be better. Options about which files to backup would be a start. | ||
Level of difficulty: hard | |||
Level of difficulty: hard | |||
Skills required: JS, C++, XPCOM, XUL | |||
|bienvenu | |bienvenu | ||
|bienvenu,standard8 | |bienvenu,standard8 | ||
| | | | ||
|- | |- | ||
|Thunderbird Profile | |Thunderbird Profile Discovery and/or Recovery | ||
|Handle things like profiles.ini getting corrupted on upgrade (e.g., try to find a profile dir and hook it back up to profiles.ini), and perhaps profile repair, when accounts get corrupted. Level of difficulty: medium | |Handle things like profiles.ini getting corrupted on upgrade (e.g., try to find a profile dir and hook it back up to profiles.ini), and perhaps profile repair, when accounts get corrupted. | ||
Level of difficulty: medium | |||
Skills required, JS and/or C++ | |||
|bienvenu | |bienvenu | ||
|bienvenu,standard8 | |bienvenu,standard8 | ||
| This is probably relatively easy, but diagnosing and repairing some of the trickier corruptions might be complicated. | | This is probably relatively easy, but diagnosing and repairing some of the trickier corruptions might be complicated. | ||
|- | |- | ||
|Improve | |Improve Gmail Interoperability | ||
|See | |See {{bug|721316}} for more info. The biggest win here is probably avoiding downloading the same message to offline stores and indexing it multiple times, by using X-GM-MSGID. X-GM-THRID may help with threading in gloda, cross-folder views, and even within a folder. There are probably other things we can do to improve our Gmail integration. For example, we could avoid notifying for multiple new messages just because a message has multiple tags. | ||
Level of | |||
Level of difficulty: medium to hard, depending on how deep we go here. | |||
Skills required: C++. | |||
|bienvenu | |bienvenu | ||
|bienvenu | |bienvenu | ||
Line 135: | Line 142: | ||
|- | |- | ||
| Big File Providers | | Big File Providers | ||
|Add | |Add other [[Features/Thunderbird/BigFiles|big file]] providers (e.g., SFTP, Google Docs, WebDAV (for MS SharePoint!)). Students should say which providers they are aiming to support, and why they chose them. | ||
Level of difficulty | |||
Level of difficulty: medium to hard, depending on the provider API and how well it maps to our provider interface | |||
Skills required: JS | |||
|bienvenu | |bienvenu | ||
| bienvenu, mconley, squib, bwinton | | bienvenu, mconley, squib, bwinton | ||
| | | | ||
|- | |- | ||
|Other | |Implement Other Pluggable Mail Stores | ||
| Add one or more other pluggable stores, e.g.,, sqlite, Unhosted (https://groups.google.com/forum/#!topic/unhosted/gra3dStGjDM)) | | Add one or more other pluggable stores, e.g.,, sqlite, Unhosted (https://groups.google.com/forum/#!topic/unhosted/gra3dStGjDM)) | ||
Level of difficulty | |||
Level of difficulty: hard | |||
Skills required: JS or C++. | |||
| bienvenu | | bienvenu | ||
| bienvenu | | bienvenu | ||
| | | | ||
|- | |- | ||
|Gloda-powered | |Gloda-powered Attachment Browser | ||
| | |This feature allows the navigation through email attachments. Presented in an additional tab, it offers previews of supported email attachments. It allows full view of the attachment by launching the appropriate registered application or can switch to the email in the email view. Filters allow to the display of attachments of a given type, individual or all folders view. Initially, pictures, PDFs, HTML docs, YouTube/DailyMotion videos should be supported. Other attachments types could be added in core or via plugin. Use [http://shane.caraveo.com/2010/05/26/now-i-can-find-that-freaking-attachment/ Shane's extension] as a starting point and figure out how to integrate it into Thunderbird. | ||
Level of difficulty | |||
Level of difficulty: hard. | |||
Skills required: JS, HTML | |||
|bienvenu, jb | |bienvenu, jb | ||
|squib, protz, Shane(?) | |squib, protz, Shane(?) | ||
| | | | ||
|- | |- | ||
|No | |'No Reply' Reminder | ||
|Often you're sending an email and expecting an answer within a certain number of days. This feature will set a reminder to notify you if no answer has been received in between. One possible way of being reminded is to automatically forward the original email to yourself, with an explanation subject/header. Another way can be to set a Lightning event if it is installed. A few good extension provides a similar feature but do not 'watch' for answered email: https://addons.mozilla.org/en-US/thunderbird/addon/remindit and https://addons.mozilla.org/en-US/thunderbird/addon/follow-up | |Often you're sending an email and expecting an answer within a certain number of days. This feature will set a reminder to notify you if no answer has been received in between. One possible way of being reminded is to automatically forward the original email to yourself, with an explanation subject/header. Another way can be to set a Lightning event if it is installed. A few good extension provides a similar feature but do not 'watch' for answered email: https://addons.mozilla.org/en-US/thunderbird/addon/remindit and https://addons.mozilla.org/en-US/thunderbird/addon/follow-up | ||
Level of difficulty: medium | |||
Level of difficulty: medium? | |||
|jb | |jb | ||
|protz(?), jb | |protz(?), jb | ||
| | | | ||
|- | |- | ||
|Configure Android | |System to Configure Android Email Client with Account Settings from Thunderbird | ||
|f you want to email other than | |f you want to use email other than Gmail on Android, you have to go through the pain of setting the stock email client with IMAP/POP3 settings, ports, user names, passwords, and other reply & compose settings. This feature would allow you to automatically set your Android device email application with the right parameters. It could take the form of an Android Thunderbird application, or some other more direct parameter settings via device policy infrastructure. Technical investigation would need to be done. | ||
Technical investigation to be done | |||
|jb | |jb | ||
|jb? | |jb? | ||
| | | | ||
|- | |- | ||
| | |URL Preview within Thunderbird | ||
|Many emails contain links to a single web page. The default TB behaviour | |Many emails contain links to a single web page. The default TB behaviour is to launch the stock browser to view them. This feature allows direct preview in a Thunderbird tab through ctrl-click, or direct inline preview for known content (e.g.: Youtube...). See {{bug|661742}}. | ||
Level of difficulty: medium (easy if initial groundworks is available) | |||
Level of difficulty: medium (easy if initial groundworks is available) | |||
|jb | |jb | ||
|mconley | |mconley | ||
| | | | ||
|- | |- | ||
|Compose | |Compose In A Tab | ||
|One way to move the compose window into a tab is to load the | |One way to move the compose window into a tab is to load the Compose window document into a XUL iframe (which is like an HTML iframe, except it hosts XUL). To test this out, install the [https://addons.mozilla.org/en-US/firefox/addon/extension-developer/ Developer Assistant] extension for Thunderbird, then go to Tools -> Extension Developer -> JavaScript Shell and run the following code: | ||
<pre width=70>enumerateWindows(); | <pre width=70>enumerateWindows(); | ||
Line 187: | Line 199: | ||
Then try playing around with it, sending a message, etc. As you can see, the basic concept works, but there are currently issues with the UI. Your job will be to sort them out, make everything work properly, and ship your code as part of Thunderbird. | Then try playing around with it, sending a message, etc. As you can see, the basic concept works, but there are currently issues with the UI. Your job will be to sort them out, make everything work properly, and ship your code as part of Thunderbird. | ||
Easier way: Tools -> Error | Easier way: Tools -> Error Console, then | ||
<pre width=70>top.opener.openTab("chromeTab", {chromePage: "chrome://messenger/content/messengercompose/messengercompose.xul"});</pre> | <pre width=70>top.opener.openTab("chromeTab", {chromePage: "chrome://messenger/content/messengercompose/messengercompose.xul"});</pre> | ||
Level of difficulty: hard. | Level of difficulty: hard. | ||
Skills needed: will require writing XUL (menus will probably need to be moved out into an [https://developer.mozilla.org/en/XUL_Overlays overlay]), JavaScript (passing [https://developer.mozilla.org/en/XUL_Tutorial/Commands menu commands] down to the child iframe) and CSS (to fix theming issues) and writing unit tests to ensure that things work as expected. Since Mac OS X has a global menu, getting it right might require more work. ''You will need access to a Mac for your proposal to be accepted.''. | |||
|sid0 | |sid0 | ||
|sid0, mconley, protz | |sid0, mconley, protz | ||
|- | |- | ||
| Investigate Alternate Composition Window | |||
| We still want to overhaul the composition window. Most of the hard work was done already in compose (https://addons.mozilla.org/en-US/developers/addon/compose-for-thunderbird ) or Conversations (https://mail.mozilla.org/pipermail/tb-planning/2012-February/001547.html ). A motivated student could explore a new UI for the composition window, and consider integrating an external editor such as [http://aloha-editor.org/ aloha]. | |||
| Investigate | |||
| We still want to overhaul the composition window. Most of the hard work was done already in compose (https://addons.mozilla.org/en-US/developers/addon/compose-for-thunderbird ) or Conversations (https://mail.mozilla.org/pipermail/tb-planning/2012-February/001547.html ). A motivated student could explore a new UI for the composition window, and consider integrating an external editor such as aloha. | |||
Level of difficulty: hard | Level of difficulty: hard | ||
Skills needed: JavaScript; HTML (no XUL) | Skills needed: JavaScript; HTML (no XUL) | ||
Line 211: | Line 217: | ||
| | | | ||
|- | |- | ||
| Investigate | | Investigate Designing a Home Tab | ||
| Outlook has a home tab, i.e. some sort of dashboard that gives you all the relevant information at a glance. We could do something similar in Thunderbird: | | Outlook has a home tab, i.e. some sort of dashboard that gives you all the relevant information at a glance. We could do something similar in Thunderbird: | ||
* unread mail, | * unread mail, | ||
Line 218: | Line 224: | ||
* a couple icons to open websites in new tabs (for, say, google contacts or twitter), | * a couple icons to open websites in new tabs (for, say, google contacts or twitter), | ||
* to-do list, etc. | * to-do list, etc. | ||
Level of difficulty: hard | Level of difficulty: hard | ||
Skills needed: JavaScript; HTML (no XUL) | Skills needed: JavaScript; HTML (no XUL) | ||
Line 235: | Line 242: | ||
! Comments | ! Comments | ||
|- | |- | ||
| Shell Service | | Shell Service on A Non-Windows Platform | ||
| The Mozilla Suite only supported a shell service on Windows, and SeaMonkey has inherited that limitation. Both Firefox and Thunderbird support the shell service on other platforms, so it is technically feasible to implement the shell service for SeaMonkey on those platforms too. | | The Mozilla Suite only supported a shell service on Windows, and SeaMonkey has inherited that limitation. Both Firefox and Thunderbird support the shell service on other platforms, so it is technically feasible to implement the shell service for SeaMonkey on those platforms too. | ||
Line 244: | Line 251: | ||
|- | |- | ||
| Messenger Bookmarks | | Messenger Bookmarks | ||
| | | SeaMonkey MailNews provides access not only to mail, but also to NNTP news and even to RSS feeds, and maybe others in future as well. It would be quite useful to be able to bookmark specific news items for later use, e.g. specific postings of a discussion, etc. | ||
This should include full usual bookmark handling for those URLs, including sidebar support. | This should include full usual bookmark handling for those URLs, including sidebar support. | ||
Line 262: | Line 269: | ||
| We provide the ability to create and use message views for pre-filtering which messages to show in the thread pane. We don't have a comparable feature yet in the folder pane... | | We provide the ability to create and use message views for pre-filtering which messages to show in the thread pane. We don't have a comparable feature yet in the folder pane... | ||
While this would basically mean | While this would basically mean porting Thunderbird's {{bug|251296}}, the UI should be more in sync with the SeaMonkey look and feel, e.g. columns for unread count, size, etc; a drop down menu for switching views; allow custom folder views; ... | ||
Skills needed: JS, XUL; maybe C++. | Skills needed: JS, XUL; maybe C++. | ||
Line 269: | Line 276: | ||
| | | | ||
|- | |- | ||
|Score- | |Score-Based Filtering | ||
|You can filter on quite some terms, but you can't weigh them. A scoring system will allow a much finer control, eg. it would be just a property score with a range of maybe 1..1000, along with some new conditions | |You can filter on quite some terms, but you can't weigh them. A scoring system will allow a much finer control, eg. it would be just a property score with a range of maybe 1..1000, along with some new conditions | ||
[is ] | [is ] | ||
Line 291: | Line 298: | ||
| | | | ||
|- | |- | ||
| All HTML5 Tags | | Show All HTML5 Tags | ||
| The SeaMonkey Composer does not show HTML5 tags in its "All Tags" mode, instead they appear with an unknown tag indicator. It would be nice for the actual tag names to display. Skills needed: CSS; some graphical ability. | | The SeaMonkey Composer does not show HTML5 tags in its "All Tags" mode, instead they appear with an unknown tag indicator. It would be nice for the actual tag names to display. | ||
Skills needed: CSS; some graphical ability. | |||
| Neil | | Neil | ||
| Neil, possibly IanN | | Neil, possibly IanN | ||
Line 298: | Line 307: | ||
|- | |- | ||
| HTML5 Editing | | HTML5 Editing | ||
| The SeaMonkey Composer does not know how to edit HTML5 tags, except via its generic Advanced Editor. Skills needed: Some HTML5 tags can be supported by adding a XUL/JS dialog, but some may need additional C++ code. | | The SeaMonkey Composer does not know how to edit HTML5 tags, except via its generic Advanced Editor. Skills needed: Some HTML5 tags can be supported by adding a XUL/JS dialog, but some may need additional C++ code. Students should specify which tags they plan to implement. | ||
| Neil | | Neil | ||
| Neil, possibly IanN | | Neil, possibly IanN | ||
Line 314: | Line 323: | ||
! Comments | ! Comments | ||
|- | |- | ||
| | |SVG Reference Examples | ||
|The [https://developer.mozilla.org/en/SVG SVG Reference] needs examples! Lots of examples! We need live samples for all the various SVG elements and attributes, examples for how to do cool stuff with SVG in the DOM, etc. The goal would be to have in-line, live SVG samples, with the code and an explanation of how the code works, for every SVG element and attribute. | |The [https://developer.mozilla.org/en/SVG SVG Reference] needs examples! Lots of examples! We need live samples for all the various SVG elements and attributes, examples for how to do cool stuff with SVG in the DOM, etc. The goal would be to have in-line, live SVG samples, with the code and an explanation of how the code works, for every SVG element and attribute. | ||
Line 322: | Line 331: | ||
|Also talk to Jeremie Patonnier about helping with mentoring. | |Also talk to Jeremie Patonnier about helping with mentoring. | ||
|- | |- | ||
| | |HTML and CSS Reference Examples | ||
|The HTML and CSS references on MDN need examples. While there are some here and there, someone needs to go through and ensure that every HTML element has good examples that cover a variety of use cases and interesting capabilities, and that every CSS property has good coverage as well. These would include live examples with the code and an explanation of how it works. | |The HTML and CSS references on MDN need examples. While there are some here and there, someone needs to go through and ensure that every HTML element has good examples that cover a variety of use cases and interesting capabilities, and that every CSS property has good coverage as well. These would include live examples with the code and an explanation of how it works. | ||
Line 330: | Line 339: | ||
| | | | ||
|- | |- | ||
|Add jsFiddle | |Add jsFiddle Integration to Kuma | ||
|The new Kuma wiki | |The new Kuma wiki which powers the Mozilla Developer Network needs to have good integration with jsFiddle for easily creating examples then editing, experimenting with, and embedding them into documentation. Should be able to view the source and live output, then experiment with the code in real time (either in place or, perhaps preferably, in a new window). | ||
Skills needed: JavaScript, HTML, CSS, Python. Django framework familiarity a big plus. | Skills needed: JavaScript, HTML, CSS, Python. Django framework familiarity a big plus. | ||
Line 350: | Line 359: | ||
|- | |- | ||
| Slide Drive Improvements | | Slide Drive Improvements | ||
| Slide Drive (https://github.com/dseif/slide-drive) combines the deck.js HTML5 slideshow package with Popcorn.js. It was originally developed for Software Carpentry, but would be useful to many other people who want to move off PowerPoint and recorded video. Many enhancements are possible, the most important being accessibility support. | | Slide Drive is a slide show system which (https://github.com/dseif/slide-drive) combines the deck.js HTML5 slideshow package with Popcorn.js. It was originally developed for Software Carpentry, but would be useful to many other people who want to move off PowerPoint and recorded video. Many enhancements are possible, the most important being accessibility support. Students should contact the mentor and then propose specific improvements. | ||
| [mailto:greg@mozillafoundation.org greg] | | [mailto:greg@mozillafoundation.org greg] | ||
| greg | | greg | ||
Line 366: | Line 375: | ||
! Comments | ! Comments | ||
|- | |- | ||
| Tryserver | | Tryserver Automation Improvements | ||
| We currently have a trychooser syntax which allows developers to customize what they'd like to test their patch with (out of over 200 build & test options) - this syntax can use some improvements to allow for even more granular control and also needs a web-driven interface as well as logic that would let users specify a repo (mozilla-hosted), a custom test package, and much more. Bugs include [https://bugzilla.mozilla.org/show_bug.cgi?id=try_enhancements try_enhancement tracking] and most importantly {{bug|625463}} | | The tryserver is Mozilla's system for doing test builds on every platform, even ones you don't have access to. We currently have a 'trychooser' command syntax which allows developers to customize what they'd like to test their patch with (out of over 200 build & test options) - this syntax can use some improvements to allow for even more granular control and also needs a web-driven interface as well as logic that would let users specify a repo (mozilla-hosted), a custom test package, and much more. Bugs include [https://bugzilla.mozilla.org/show_bug.cgi?id=try_enhancements try_enhancement tracking] and most importantly {{bug|625463}} | ||
Useful skills: some webdev and Python programming experience | |||
| [mailto:lsblakk@mozilla.com Lukas Blakk] | | [mailto:lsblakk@mozilla.com Lukas Blakk] | ||
| [https://wiki.mozilla.org/User:Lsblakk Lukas Blakk] | | [https://wiki.mozilla.org/User:Lsblakk Lukas Blakk] | ||
| | | | ||
|} | |} | ||
Line 383: | Line 394: | ||
! Comments | ! Comments | ||
|- | |- | ||
|Account | |Account Import Wizard | ||
|Goal: Ease the pain of switching to Instantbird | |Goal: Ease the pain of switching to Instantbird | ||
Lots of users don't try a new IM client only because they don't want to spend time reconfiguring all their IM accounts. Being able to import accounts from other clients installed on the system would help Instantbird adoption. The student should focus on the dominant IM clients (Windows Live Messenger, AIM, ...) and on the other multi network IM clients (Digsby, Pidgin, Trillian, Miranda, ...). The student will need to study the way other IM clients store their profile data (reverse engineering may be required), think of an architecture to share as much code as possible between the various import modules, and implement import modules for some clients | Lots of users don't try a new IM client only because they don't want to spend time reconfiguring all their IM accounts. Being able to import accounts from other clients installed on the system would help Instantbird adoption. The student should focus on the dominant IM clients (Windows Live Messenger, AIM, ...) and on the other multi network IM clients (Digsby, Pidgin, Trillian, Miranda, ...). The student will need to study the way other IM clients store their profile data (reverse engineering may be required), think of an architecture to share as much code as possible between the various import modules, and implement import modules for some clients. Students should propose particular IM clients they plan to implement support for. | ||
Skills needed: JavaScript XPCOM, XUL, maybe some reverse engineering. | Skills needed: JavaScript XPCOM, XUL, maybe some reverse engineering. | ||
Line 393: | Line 404: | ||
| | | | ||
|- | |- | ||
|Protocol | |Protocol-Aware Error Console | ||
|Goal: Create a tool letting developers (and users) see what was exchanged for each account at the protocol level. | |Goal: Create a tool letting developers (and users) see what was exchanged for each account at the protocol level. | ||
Line 424: | Line 435: | ||
! Comments | ! Comments | ||
|- | |- | ||
| | | Browser Compatibility Warnings | ||
| sites like caniuse and html5please provide information about which modern features are available in which browsers. Browser developer tools have the running app in hand and it would be a huge help for many developers if the tools could provide warnings about features being used that are not compatible with the set of browsers that the | | sites like [http://caniuse.com/ caniuse] and [http://html5please.com/ html5please] provide information about which modern features are available in which browsers. Browser developer tools have the running app in hand and it would be a huge help for many developers if the tools built into Firefox could provide warnings about features being used by their code that are not compatible with the set of browsers that the developer cares about. | ||
| kdangoor | | kdangoor | ||
| | | | ||
Line 436: | Line 447: | ||
| | | | ||
|- | |- | ||
| Highlight JS | | Highlight Reflow-Causing JS | ||
| Gecko developers are able to point out statements that trigger reflows from code inspection. We can do better: {{bug|453650}} discusses adding notifications for timing reflows and calls that trigger a reflow. With this information, we can create a tool that obtains stack traces when reflows are triggered, and order the results by duration, and link this to specific triggering JS statements. | | Gecko developers are able to point out statements that trigger reflows from code inspection. We can do better: {{bug|453650}} discusses adding notifications for timing reflows and calls that trigger a reflow. With this information, we can create a tool that obtains stack traces when reflows are triggered, and order the results by duration, and link this to specific triggering JS statements. | ||
| [mailto:josh@joshmatthews.net jdm] | | [mailto:josh@joshmatthews.net jdm] | ||
Line 442: | Line 453: | ||
| C++ and JS required. | | C++ and JS required. | ||
|- | |- | ||
| Highlight | | Highlight Slow CSS Selectors | ||
| We have a wiki | | We have [https://developer.mozilla.org/en/Writing_Efficient_CSS a wiki page] of ways to write CSS rules that take advantage of Firefox's internals. If we could add timing data to CSS selector matching, we could use that information to profile rules on a page and display a profiling view that links to specific problematic rules. | ||
| [mailto:josh@joshmatthews.net jdm] | | [mailto:josh@joshmatthews.net jdm] | ||
| Someone from devtools, with platform support. | | Someone from devtools, with platform support. | ||
Line 467: | Line 478: | ||
|- | |- | ||
| User Specified Content Security Policy | | User Specified Content Security Policy | ||
| Currently, a website can decide to mitigate attacks on their pages and their users by defining and implementing a Content Security Policy. However, users have no way of protecting themselves in cases where their favorite websites aren't using CSP. This project is to develop a | | Currently, a website can decide to mitigate attacks on their pages and their users by defining and implementing a [https://developer.mozilla.org/en/Introducing_Content_Security_Policy Content Security Policy]. However, users have no way of protecting themselves in cases where their favorite websites aren't using CSP. This project is to develop a Firefox add-on that allows users to specify Content Security Policies for sites (i.e. don't ever iframe my bank website, don't allow inline script on my blog, etc). If time allows, the add-on could also monitor websites the user visits frequently to determine a default CSP policy for each site. Give the user the option to apply that policy to the website and potentially protect themselves from future exploits on the site caused by current or future vulnerabilities. | ||
| Tanvi | | Tanvi | ||
| Tanvi | | Tanvi | ||
| | | | ||
|- | |- | ||
|Prevent | |Prevent Tracking via HTTP Basic Auth | ||
|Currently a website can track users by setting requests to their resources (advertising) using | |Currently a website can track users by setting requests to their resources (advertising) using URLs that contain authentication attributes. Sites then can use these attributes to track users between sites (and avoid the need to set up cookies or other storage). This project will enhance Firefox so that this type of tracking cannot be done and to determine how much this happens in practice. The two goals for this project are: Enhance the collusion add-on to include this type of tracking and change Firefox so that a preference exist so that the only HTTP Auth headers that get cached are the ones entered manually by the user. | ||
|cviecco | |cviecco | ||
|cviecco | |cviecco | ||
Line 479: | Line 490: | ||
|- | |- | ||
| SPDY and WebsSocket Testing Tools | | SPDY and WebsSocket Testing Tools | ||
| HTTP is old and busted, SPDY and WebSockets are the new hotness. Unfortunately there are no really good tools for performing manual and automated security testing for these protocols (aside from protocol fuzzing). We need a brilliant candidate who can work with us to create some new tools that fit in with the asynchronous nature of these protocols while allowing testers to adapt manual / intercepting proxy oriented testing techniques. In particular, an existing tool such as OWASP Zap should be updated to support both interception, and streaming modifications to request contents. | | HTTP is old and busted, [http://mbelshe.github.com/SPDY-Specification SPDY] and [http://dev.w3.org/html5/websockets/ WebSockets] are the new hotness. Unfortunately there are no really good tools for performing manual and automated security testing for these protocols (aside from protocol fuzzing). We need a brilliant candidate who can work with us to create some new tools that fit in with the asynchronous nature of these protocols while allowing testers to adapt manual / intercepting proxy oriented testing techniques. In particular, an existing tool such as [https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project OWASP Zap] should be updated to support both interception, and streaming modifications to request contents. | ||
| Yvan Boily | | Yvan Boily | ||
| Yvan Boily | | Yvan Boily | ||
Line 501: | Line 508: | ||
| Port the open source C/C++ project of your choice to the web | | Port the open source C/C++ project of your choice to the web | ||
| Emscripten lets us compile C and C++ to JavaScript. Porting a project involves building it with Emscripten and fixing any problems along the way (changes to makefiles, implementing missing library support in Emscripten) as well as analyzing the generated code and seeing how to optimize the code for the web. Any interesting open source C or C++ codebase would be a good project to work on here, some examples: GTK, Qt, SuperTux, PyPy, etc. | | Emscripten lets us compile C and C++ to JavaScript. Porting a project involves building it with Emscripten and fixing any problems along the way (changes to makefiles, implementing missing library support in Emscripten) as well as analyzing the generated code and seeing how to optimize the code for the web. Any interesting open source C or C++ codebase would be a good project to work on here, some examples: GTK, Qt, SuperTux, PyPy, etc. | ||
Skills needed: C or C++ depending on the project, some JS, some familiarity with the project being ported, other technologies if the project uses it (for example, for a game that uses OpenGL, OpenGL would be needed) | Skills needed: C or C++ depending on the project, some JS, some familiarity with the project being ported, other technologies if the project uses it (for example, for a game that uses OpenGL, OpenGL would be needed) |
Revision as of 17:37, 14 March 2012
This page lists all the Google Summer of Code 2012 projects with confirmed mentors, and which have been approved by the SoC administrator. New suggestions can be made on the Brainstorming page.
Potential students: you may choose from the list below, but you do not have to. Feel free to submit a proposal for your own idea. However, before you do so, see the guidelines for good ideas. You can also discuss your ideas or application in the #developers channel on IRC: irc://irc.mozilla.org/#developers .
In addition to the specifically-named projects below, we have also tagged a number of bugs in Bugzilla with the keyword student-project. However, as the idea of a "student project" is wider than just the Summer of Code, students looking through the list will need to decide whether any particular bug listed there is actually the right size and scope for Summer of Code.
Application Advice
Note that if a project suggests it would be helpful to know XUL (Mozilla's user interface description language), you may be able to get away with learning on the job. Don't be put off from applying if the project otherwise looks right for you.
- Read the GSoC Student Guide and follow its advice.
- Read How Not To Apply For Summer Of Code and avoid doing the things listed there.
- Read our examples of good applications: 1, 2, 3.
- Apply on the GSoC site (note that we have an application template).
- It is entirely acceptable to apply for 2 or 3 projects, if more than one catches your eye; if the applications are high quality, that probably improves your chances a little. However, more than that seems like spam.
Questions of any sort? Send mail to Gerv and/or chofmann. We will try and respond as soon as possible and get your questions directed to the right person. Please allow at least 48 hours for a reply. If you want to contact a mentor and contact details are not here, try searching for them in the Mozilla Community Directory.
Mozilla Platform (Gecko)
Title | Details - with links as appropriate | Reporter | Mentor(s) | Comments |
---|---|---|---|---|
Networking Dashboard | Build a UI for insight into Mozilla Networking. This is really both a Gecko and Firefox project. Show what connections are active, how fast connections have run in the past, what protocols are in use with protocol specific context information (HTTP versions, SPDY, WebSockets), allow management (e.g. shutdown) of particular connections, and even trigger some diagnostic tests.
Skills needed: some C++ for core Gecko, some JS and opportunity to use XUL to build the UI - probably as an add-on initially. |
mcmanus | mcmanus plus hopefully a ux sponsor | |
Improve Support for MathML Tabular Expressions | As you can see on the Mozilla MathML Status page, some work needs to be done on Gecko's tabular math support. The main goal is to fix bug 731667 by rewriting the implementation of the rowalign, columnalign, rowlines and columnlines attributes. As a next step one could work on the support for rowspacing and columnspacing attributes (bug 330964). <mlabeledtr> (bug 689641) and <maligngroup> (bug 122253) are also other interesting elements to consider. | Frédéric Wang | Frédéric Wang | Better tabular support and more specifically support for the <mlabeledtr> element is important for the MathJax project. Removing private _moz- attributes may allow Gecko to pass more test cases from the html5lib test suite. This will hopefully also fix bug 491384, which has been experimented with several times by people who use columnalign to implement LaTeX alignment environments. |
Implement MathML 3 Linebreaking | MathML 3 comes with an entirely new description of linebreaking that could greatly improve our linebreaking support in mathematical expressions. A complete implementation may be hard in view of the limited time-frame available, but more modest objectives and incremental steps are proposed in bug 534962. | Frédéric Wang | Frédéric Wang | Linebreaking support is important for the MathJax project. |
Calendar
Title | Details - with links as appropriate | Reporter | Mentor(s) | Comments |
---|---|---|---|---|
Improve Invitation Support | While Lightning supports invitations, there are still some features that are not supported yet and others that are not quite stable. Possible goals for this project include improving the UI to make sure users are not confused and implementing/adapting code to support previously unsupported features of invitations like delegations or counters. Lightning relies on the itip/imip standard for invitations, which is also used by most other calendaring clients and servers, so an interested student should look into these. Related bugs are bug 420516, bug 426532, bug 445982, bug 538043, bug 720263, bug 624332, and bug 433848. This is not the final list of bugs to be fixed, it is just to give you an idea of what can be done here. A student should specify what they think they can achieve in the time.
Skills Required: XUL, Javascript |
Fallen | ludovic? | |
Calendar OS Integration | Lightning needs to improve its integration into the operating system, most importantly on Windows. If you've ever wanted to double-click on an event to open it in Lightning, this project is for you. Note this might be a bit more tricky than it initially sounds, but you will have the chance to contribute to multiple projects, as some parts of this project could possibly be better solved within Thunderbird or even the Mozilla Platform. To get prepared, see the list of OS Integration bugs, and especially bug 352566.
Skills Required: Windows API, C/C++, Javascript, possibly XUL. |
Fallen | Fallen+someone else? |
Thunderbird
Title | Details - with links as appropriate | Reporter | Mentor(s) | Comments | |
---|---|---|---|---|---|
Thunderbird "Get Satisfaction" Support Dashboard | Create a real-time Thunderbird support dashboard by implementing i) a REST API to read Thunderbird support data from a MongoDB database (blog post on the code that generates the MongoDB Database) of Thunderbird Get Satisfaction Support topics ii) a JavaScript client that calls the aforementioned API in order to display a real time Thunderbird support dashboard in Firefox - (i.e. port the existing Thunderbird GS Dashboard to the new API)
Level of difficulty: easy to medium Skills needed: JavaScript; Helpful: MongoDB & Information Visualization in the browser using JS and an infoviz toolkit like protovis or D3 |
rtanglao | Roland Tanglao aka rtanglao | ||
Get ISPDB Into Production. | The Thunderbird ISPDB is an online configuration storage service for email providers. There are a few bugs remaining that the Thunderbird team hasn't had time to fix. It would be nice if we could fix them, and finally get the ISPDB up and running and in use. (If this task was too easy, we could also add in the task of changing Thunderbird to submit working configs to the ISPDB.)
Level of difficulty:easy to medium Skills Needed: Python, Some Django experience helpful. |
bwinton | sancus, bwinton | ||
App tabs for Thunderbird | Firefox introduced the concept of app tabs - smaller, fixed tabs that contain a web app. We might want to do something similar for Thunderbird, as a foundation for things like: the Home tab, a Chat app tab, etc... A student applying for this idea should provide some concrete proposals.
Level of difficulty: medium to hard Skills Needed: Javascript, XUL/XBL, CSS |
mconley | sid0, mconley | ||
Thunderbird Profile Backup or Transfer | Backup and restore of Thunderbird profiles. Should allow users to transfer profiles between machines. Would need to investigate MozBackup and figure out how this would be better. Options about which files to backup would be a start.
Level of difficulty: hard Skills required: JS, C++, XPCOM, XUL |
bienvenu | bienvenu,standard8 | ||
Thunderbird Profile Discovery and/or Recovery | Handle things like profiles.ini getting corrupted on upgrade (e.g., try to find a profile dir and hook it back up to profiles.ini), and perhaps profile repair, when accounts get corrupted.
Level of difficulty: medium Skills required, JS and/or C++ |
bienvenu | bienvenu,standard8 | This is probably relatively easy, but diagnosing and repairing some of the trickier corruptions might be complicated. | |
Improve Gmail Interoperability | See bug 721316 for more info. The biggest win here is probably avoiding downloading the same message to offline stores and indexing it multiple times, by using X-GM-MSGID. X-GM-THRID may help with threading in gloda, cross-folder views, and even within a folder. There are probably other things we can do to improve our Gmail integration. For example, we could avoid notifying for multiple new messages just because a message has multiple tags.
Level of difficulty: medium to hard, depending on how deep we go here. Skills required: C++. |
bienvenu | bienvenu | ||
Big File Providers | Add other big file providers (e.g., SFTP, Google Docs, WebDAV (for MS SharePoint!)). Students should say which providers they are aiming to support, and why they chose them.
Level of difficulty: medium to hard, depending on the provider API and how well it maps to our provider interface Skills required: JS |
bienvenu | bienvenu, mconley, squib, bwinton | ||
Implement Other Pluggable Mail Stores | Add one or more other pluggable stores, e.g.,, sqlite, Unhosted (https://groups.google.com/forum/#!topic/unhosted/gra3dStGjDM))
Level of difficulty: hard Skills required: JS or C++. |
bienvenu | bienvenu | ||
Gloda-powered Attachment Browser | This feature allows the navigation through email attachments. Presented in an additional tab, it offers previews of supported email attachments. It allows full view of the attachment by launching the appropriate registered application or can switch to the email in the email view. Filters allow to the display of attachments of a given type, individual or all folders view. Initially, pictures, PDFs, HTML docs, YouTube/DailyMotion videos should be supported. Other attachments types could be added in core or via plugin. Use Shane's extension as a starting point and figure out how to integrate it into Thunderbird.
Level of difficulty: hard. Skills required: JS, HTML |
bienvenu, jb | squib, protz, Shane(?) | ||
'No Reply' Reminder | Often you're sending an email and expecting an answer within a certain number of days. This feature will set a reminder to notify you if no answer has been received in between. One possible way of being reminded is to automatically forward the original email to yourself, with an explanation subject/header. Another way can be to set a Lightning event if it is installed. A few good extension provides a similar feature but do not 'watch' for answered email: https://addons.mozilla.org/en-US/thunderbird/addon/remindit and https://addons.mozilla.org/en-US/thunderbird/addon/follow-up
Level of difficulty: medium? |
jb | protz(?), jb | ||
System to Configure Android Email Client with Account Settings from Thunderbird | f you want to use email other than Gmail on Android, you have to go through the pain of setting the stock email client with IMAP/POP3 settings, ports, user names, passwords, and other reply & compose settings. This feature would allow you to automatically set your Android device email application with the right parameters. It could take the form of an Android Thunderbird application, or some other more direct parameter settings via device policy infrastructure. Technical investigation would need to be done. | jb | jb? | ||
URL Preview within Thunderbird | Many emails contain links to a single web page. The default TB behaviour is to launch the stock browser to view them. This feature allows direct preview in a Thunderbird tab through ctrl-click, or direct inline preview for known content (e.g.: Youtube...). See bug 661742.
Level of difficulty: medium (easy if initial groundworks is available) |
jb | mconley | ||
Compose In A Tab | One way to move the compose window into a tab is to load the Compose window document into a XUL iframe (which is like an HTML iframe, except it hosts XUL). To test this out, install the Developer Assistant extension for Thunderbird, then go to Tools -> Extension Developer -> JavaScript Shell and run the following code:
enumerateWindows(); Shell.enumWins[0].document.getElementById("tabmail").openTab( "chromeTab", {chromePage: "chrome://messenger/content/messengercompose/messengercompose.xul"}); Then try playing around with it, sending a message, etc. As you can see, the basic concept works, but there are currently issues with the UI. Your job will be to sort them out, make everything work properly, and ship your code as part of Thunderbird. Easier way: Tools -> Error Console, then top.opener.openTab("chromeTab", {chromePage: "chrome://messenger/content/messengercompose/messengercompose.xul"}); Level of difficulty: hard. Skills needed: will require writing XUL (menus will probably need to be moved out into an overlay), JavaScript (passing menu commands down to the child iframe) and CSS (to fix theming issues) and writing unit tests to ensure that things work as expected. Since Mac OS X has a global menu, getting it right might require more work. You will need access to a Mac for your proposal to be accepted.. |
sid0 | sid0, mconley, protz | ||
Investigate Alternate Composition Window | We still want to overhaul the composition window. Most of the hard work was done already in compose (https://addons.mozilla.org/en-US/developers/addon/compose-for-thunderbird ) or Conversations (https://mail.mozilla.org/pipermail/tb-planning/2012-February/001547.html ). A motivated student could explore a new UI for the composition window, and consider integrating an external editor such as aloha.
Level of difficulty: hard Skills needed: JavaScript; HTML (no XUL) |
protz | protz, mconley | ||
Investigate Designing a Home Tab | Outlook has a home tab, i.e. some sort of dashboard that gives you all the relevant information at a glance. We could do something similar in Thunderbird:
Level of difficulty: hard Skills needed: JavaScript; HTML (no XUL) |
protz | protz, bwinton, sid0 |
SeaMonkey
Title | Details - with links as appropriate | Reporter | Mentor(s) | Comments |
---|---|---|---|---|
Shell Service on A Non-Windows Platform | The Mozilla Suite only supported a shell service on Windows, and SeaMonkey has inherited that limitation. Both Firefox and Thunderbird support the shell service on other platforms, so it is technically feasible to implement the shell service for SeaMonkey on those platforms too.
Skills needed: C++; some knowledge of GConf/GIO or Cocoa APIs as appropriate. |
Neil | Neil | This proposal requires some knowledge of platform-specific APIs. Only one platform needs to be implemented by any particular student. I can only give limited support for the Mac but it may be possible to find another mentor. |
Messenger Bookmarks | SeaMonkey MailNews provides access not only to mail, but also to NNTP news and even to RSS feeds, and maybe others in future as well. It would be quite useful to be able to bookmark specific news items for later use, e.g. specific postings of a discussion, etc.
This should include full usual bookmark handling for those URLs, including sidebar support. Relevant bugs: Skills needed: JS, XUL; maybe C++. |
Mnyromyr | Mnyromyr | |
Folder Views | We provide the ability to create and use message views for pre-filtering which messages to show in the thread pane. We don't have a comparable feature yet in the folder pane...
While this would basically mean porting Thunderbird's bug 251296, the UI should be more in sync with the SeaMonkey look and feel, e.g. columns for unread count, size, etc; a drop down menu for switching views; allow custom folder views; ... Skills needed: JS, XUL; maybe C++. |
Mnyromyr | Mnyromyr | |
Score-Based Filtering | You can filter on quite some terms, but you can't weigh them. A scoring system will allow a much finer control, eg. it would be just a property score with a range of maybe 1..1000, along with some new conditions
[is ] [isn't ] Score [is lower than ][\/] [<value in range>] [is lower than or equal to ] [is greater than ] [is greater than or equal to] and actions [Increment score by] [Decrement score by][\/] [<value in range>] [Set score to ] Each message would start with a score of 500 before filters get applied. This feature will require MailNews Core C++ hacking. Related: |
Karsten "Mnyromyr" Düsterloh | Karsten "Mnyromyr" Düsterloh | |
Show All HTML5 Tags | The SeaMonkey Composer does not show HTML5 tags in its "All Tags" mode, instead they appear with an unknown tag indicator. It would be nice for the actual tag names to display.
Skills needed: CSS; some graphical ability. |
Neil | Neil, possibly IanN | |
HTML5 Editing | The SeaMonkey Composer does not know how to edit HTML5 tags, except via its generic Advanced Editor. Skills needed: Some HTML5 tags can be supported by adding a XUL/JS dialog, but some may need additional C++ code. Students should specify which tags they plan to implement. | Neil | Neil, possibly IanN | Any given student could just add support for one HTML5 tag of their choice. |
Documentation
Title | Details - with links as appropriate | Reporter | Mentor(s) | Comments |
---|---|---|---|---|
SVG Reference Examples | The SVG Reference needs examples! Lots of examples! We need live samples for all the various SVG elements and attributes, examples for how to do cool stuff with SVG in the DOM, etc. The goal would be to have in-line, live SVG samples, with the code and an explanation of how the code works, for every SVG element and attribute.
Skills needed: SVG, DOM, moderate-to-good English writing skills. |
Sheppy | Sheppy | Also talk to Jeremie Patonnier about helping with mentoring. |
HTML and CSS Reference Examples | The HTML and CSS references on MDN need examples. While there are some here and there, someone needs to go through and ensure that every HTML element has good examples that cover a variety of use cases and interesting capabilities, and that every CSS property has good coverage as well. These would include live examples with the code and an explanation of how it works.
Skills needed: HTML and CSS. Moderate-to-good English writing skills. |
Sheppy | Teoli | |
Add jsFiddle Integration to Kuma | The new Kuma wiki which powers the Mozilla Developer Network needs to have good integration with jsFiddle for easily creating examples then editing, experimenting with, and embedding them into documentation. Should be able to view the source and live output, then experiment with the code in real time (either in place or, perhaps preferably, in a new window).
Skills needed: JavaScript, HTML, CSS, Python. Django framework familiarity a big plus. |
Sheppy | Sheppy,Luke Crouch |
Foundation
Title | Details - with links as appropriate | Reporter | Mentor(s) | Comments |
---|---|---|---|---|
Slide Drive Improvements | Slide Drive is a slide show system which (https://github.com/dseif/slide-drive) combines the deck.js HTML5 slideshow package with Popcorn.js. It was originally developed for Software Carpentry, but would be useful to many other people who want to move off PowerPoint and recorded video. Many enhancements are possible, the most important being accessibility support. Students should contact the mentor and then propose specific improvements. | greg | greg |
Release Engineering
Title | Details - with links as appropriate | Reporter | Mentor(s) | Comments |
---|---|---|---|---|
Tryserver Automation Improvements | The tryserver is Mozilla's system for doing test builds on every platform, even ones you don't have access to. We currently have a 'trychooser' command syntax which allows developers to customize what they'd like to test their patch with (out of over 200 build & test options) - this syntax can use some improvements to allow for even more granular control and also needs a web-driven interface as well as logic that would let users specify a repo (mozilla-hosted), a custom test package, and much more. Bugs include try_enhancement tracking and most importantly bug 625463
Useful skills: some webdev and Python programming experience |
Lukas Blakk | Lukas Blakk |
Instantbird
Title | Details - with links as appropriate | Reporter | Mentor(s) | Comments |
---|---|---|---|---|
Account Import Wizard | Goal: Ease the pain of switching to Instantbird
Lots of users don't try a new IM client only because they don't want to spend time reconfiguring all their IM accounts. Being able to import accounts from other clients installed on the system would help Instantbird adoption. The student should focus on the dominant IM clients (Windows Live Messenger, AIM, ...) and on the other multi network IM clients (Digsby, Pidgin, Trillian, Miranda, ...). The student will need to study the way other IM clients store their profile data (reverse engineering may be required), think of an architecture to share as much code as possible between the various import modules, and implement import modules for some clients. Students should propose particular IM clients they plan to implement support for. Skills needed: JavaScript XPCOM, XUL, maybe some reverse engineering. |
Florian Quèze | Florian Quèze | |
Protocol-Aware Error Console | Goal: Create a tool letting developers (and users) see what was exchanged for each account at the protocol level.
A student working on this project will either extend the existing Error Console or create a new console from which it will be possible to see what data has been exchanged for each account. Example of desirable features: copying a log of whatever happened with an account from the beginning of the connection attempt; syntax highlighting of the exchanged data (requires some parsing of the data exchanged by protocols like XMPP, IRC, Twitter (JSON)); letting the user type and send a raw message to the server. Skills needed: JavaScript, XUL/XBL, some basic understanding of XMPP, IRC and Twitter protocols. |
Florian Quèze | Florian Quèze | |
Voice and Video | Goal: Support voice and video communication.
This project intends to explore the possibilities for Voice and Video communication using the Mozilla platform. The student will need to experiment both with usage of the microphone and webcam and with codecs available in the system on the three supported OSes. Compatible implementations of the various IM protocols that support these features is out of the scope of this project, but the student will at least need to prove that s/he has seriously investigated using the various open source projects that have started some work on this. A (mostly) working proof of concept is expected. UI mockups for what a well-thought user interface for voice and video could be would be appreciated. Skills needed: JavaScript, XUL, XPCOM, maybe C++. |
Florian Quèze | Florian Quèze |
Developer Tools
Title | Details - with links as appropriate | Reporter | Mentor(s) | Comments |
---|---|---|---|---|
Browser Compatibility Warnings | sites like caniuse and html5please provide information about which modern features are available in which browsers. Browser developer tools have the running app in hand and it would be a huge help for many developers if the tools built into Firefox could provide warnings about features being used by their code that are not compatible with the set of browsers that the developer cares about. | kdangoor | ||
CSS Source Maps | Last year, a student implements "source maps" that can take minified JavaScript or even CoffeeScript and map errors back to the original source file(s). We'd like to do the same for CSS which is often minified or generated from languages like LESS or Stylus. | kdangoor | ||
Highlight Reflow-Causing JS | Gecko developers are able to point out statements that trigger reflows from code inspection. We can do better: bug 453650 discusses adding notifications for timing reflows and calls that trigger a reflow. With this information, we can create a tool that obtains stack traces when reflows are triggered, and order the results by duration, and link this to specific triggering JS statements. | jdm | Someone from devtools, with platform support | C++ and JS required. |
Highlight Slow CSS Selectors | We have a wiki page of ways to write CSS rules that take advantage of Firefox's internals. If we could add timing data to CSS selector matching, we could use that information to profile rules on a page and display a profiling view that links to specific problematic rules. | jdm | Someone from devtools, with platform support. | C++ and JS required. |
Graphical Timeline of Events | We would like to create a visual timeline of events. | robcee | Someone from devtools, possibly some platform support. | JS required, canvas, html, css, possibly some C++. |
Security Engineering
Title | Details - with links as appropriate | Reporter | Mentor(s) | Comments |
---|---|---|---|---|
User Specified Content Security Policy | Currently, a website can decide to mitigate attacks on their pages and their users by defining and implementing a Content Security Policy. However, users have no way of protecting themselves in cases where their favorite websites aren't using CSP. This project is to develop a Firefox add-on that allows users to specify Content Security Policies for sites (i.e. don't ever iframe my bank website, don't allow inline script on my blog, etc). If time allows, the add-on could also monitor websites the user visits frequently to determine a default CSP policy for each site. Give the user the option to apply that policy to the website and potentially protect themselves from future exploits on the site caused by current or future vulnerabilities. | Tanvi | Tanvi | |
Prevent Tracking via HTTP Basic Auth | Currently a website can track users by setting requests to their resources (advertising) using URLs that contain authentication attributes. Sites then can use these attributes to track users between sites (and avoid the need to set up cookies or other storage). This project will enhance Firefox so that this type of tracking cannot be done and to determine how much this happens in practice. The two goals for this project are: Enhance the collusion add-on to include this type of tracking and change Firefox so that a preference exist so that the only HTTP Auth headers that get cached are the ones entered manually by the user. | cviecco | cviecco | |
SPDY and WebsSocket Testing Tools | HTTP is old and busted, SPDY and WebSockets are the new hotness. Unfortunately there are no really good tools for performing manual and automated security testing for these protocols (aside from protocol fuzzing). We need a brilliant candidate who can work with us to create some new tools that fit in with the asynchronous nature of these protocols while allowing testers to adapt manual / intercepting proxy oriented testing techniques. In particular, an existing tool such as OWASP Zap should be updated to support both interception, and streaming modifications to request contents. | Yvan Boily | Yvan Boily |
Emscripten
Title | Details - with links as appropriate | Reporter | Mentor(s) | Comments |
---|---|---|---|---|
Port the open source C/C++ project of your choice to the web | Emscripten lets us compile C and C++ to JavaScript. Porting a project involves building it with Emscripten and fixing any problems along the way (changes to makefiles, implementing missing library support in Emscripten) as well as analyzing the generated code and seeing how to optimize the code for the web. Any interesting open source C or C++ codebase would be a good project to work on here, some examples: GTK, Qt, SuperTux, PyPy, etc.
Skills needed: C or C++ depending on the project, some JS, some familiarity with the project being ported, other technologies if the project uses it (for example, for a game that uses OpenGL, OpenGL would be needed) |
Alon Zakai | Alon Zakai |