Difference between revisions of "Potential Projects"
Chris Tyler (talk | contribs) m (→Introduction) |
m (Reverted edits by Saoagent (Talk) to last revision by Chris Tyler) |
||
(187 intermediate revisions by 58 users not shown) | |||
Line 1: | Line 1: | ||
− | ''' | + | = Introduction = |
+ | |||
+ | This is a list of potential projects that need people. | ||
+ | |||
+ | '''Students:''' If you'd like to work on one of these, move the chosen project to the [[Project List]] and create a page for your work based on the [[Sample Project]] template. | ||
+ | |||
+ | '''Open Source Community Members:''' We welcome your recommendations for potential projects. Please create an account on this Wiki and create a description for your proposed project below. Please list your contact info (just an IRC or FAS2 name is OK) as well as links to any related web pages as Resources for the proposed project. (Questions? Ask [[user:Chris Tyler | Chris Tyler]] or [[user:David.humphrey | David Humphrey]]). | ||
+ | |||
+ | = SBR600 Potential Projects = | ||
+ | |||
+ | For possible projects for the SBR600 Software Build and Release Course, lease see the [[SBR600 Potential Projects]] page. | ||
+ | |||
+ | = Potential Eclipse WTP Projects = | ||
+ | |||
+ | See the list of potential bugs [https://bugs.eclipse.org/bugs/report.cgi?x_axis_field=priority&y_axis_field=product&z_axis_field=bug_severity&query_format=report-table&short_desc_type=allwordssubstr&short_desc=&classification=WebTools&product=WTP+Common+Tools&product=WTP+ServerTools&product=WTP+Source+Editing&product=WTP+Webservices&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&status_whiteboard_type=allwordssubstr&status_whiteboard=&keywords_type=allwords&keywords=&bug_status=NEW&bug_status=REOPENED&bug_severity=major&bug_severity=normal&bug_severity=minor&bug_severity=trivial&priority=P2&priority=P3&priority=P4&priority=P5&emailtype1=substring&email1=&emailtype2=substring&email2=&bugidtype=include&bug_id=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&format=table&action=wrap&field0-0-0=assigned_to&type0-0-0=regexp&value0-0-0=.@ca.ibm.com&field0-0-1=noop&type0-0-1=noop&value0-0-1= here]. | ||
+ | |||
+ | <!-- | ||
+ | |||
+ | = Potential Fedora Projects = | ||
+ | |||
+ | == [[Sample Project]] == | ||
+ | |||
+ | This is a sample project stub. You can use the template for [[Sample Project]] in order to create a project page for one of the stubs below. This is how you 'sign-up' for a project. | ||
+ | |||
+ | NOTE: if someone has already created the project page, speak to this person and see if you can join them. If so, simply add your name to the '''Project Leader(s)''' page. Otherwise, you can become a contributor later. | ||
− | = | + | == Ideas Pool == |
+ | |||
+ | Lots of good ideas are listed in [[:fedora:SummerCoding/2008/Ideas|Summer Coding Ideas (Fedora Wiki)]]. These projects were originally proposed for Google Summer of Code projects; if you want to use one of them, please discuss it with [[User:Chris Tyler|Chris Tyler]] before selecting it, because the scope and mentorship model for GSOC is different from that of the LUX projects. | ||
+ | |||
+ | == Cobbler Web == | ||
+ | |||
+ | Cobbler is a Linux install server that simplifies tasks associated with fully automated installation such as DHCP, DNS, kickstart, yum, and virtualization. It aims to be a universal install server for all linux distributions. Currently Cobbler has a web interface that allows users an easier way of interacting with cobbler. There are several core improvements that can be made. One idea is to extend cobbler web to produce views that make it easier for users to edit fields that only they edit (let me reinstall systems I own but don't show me fields I shouldn't care about). Another is to enable search features in the web app to make it tolerate thousands of systems to a better extent. Finally, another feature is to add a task engine to cobblerd, to make it possible to run commands like "cobbler import" and "cobbler reposync" in the background and see their output in the web interface via an AJAXy type system. | ||
+ | |||
+ | Possible features are not limited to the above (or just working on the web interface), Cobbler has an ongoing RFE list in Trac that has a wide variety of potential ideas, and ideas beyond the ones listed are also fair game. See https://fedorahosted.org/cobbler/report/1?sort=type&asc=1 | ||
+ | |||
+ | Resources: http://fedoraproject.org/cobbler | ||
+ | |||
+ | Contact: Michael DeHaan | ||
+ | |||
+ | == Personal Koji Repositories == | ||
+ | |||
+ | Koji Personal Repos (KoPeR) is a concept to allow Fedora maintainers to create personal repos of packages to build against and share with others. | ||
+ | |||
+ | Resources: http://fedoraproject.org/wiki/JesseKeating/KojiPersonalRepos | ||
+ | |||
+ | Contact: Jesse Keating | ||
+ | |||
+ | == Port Wubi to Fedora == | ||
+ | |||
+ | If upstream is willing to integrate it, port wubi-installer and make it more cross distribution. Otherwise, provide a similar implementation for Fedora. | ||
+ | |||
+ | http://wubi-installer.org/ | ||
+ | |||
+ | == Delta RPM support in Koji build system == | ||
+ | |||
+ | * https://fedorahosted.org/bodhi/ticket/160 | ||
+ | |||
+ | == Benchmark Nightlife Scalability Issues == | ||
+ | |||
+ | Using Puppet, or some other management tool, create a grid of a | ||
+ | dozen machines, then turn that into 12,000 machines. Address the network | ||
+ | characteristics - how much bandwidth do you need on different | ||
+ | components, the communication mechanisms - does UDP work at such a | ||
+ | scale, the grid topology - what happens when two nodes are behind firewalls. | ||
+ | |||
+ | Resource: [[:fedora:Nightlife|Nightlife wiki page]], Matthew Farrellee | ||
+ | |||
+ | == Create Test Suite for Condor == | ||
+ | |||
+ | Along with a good build infrastructure, a strong test framework and | ||
+ | methodology is key to survival of modern software. Condor is a system | ||
+ | that is shipped on, currently, 14 different platforms - OS + Arch | ||
+ | combinations. New features need to be verified to work on all those | ||
+ | platforms and shown to cause no regressions in other features. Condor | ||
+ | has a large test suite, but no suite covers everything or in sufficient | ||
+ | depth. Pick a few features, say the VM Universe or Concurrency Limits, | ||
+ | and demonstrate full understanding of them by testing all of the corner | ||
+ | cases. This is far from a simple task, and requires more than a cursory | ||
+ | understand of the system to properly complete. Understanding the complex | ||
+ | interactions of distributed components, common patterns exist across | ||
+ | many distribute systems, as well as intimate interactions with the OS is | ||
+ | key. | ||
+ | |||
+ | Resource: [[:fedora:Nightlife|Nightlife wiki page]], Matthew Farrellee | ||
+ | |||
+ | --- Below: Commented out by Chris Tyler 2008-08-31 -- I think we'll get all the students doing this. | ||
+ | |||
+ | == Review Packages == | ||
+ | |||
+ | There is a lot of packages in Fedora waiting for someone to review it. While a completely new Fedora contributor needs to be sponsored before his package is approved, subsequent packages can be reviewed and approved by any Fedora package maintainer. In addition to that, virtually anybody with a Red Hat Bugzilla account can do do unofficial reviews. Working through the review queue and doing this work might be fun and useful learning process for folks interested in RPM and packaging in general. | ||
+ | |||
+ | The general process is described in http://fedoraproject.org/wiki/PackageMaintainers/HowToGetSponsored and in http://fedoraproject.org/wiki/Packaging/ReviewGuidelines. | ||
+ | |||
+ | === Review Requests === | ||
− | + | * Unassigned review requests - http://fedoraproject.org/PackageReviewStatus/NEW.html | |
+ | * In progress review requests - http://fedoraproject.org/wiki/PackageMaintainers/InProgressReviewRequests | ||
+ | * Approved review requests - http://fedoraproject.org/wiki/PackageMaintainers/ApprovedReviewRequests | ||
+ | --> | ||
− | = Projects = | + | = Potential Mozilla Projects = |
== [[Sample Project]] == | == [[Sample Project]] == | ||
Line 13: | Line 108: | ||
NOTE: if someone has already created the project page, speak to this person and see if you can join them. If so, simply add your name to the '''Project Leader(s)''' page. Otherwise, you can become a contributor later. | NOTE: if someone has already created the project page, speak to this person and see if you can join them. If so, simply add your name to the '''Project Leader(s)''' page. Otherwise, you can become a contributor later. | ||
− | == | + | == Improve Localization build system == |
+ | |||
+ | Currently it requires many many steps to produce another language of Firefox. | ||
+ | It would really easy to package these many steps to reduce the required knowledge to generate a new language. | ||
+ | |||
+ | Adding a few make steps to wrap this process would help everyone. | ||
+ | This is a very easy project to tackle but very benefitial if the time and love is given to it. | ||
+ | |||
+ | Reference: armenzg | ||
+ | |||
+ | == Create a cross-repo pushlog to see all locales's checkins == | ||
+ | We currently check many different repositories to trigger builds when a developer makes a change. We also check the localizer's repositories to see if they have pushed any changes. The problem is that we have close to eighty different localization repositories and that takes a long time to check each one of them. | ||
+ | If we had a joint view that would improve our systems. An example of that view is: | ||
+ | https://l10n-stage-sj.mozilla.org/pushes/ | ||
+ | but the format should be more like this: | ||
+ | http://hg.mozilla.org/mozilla-central/pushlog | ||
+ | which is what our release engineering systems check for. | ||
+ | This project would require you to hack hg and pushlog to make it work. | ||
+ | armenzg has many blog posts explaining how to setup pushlog in your local machine. | ||
+ | |||
+ | Reference: armenzg - Bug 498641 | ||
+ | |||
+ | == Thunderbird SMTP Auto-Sensing == | ||
+ | |||
+ | Modify Thunderbird so that it uses the correct SMTP server for your current network and IP. In other words, if you are at home, use your home ISP's SMTP, but if you use a school wireless network, switch to the school's SMTP. These various SMTP configurations should be manually controlled by the user, that is, you don't have to try and figure out which SMTP to use. Rather, it should be configurable in an options dialog. | ||
+ | |||
+ | References: #maildev | ||
− | |||
− | |||
− | + | == <strike>XULRunner Application Packaging == | |
− | + | Help to develop an [http://www.mozpad.org/doku.php?id=application_build_system_project automated packaging system] for XULRunner applications. | |
− | + | Resources: plasticmillion, mfinkle, #mozpad, #prism</strike> | |
− | + | == 'Compact databases' feature for Mozilla calendaring applications (Lightning, Sunbird) == | |
− | + | Add the possibility to compact the database for local storage calendars based on SQLite using the VACUUM command. At the moment the local database for events and tasks will not get smaller even if you delete your tasks and events. This has serious performance implications for people, who work a lot with their calendar. | |
− | = | + | See also [https://bugzilla.mozilla.org/show_bug.cgi?id=352976 Bug 352976] |
− | + | Resources: ctalbert, daniel in #calendar on irc.mozilla.org | |
− | + | == <strike>[[Spellcheck Extension for Arbitrary Web Pages]]</strike> == | |
− | + | <strike>Write an extension to leverage the existing spellcheck code in Mozilla and add the ability to highlight spelling mistakes for a given web page (i.e., vs. a textbox).</strike> | |
− | + | == <strike>Modify Firefox to handle files downloaded to Temp more appropriately </strike>== | |
− | + | <strike>Often files downloaded by the browser are put in a temporary folder that is emptied on close. Users (and especially novice users) should be protected from inadvertent data loss as a result of important files being saved to this temp folder. This project will add fixes to the browser so that users are protected. Ideas include: | |
− | + | * Make Firefox aware of common productivity file types (e.g., .doc, .pdf) and whitelist these types so they aren't deleted | |
+ | * Have office type files download automatically to a documents folder instead of temp | ||
+ | * Firefox could check the timestamp of such files and delete them only if the timestamp is the same as when it was originally saved by the browser (i.e., has not been edited) | ||
+ | * Warn the user on closing the browser that files are going to be removed | ||
+ | * Assuming files still exist on start-up (see above), alert the user that these files are still there (similar to "New Session or Restart Existing?" dialog) | ||
+ | * Have the browser pop-up a Save As dialog instead of automatically saving to temp, and use a documents path | ||
− | + | Other ideas are possible, and a combination of these might be necessary. Ultimately, this fix should target regular users without much knowledge of the filesystem.</strike> | |
− | + | Resources: ted, mfinkle | |
− | == | + | See also: [https://bugzilla.mozilla.org/show_bug.cgi?id=280419 bug 280419] and [https://bugzilla.mozilla.org/show_bug.cgi?id=369108 bug 369108], and code [http://mxr.mozilla.org/mozilla-central/source/uriloader/exthandler/nsExternalHelperAppService.cpp#2077 here]. |
− | + | == Standalone Test Harnesses == | |
− | + | Mozilla uses several systems for [http://developer.mozilla.org/en/docs/Mozilla_automated_testing automated testing], including [http://developer.mozilla.org/en/docs/Mochitest Mochitest], [http://developer.mozilla.org/en/docs/Mozilla_automated_testing#Reftest Reftest], [http://developer.mozilla.org/en/docs/Writing_xpcshell-based_unit_tests xpcshell unit tests], and [http://developer.mozilla.org/en/docs/Mozilla_automated_testing#Crash_tests crash tests]. Currently, to run these test suites or develop new tests, you need to build your own Firefox with --enable-tests, and run the tests from the object directory. Ideally there would be a standalone package available for download that would let you run these test suites against any Firefox build, to ease development of new tests and allow more people to get involved with automated testing. | |
− | |||
− | |||
− | + | * References: http://xoatlicue.blogspot.com/2008/01/standalone-test-product.html | |
+ | * Possible Resources: Ben Hearsum | ||
− | + | == Add source checkout to buildbot == | |
− | + | Unlike many open source projects, it's not possible to do a CVS checkout and build the code. This is due to the complex module and version combinations necessary to get and build a particular product, for example Firefox. To accomplish this, Mozilla uses [http://mxr.mozilla.org/seamonkey/source/client.mk client.mk], which provides a set of rules for getting and building the code. | |
− | + | Increasingly, Mozilla is moving toward using the Python based buildbot system for automated builds and tests. It would be good to add a Source class for client.mk checkouts. This would mean creating a a general Source class that understands the idea of checking out a file, and which could then be used to drive the checkout and allow for integration with client.mk. | |
− | References: | + | References: Ben Hearsum (bhearsum), Rob Helmer (rhelmer) |
− | == | + | == Port the Firefox Release Repackager to other platforms == |
− | + | The [http://benjamin.smedbergs.us/release-repackager/ Firefox Release Repackager] allows one to take a released version of the browser, deconstruct it in order to add some custom extension, then repackage it. This allows organizations to ship slightly modified versions of stock releases, useful for their users. Currently the repackager only works on Mac. | |
− | + | Port this tool to Windows and/or Linux. In order to do this you'll need platform binaries of 7zip, or perhaps you can use P7zip to do a cross platform version. There are other ideas that can be added to this tool as well for making it more flexible. | |
− | + | Resources: mkaply, bsmedberg | |
− | + | == gdb symbol server support == | |
− | + | Microsoft's debugger allows the use of a symbol server, which it can use to download debugging symbols for programs and libraries. [http://developer.mozilla.org/en/docs/Using_the_Mozilla_symbol_server Mozilla provides this] for nightly and release builds on Windows, and it's useful for people to debug their crashes locally without having to build a debug build. This functionality doesn't exist for Linux or OS X, where gdb is the debugger. gdb does support loading debug symbols from external files, so it could probably be extended to look for the symbols on a web server first. | |
− | = | + | References: |
+ | # https://bugzilla.mozilla.org/show_bug.cgi?id=412722#c5 | ||
+ | # http://www.linuxcommand.org/man_pages/objcopy1.html (see --add-gnu-debuglink and --only-keep-debug) | ||
+ | # http://www.totalviewtech.com/Documentation/Tips/gnu_debuglink.html | ||
− | + | Resources: ted, Stan Shebs, Jim Blandy | |
− | == | + | == gdb support for minidumps for post-mortem debugging == |
− | + | Microsoft's debugger allows for loading a minidump produced during a crash and then performing post-mortem debugging. GDB supports using core files for the same purpose. In Firefox 3, we produce minidump files on all of our supported platforms for use with our Breakpad crash reporting system. Sometimes people may want to debug a crash locally using one of these minidumps. On Windows, using the symbol server, they can simply load the minidump in their debugger. Currently there is no equivalent on Linux or Mac. Extending gdb to support loading minidumps for post-mortem debugging would be useful. This project may rely on the gdb symbol server project to be truly useful. | |
− | + | References: | |
+ | # http://code.google.com/p/google-breakpad/source/browse/trunk/src/google_breakpad/common/minidump_format.h | ||
+ | # http://www.codeproject.com/KB/debug/postmortemdebug_standalone1.aspx | ||
+ | # http://sourceware.org/gdb/current/onlinedocs/gdb_3.html#SEC7 | ||
+ | # http://sourceware.org/gdb/current/onlinedocs/gdb_9.html#SEC80 | ||
− | + | Resources: ted, Stan Shebs, Jim Blandy | |
− | + | == RegressionTry == | |
− | + | Make it possible to look for bugs across old nightly builds of Firefox using automated tools. For example, [http://db48x.net/regression-search/ regression-search] is a script that allows you to do binary searches across binaries, looking for the existence of a bug. This could be improved through the use of tools like [http://services.alphaworks.ibm.com/coscripter/browse/about co-scripter]. Ideally the user could look for bugs in automated ways, without having to download and install tons of browser versions. | |
− | + | Resources: db48x, ted | |
− | + | == Extend Try Server to test Thunderbird patches == | |
− | + | "Specifically, Mozilla has a great system called “try servers” where one can submit patches against the tree, and the build system runs builds on Linux, Mac and Windows, using those patches, then serves those builds for testing. This is really helpful to figure out if proposed patches solve specific problems...The only problem is that there’s a little bit of patching needed to the try server code itself to make it able to work with other targets besides Firefox, as described in bug 431375" ([http://ascher.ca/blog/2008/05/02/thunderbird-team-needs-help-from-pythonperl-build-assist/ Ascher]) | |
− | == Add | + | == Add DTrace probes and scripts for Mozilla code base == |
− | + | [http://en.wikipedia.org/wiki/DTrace DTrace] was created by Sun in OpenSolaris to allow developers to write simple scripts in order to probe and instrument executing programs in a way not possible otherwise. One of the advantages of DTrace is that it allows you to turn on probing when you need it, but not incur an execution penalty with regard to performance (i.e., when probes aren't being scripted, they aren't run). This requires developers to add "probes" to their source code. For example, if you wanted to know when a particular function is entered/exited, get info about what happened, etc. you could add probes to the particular function. Writing the probes is not difficult, however there are hundreds or thousands of probes that Mozilla would like across its code base. | |
− | + | Resources: sayrer | |
− | + | == Plugin Code Test Suite == | |
− | + | Create a [http://developer.mozilla.org/en/docs/Plugins plugin] test suite. There are currently no tests of any kind, and this code is very brittle and not well understood. This would involve creating a plugin or set of plugins and some html/js to drive that plugin in order to push test coverage. Maybe look at the JRE tests, create some specific plugin cases (e.g., swf to load that tests flash specific code). The newly announced Google Chromium browser [http://dev.chromium.org/developers/how-tos/getting-around-the-chrome-source-code seems to have something like this] with regard to using the npapi for driving tests via plug-in. See also docs on [http://dev.chromium.org/developers/design-documents/inter-process-communication IPC] and [http://dev.chromium.org/developers/design-documents/plugin-architecture plug-in design] in Chromium. | |
− | + | This will require C programming, as well as light web development (html, js, perhaps swf). | |
− | + | Resources: jst | |
− | + | == Create self-serve symbol upload system == | |
− | + | Mozilla has a symbol server which is used by developers to debug issues in release builds that don't include debug information (i.e., symbols). However, many crashes are related to third-party binary plugins or extensions, for which Mozilla has no symbols. This project would create a web-based self-serve solution for third-parties to upload symbols for their binary components in breakpad-formatted .sym file format. Ideally this could happen in an automated way, such that third-parties could add a step to their build system to do it automatically with each release. See [https://bugzilla.mozilla.org/show_bug.cgi?id=419879 bug# 419879]. | |
− | + | Resources: ted | |
− | == | + | == <strike>Add OpenLayers test suite to Mozilla </strike>== |
− | + | <strike>Mozilla [http://mxr.mozilla.org/mozilla-central/source/dom/tests/mochitest/ajax/ uses] many common JavaScript library test suites to add additional coverage to it's JavaScript implementation. One test suite that is not currently used by Mozilla, but could be, is the [http://openlayers.org OpenLayer's] js [http://trac.openlayers.org/browser/trunk/openlayers/tests test suite]. See [https://bugzilla.mozilla.org/show_bug.cgi?id=399311 bug# 399311]. | |
− | + | Resources: sayrer</strike> | |
− | + | == <strike>Import sqlite test suite</strike> == | |
− | + | <strike>Mozilla uses an embedded version of [http://www.sqlite.org/ SQLite] extensively to [http://developer.mozilla.org/en/storage store data] such as bookmarks, history, etc. To insure that it runs properly within Mozilla, it would be good to add the entire sqlite test suite to Mozilla's tests, so that testing the browser also means testing sqlite. The sqlite test suite is written in TCL and needs to be ported to JavaScript. Some [http://mxr.mozilla.org/mozilla-central/source/storage/test/unit/test_like.js work has already been done], but more is required to get full test coverage. | |
− | + | References: [https://bugzilla.mozilla.org/show_bug.cgi?id=391756 bug 391756], http://www.0xdeadbeef.com/weblog/?p=368 | |
− | + | Resources: sdwilsh | |
+ | </strike> | ||
− | + | Take : [http://zenit.senecac.on.ca/wiki/index.php/Import_sqlite_test_suite Park,KiWon] | |
− | == | + | == Make chromebug work in Thunderbird == |
− | + | TBD | |
− | + | == Help gristmill move forward in Thunderbird == | |
− | + | TBD | |
− | + | == Help Calendar integration on Trunk == | |
− | + | TBD | |
− | + | Resources: Fallen | |
− | |||
− | |||
− | + | == HTML page set sanitizer == | |
− | + | The Talos performance testing system at Mozilla currently runs on a large set of web pages pulled from the Alexa Top 500. These pages can't be redistributed, since they're mirrors of copyrighted web pages. In addition, many of them contain adult content. This makes it difficult for people to duplicate the Talos results or to test changes that have an expected performance impact. | |
− | + | A useful solution to this problem would be a tool that takes a mirrored copy of a website and "sanitizes" it, by changing the page text and image contents (making them junk or filler text or something). The caveat here is that this *cannot* change the performance characteristics of the page. For example, taking a page that is all Chinese text and replacing it with "Lorem Ipsum" filler text would cause the page to take different text rendering paths, which would change what is measured. As another example, making all JPEG images solid black would likely make them decode and render much faster. Any solution should have some analysis performed that shows that performance is not significantly altered in the sanitized page set. | |
− | + | Resources: ted (but find someone better!) | |
− | + | == 3D object picking == | |
− | + | Canvas 3D JS Library is a library for the creation and manipulation of 3D scenes in the browser without needing to know much 3D programming. Part of this project is to handle mouse input. This particular project looks at how to perform "picking". That is, when given a coordinate within the canvas, return the 3D object at that location. | |
− | |||
− | + | Resources: cathy, Andor (http://www.c3dl.org) | |
− | + | = Potential OOo Projects = | |
− | + | == [[Sample Project]] == | |
− | + | This is a sample project stub. You can use the template for [[Sample Project]] in order to create a project page for one of the stubs below. This is how you 'sign-up' for a project. | |
− | + | NOTE: if someone has already created the project page, speak to this person and see if you can join them. If so, simply add your name to the '''Project Leader(s)''' page. Otherwise, you can become a contributor later. | |
− | == | + | == Generate an OOo XREF based on Dehydra == |
− | + | Using Dehydra, build OOo and generate an xref in the same way we are indexing for dxr. | |
− | + | TODO: more info.... | |
− | + | Resources: humph, taras | |
− | == | + | == Existing Subjects proposed by OpenOffice.org Education Project == |
− | + | FIXME : the projects proposed on the OpenOffice.org Education Project will be adapted to the current section. | |
− | + | Waiting we encourage you to have a look at the '''[http://wiki.services.openoffice.org/wiki/Education_Project/Effort OpenOffice.org Education Project Effort page]''' | |
− | + | Other links: | |
+ | |||
+ | [http://wiki.services.openoffice.org/wiki/Education_Project OpenOffice.org Education Project on the Wiki] | ||
− | |||
− | + | [[User:Ericb|Ericb]] 21:05, 26 September 2008 (UTC) |
Latest revision as of 14:17, 17 April 2013
Contents
- 1 Introduction
- 2 SBR600 Potential Projects
- 3 Potential Eclipse WTP Projects
- 4 Potential Mozilla Projects
- 4.1 Sample Project
- 4.2 Improve Localization build system
- 4.3 Create a cross-repo pushlog to see all locales's checkins
- 4.4 Thunderbird SMTP Auto-Sensing
- 4.5
XULRunner Application Packaging - 4.6 'Compact databases' feature for Mozilla calendaring applications (Lightning, Sunbird)
- 4.7
Spellcheck Extension for Arbitrary Web Pages - 4.8
Modify Firefox to handle files downloaded to Temp more appropriately - 4.9 Standalone Test Harnesses
- 4.10 Add source checkout to buildbot
- 4.11 Port the Firefox Release Repackager to other platforms
- 4.12 gdb symbol server support
- 4.13 gdb support for minidumps for post-mortem debugging
- 4.14 RegressionTry
- 4.15 Extend Try Server to test Thunderbird patches
- 4.16 Add DTrace probes and scripts for Mozilla code base
- 4.17 Plugin Code Test Suite
- 4.18 Create self-serve symbol upload system
- 4.19
Add OpenLayers test suite to Mozilla - 4.20
Import sqlite test suite - 4.21 Make chromebug work in Thunderbird
- 4.22 Help gristmill move forward in Thunderbird
- 4.23 Help Calendar integration on Trunk
- 4.24 HTML page set sanitizer
- 4.25 3D object picking
- 5 Potential OOo Projects
Introduction
This is a list of potential projects that need people.
Students: If you'd like to work on one of these, move the chosen project to the Project List and create a page for your work based on the Sample Project template.
Open Source Community Members: We welcome your recommendations for potential projects. Please create an account on this Wiki and create a description for your proposed project below. Please list your contact info (just an IRC or FAS2 name is OK) as well as links to any related web pages as Resources for the proposed project. (Questions? Ask Chris Tyler or David Humphrey).
SBR600 Potential Projects
For possible projects for the SBR600 Software Build and Release Course, lease see the SBR600 Potential Projects page.
Potential Eclipse WTP Projects
See the list of potential bugs here.
Potential Mozilla Projects
Sample Project
This is a sample project stub. You can use the template for Sample Project in order to create a project page for one of the stubs below. This is how you 'sign-up' for a project.
NOTE: if someone has already created the project page, speak to this person and see if you can join them. If so, simply add your name to the Project Leader(s) page. Otherwise, you can become a contributor later.
Improve Localization build system
Currently it requires many many steps to produce another language of Firefox. It would really easy to package these many steps to reduce the required knowledge to generate a new language.
Adding a few make steps to wrap this process would help everyone. This is a very easy project to tackle but very benefitial if the time and love is given to it.
Reference: armenzg
Create a cross-repo pushlog to see all locales's checkins
We currently check many different repositories to trigger builds when a developer makes a change. We also check the localizer's repositories to see if they have pushed any changes. The problem is that we have close to eighty different localization repositories and that takes a long time to check each one of them. If we had a joint view that would improve our systems. An example of that view is: https://l10n-stage-sj.mozilla.org/pushes/ but the format should be more like this: http://hg.mozilla.org/mozilla-central/pushlog which is what our release engineering systems check for. This project would require you to hack hg and pushlog to make it work. armenzg has many blog posts explaining how to setup pushlog in your local machine.
Reference: armenzg - Bug 498641
Thunderbird SMTP Auto-Sensing
Modify Thunderbird so that it uses the correct SMTP server for your current network and IP. In other words, if you are at home, use your home ISP's SMTP, but if you use a school wireless network, switch to the school's SMTP. These various SMTP configurations should be manually controlled by the user, that is, you don't have to try and figure out which SMTP to use. Rather, it should be configurable in an options dialog.
References: #maildev
XULRunner Application Packaging
Help to develop an automated packaging system for XULRunner applications.
Resources: plasticmillion, mfinkle, #mozpad, #prism
'Compact databases' feature for Mozilla calendaring applications (Lightning, Sunbird)
Add the possibility to compact the database for local storage calendars based on SQLite using the VACUUM command. At the moment the local database for events and tasks will not get smaller even if you delete your tasks and events. This has serious performance implications for people, who work a lot with their calendar.
See also Bug 352976
Resources: ctalbert, daniel in #calendar on irc.mozilla.org
Spellcheck Extension for Arbitrary Web Pages
Write an extension to leverage the existing spellcheck code in Mozilla and add the ability to highlight spelling mistakes for a given web page (i.e., vs. a textbox).
Modify Firefox to handle files downloaded to Temp more appropriately
Often files downloaded by the browser are put in a temporary folder that is emptied on close. Users (and especially novice users) should be protected from inadvertent data loss as a result of important files being saved to this temp folder. This project will add fixes to the browser so that users are protected. Ideas include:
- Make Firefox aware of common productivity file types (e.g., .doc, .pdf) and whitelist these types so they aren't deleted
- Have office type files download automatically to a documents folder instead of temp
- Firefox could check the timestamp of such files and delete them only if the timestamp is the same as when it was originally saved by the browser (i.e., has not been edited)
- Warn the user on closing the browser that files are going to be removed
- Assuming files still exist on start-up (see above), alert the user that these files are still there (similar to "New Session or Restart Existing?" dialog)
- Have the browser pop-up a Save As dialog instead of automatically saving to temp, and use a documents path
Other ideas are possible, and a combination of these might be necessary. Ultimately, this fix should target regular users without much knowledge of the filesystem.
Resources: ted, mfinkle
See also: bug 280419 and bug 369108, and code here.
Standalone Test Harnesses
Mozilla uses several systems for automated testing, including Mochitest, Reftest, xpcshell unit tests, and crash tests. Currently, to run these test suites or develop new tests, you need to build your own Firefox with --enable-tests, and run the tests from the object directory. Ideally there would be a standalone package available for download that would let you run these test suites against any Firefox build, to ease development of new tests and allow more people to get involved with automated testing.
- References: http://xoatlicue.blogspot.com/2008/01/standalone-test-product.html
- Possible Resources: Ben Hearsum
Add source checkout to buildbot
Unlike many open source projects, it's not possible to do a CVS checkout and build the code. This is due to the complex module and version combinations necessary to get and build a particular product, for example Firefox. To accomplish this, Mozilla uses client.mk, which provides a set of rules for getting and building the code.
Increasingly, Mozilla is moving toward using the Python based buildbot system for automated builds and tests. It would be good to add a Source class for client.mk checkouts. This would mean creating a a general Source class that understands the idea of checking out a file, and which could then be used to drive the checkout and allow for integration with client.mk.
References: Ben Hearsum (bhearsum), Rob Helmer (rhelmer)
Port the Firefox Release Repackager to other platforms
The Firefox Release Repackager allows one to take a released version of the browser, deconstruct it in order to add some custom extension, then repackage it. This allows organizations to ship slightly modified versions of stock releases, useful for their users. Currently the repackager only works on Mac.
Port this tool to Windows and/or Linux. In order to do this you'll need platform binaries of 7zip, or perhaps you can use P7zip to do a cross platform version. There are other ideas that can be added to this tool as well for making it more flexible.
Resources: mkaply, bsmedberg
gdb symbol server support
Microsoft's debugger allows the use of a symbol server, which it can use to download debugging symbols for programs and libraries. Mozilla provides this for nightly and release builds on Windows, and it's useful for people to debug their crashes locally without having to build a debug build. This functionality doesn't exist for Linux or OS X, where gdb is the debugger. gdb does support loading debug symbols from external files, so it could probably be extended to look for the symbols on a web server first.
References:
- https://bugzilla.mozilla.org/show_bug.cgi?id=412722#c5
- http://www.linuxcommand.org/man_pages/objcopy1.html (see --add-gnu-debuglink and --only-keep-debug)
- http://www.totalviewtech.com/Documentation/Tips/gnu_debuglink.html
Resources: ted, Stan Shebs, Jim Blandy
gdb support for minidumps for post-mortem debugging
Microsoft's debugger allows for loading a minidump produced during a crash and then performing post-mortem debugging. GDB supports using core files for the same purpose. In Firefox 3, we produce minidump files on all of our supported platforms for use with our Breakpad crash reporting system. Sometimes people may want to debug a crash locally using one of these minidumps. On Windows, using the symbol server, they can simply load the minidump in their debugger. Currently there is no equivalent on Linux or Mac. Extending gdb to support loading minidumps for post-mortem debugging would be useful. This project may rely on the gdb symbol server project to be truly useful.
References:
- http://code.google.com/p/google-breakpad/source/browse/trunk/src/google_breakpad/common/minidump_format.h
- http://www.codeproject.com/KB/debug/postmortemdebug_standalone1.aspx
- http://sourceware.org/gdb/current/onlinedocs/gdb_3.html#SEC7
- http://sourceware.org/gdb/current/onlinedocs/gdb_9.html#SEC80
Resources: ted, Stan Shebs, Jim Blandy
RegressionTry
Make it possible to look for bugs across old nightly builds of Firefox using automated tools. For example, regression-search is a script that allows you to do binary searches across binaries, looking for the existence of a bug. This could be improved through the use of tools like co-scripter. Ideally the user could look for bugs in automated ways, without having to download and install tons of browser versions.
Resources: db48x, ted
Extend Try Server to test Thunderbird patches
"Specifically, Mozilla has a great system called “try servers” where one can submit patches against the tree, and the build system runs builds on Linux, Mac and Windows, using those patches, then serves those builds for testing. This is really helpful to figure out if proposed patches solve specific problems...The only problem is that there’s a little bit of patching needed to the try server code itself to make it able to work with other targets besides Firefox, as described in bug 431375" (Ascher)
Add DTrace probes and scripts for Mozilla code base
DTrace was created by Sun in OpenSolaris to allow developers to write simple scripts in order to probe and instrument executing programs in a way not possible otherwise. One of the advantages of DTrace is that it allows you to turn on probing when you need it, but not incur an execution penalty with regard to performance (i.e., when probes aren't being scripted, they aren't run). This requires developers to add "probes" to their source code. For example, if you wanted to know when a particular function is entered/exited, get info about what happened, etc. you could add probes to the particular function. Writing the probes is not difficult, however there are hundreds or thousands of probes that Mozilla would like across its code base.
Resources: sayrer
Plugin Code Test Suite
Create a plugin test suite. There are currently no tests of any kind, and this code is very brittle and not well understood. This would involve creating a plugin or set of plugins and some html/js to drive that plugin in order to push test coverage. Maybe look at the JRE tests, create some specific plugin cases (e.g., swf to load that tests flash specific code). The newly announced Google Chromium browser seems to have something like this with regard to using the npapi for driving tests via plug-in. See also docs on IPC and plug-in design in Chromium.
This will require C programming, as well as light web development (html, js, perhaps swf).
Resources: jst
Create self-serve symbol upload system
Mozilla has a symbol server which is used by developers to debug issues in release builds that don't include debug information (i.e., symbols). However, many crashes are related to third-party binary plugins or extensions, for which Mozilla has no symbols. This project would create a web-based self-serve solution for third-parties to upload symbols for their binary components in breakpad-formatted .sym file format. Ideally this could happen in an automated way, such that third-parties could add a step to their build system to do it automatically with each release. See bug# 419879.
Resources: ted
Add OpenLayers test suite to Mozilla
Mozilla uses many common JavaScript library test suites to add additional coverage to it's JavaScript implementation. One test suite that is not currently used by Mozilla, but could be, is the OpenLayer's js test suite. See bug# 399311.
Resources: sayrer
Import sqlite test suite
Mozilla uses an embedded version of SQLite extensively to store data such as bookmarks, history, etc. To insure that it runs properly within Mozilla, it would be good to add the entire sqlite test suite to Mozilla's tests, so that testing the browser also means testing sqlite. The sqlite test suite is written in TCL and needs to be ported to JavaScript. Some work has already been done, but more is required to get full test coverage.
References: bug 391756, http://www.0xdeadbeef.com/weblog/?p=368
Resources: sdwilsh
Take : Park,KiWon
Make chromebug work in Thunderbird
TBD
Help gristmill move forward in Thunderbird
TBD
Help Calendar integration on Trunk
TBD
Resources: Fallen
HTML page set sanitizer
The Talos performance testing system at Mozilla currently runs on a large set of web pages pulled from the Alexa Top 500. These pages can't be redistributed, since they're mirrors of copyrighted web pages. In addition, many of them contain adult content. This makes it difficult for people to duplicate the Talos results or to test changes that have an expected performance impact.
A useful solution to this problem would be a tool that takes a mirrored copy of a website and "sanitizes" it, by changing the page text and image contents (making them junk or filler text or something). The caveat here is that this *cannot* change the performance characteristics of the page. For example, taking a page that is all Chinese text and replacing it with "Lorem Ipsum" filler text would cause the page to take different text rendering paths, which would change what is measured. As another example, making all JPEG images solid black would likely make them decode and render much faster. Any solution should have some analysis performed that shows that performance is not significantly altered in the sanitized page set.
Resources: ted (but find someone better!)
3D object picking
Canvas 3D JS Library is a library for the creation and manipulation of 3D scenes in the browser without needing to know much 3D programming. Part of this project is to handle mouse input. This particular project looks at how to perform "picking". That is, when given a coordinate within the canvas, return the 3D object at that location.
Resources: cathy, Andor (http://www.c3dl.org)
Potential OOo Projects
Sample Project
This is a sample project stub. You can use the template for Sample Project in order to create a project page for one of the stubs below. This is how you 'sign-up' for a project.
NOTE: if someone has already created the project page, speak to this person and see if you can join them. If so, simply add your name to the Project Leader(s) page. Otherwise, you can become a contributor later.
Generate an OOo XREF based on Dehydra
Using Dehydra, build OOo and generate an xref in the same way we are indexing for dxr.
TODO: more info....
Resources: humph, taras
Existing Subjects proposed by OpenOffice.org Education Project
FIXME : the projects proposed on the OpenOffice.org Education Project will be adapted to the current section.
Waiting we encourage you to have a look at the OpenOffice.org Education Project Effort page
Other links:
OpenOffice.org Education Project on the Wiki
Ericb 21:05, 26 September 2008 (UTC)