Difference between revisions of "Potential Projects"

From CDOT Wiki
Jump to: navigation, search
(Ideas Pool)
m (Ideas Pool)
Line 17: Line 17:
 
== Ideas Pool ==
 
== Ideas Pool ==
  
Lots of good ideas are listed in http://fedoraproject.org/wiki/SummerCoding/2008/Ideas. If you want to use one of these project ideas, please discuss it with [[User:Chris Tyler]] before selecting it.
+
Lots of good ideas are listed in http://fedoraproject.org/wiki/SummerCoding/2008/Ideas. If you want to use one of these project ideas, please discuss it with [[User:Chris Tyler|Chris Tyler]] before selecting it.
  
 
== Free-open font packaging ==
 
== Free-open font packaging ==

Revision as of 00:01, 30 August 2008

Contents

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).

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 http://fedoraproject.org/wiki/SummerCoding/2008/Ideas. If you want to use one of these project ideas, please discuss it with Chris Tyler before selecting it.

Free-open font packaging

The gratis release of a collection of web fonts in 1996 had a devastating effect on many font projects, drainning the font market in western countries and limiting the use of other typefaces to typography niches. However, this program has been discontinued and the gratis versions of those fonts are no longer updated. Since Unicode.org's codification pace of human scripts has not abated, and the font formats have evolved (with the OpenType specifications), this font set is increasingly obsolete. Also, many scripts were never covered, leaving entire world regions without mass access to a way to write their language in the digital age.

An operating system of browser that relies on the 1996 font set for its text rendering is not really free. And text is still our main information media.

Faced with this problem many individuals and organisations have started creating and publishing new fonts, but they lack the clout of multinationals to get successfully distributed, and are often poorly structured. The aim of this project would be to identify as many of those free fonts as possible and package them in Fedora. The result would serve as a core component of Fedora's art spin, and as basis for a richer international experience in Fedora (and derivatives such as OLPC)

This project is mainly targeted at free software (in this case fonts) distribution dynamics. You'll learn some rpm packaging skills, and be exposed to many different font projects worldwide, some big, some small, some efficient, some poorly run.

A project second stage would be to capitalize on the experience acquired and publish a set of distribution best practices for font authors, including recommended release composition, generic makefile, etc.

The Fedora Fonts special interest group will provide mentoring, technical support, and documentation. An initial list of fonts to package has already been published.

Contact: Nicolas Mailhot <nim AT fedoraproject.org>

Corresponding Source Web App

Finish design and implement web application that provides downloadable SRPMS for any package+tag in the Fedora Package Source Code Control system. While we provide SRPMS for all packages at release, the updates and rawhide trees churn their packages more rapidly, and will remove the koji-built SRPMS when the binary packages are removed. This would allow people to request source corresponding to the packages they have on ISO media or otherwise.

Resources: MattDomsch, http://git.fedorahosted.org/git/?p=correspondingsource.git;a=blob;f=DESIGN;hb=HEAD

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

Packaging JBoss

JBoss is a Java middleware project with a large number of sub projects. Packaging JBoss and maintaining them is a challenging task and would require several weeks of full time work. Since OpenJDK and a number of Java components is already in Fedora 9, it should help get started.

Initial Contact: Greg Dek <gdk AT redhat.com>

References

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

Potential Fedora+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.

NetworkManager Web Authentication

NetworkManager knows how to connect to many different types of networks, both wired and wireless, and can auto-authenticate to WEP and WPA networks. However, it can't auto-authenticate to networks that require a web-based login, which includes many wired and wireless networks such as SeneNET and AirYork.

Modify NetworkManager so that it talks (though dbus) to a Firefox extension for automatic login to a web-authenticated network.

Resources: ctyler, (roc, callion for dbus)

Create a MDRK Spin

The Mozilla Developer Resource Kit is a set of tools, code, and documentation intended to make it easy for new Mozilla developers to get up to speed. Package the MDRK components (including the software tools, a Moz source tree, and documentation) as RPM packages and then create a Fedora "spin" (Live + Installable DVD) of these packages.

Edit the spin image (from Revisor/Live CD Tools) so that, in addition to being a bootable/installable disc, the image can be run in a VM under Windows/Mac OSX. The disc image must be edited to include Windows/Mac OSX versions of the tools, so that if the disc is inserted into a running Windows or Mac OSX system, the appropriate version can be installed.

Resources: humph, ctyler, http://142.204.133.123/mxr, http://zenit.senecac.on.ca/wiki/dxr

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.

Mozilla Tree Visualization

Use the canvas element in order to create a generic front-end for data visualization of the Mozilla source. Many types of information about the Mozilla project can be keyed to the source tree. For example, file change-rates, code-coverage, bug activity per module, checkins per module, etc. The visualization will be a heatmap, showing certain types of activity in the tree. Doing this visualizaiton using canvas3d would allow for a third axis, and changes over time to be shown.

Resources: Cathy

Mozilla Data Visualization Back-ends

Create a data-source for the Mozilla Tree Visualization project. This means data mining cvs.mozilla.org, bugzilla.mozilla.org, bonsai.mozilla.org and preparing the data for use in a heatmap visualization.

Resources: Cathy

Add Offline Support to an open source web app

Firefox 3 supports offline abilities, such that web developers can write their apps so they work even when no network is present. Good headway has been made already porting Zimbra. Pick another web app and add offline support, for example: Moodle.

References: mfinkle

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

"Avoid loading the same page twice" Extension

Create an extension to Firefox so that when a bookmark is clicked, and that site is already open in any tab in any window, that tab/window is brought to the front rather than loading the page again.

Related tech and skills: XUL, JavaScript

Firebug "linting" for portability problems

Lots of web developers use Firebug and Firefox for building their applications, but we want those apps to work well in other browsers as well. If Firebug knew about JS or CSS patterns that could cause problems in other browsers, it would make it much easier to have those applications work in all browsers.

Resources: mfinkle, robcee

Add-on update helper tools for developers

As Firefox 3 gets ramped up, there are nearly 3000 add-ons that need to get updated to some degree. Write tools (web or XULRunner) to look in add-ons and find things that developers will need to update. You'll want to work with the Mozilla documentation and evangelism teams to figure out what you're looking for and what to recommend to users.

Resources: mfinkle

XULRunner Application Packaging

Help to develop an automated packaging system for XULRunner applications.

Resources: plasticmillion, mfinkle, #mozpad

'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

Thunderbird Draft Scheduler Extension

Write an extension for Thunderbird so that the user has the ability to mark a draft email for sending later. This is not the same as having to save emails in your DRAFT box because users would have to remember to go back in and click Send later. What is different here is that users could set the date and time for each email to be sent. This feature would be helpful to those who work late into the night but prefer not to send emails at such a late hour. This feature would also benefit support staff, e.g., administrative assistants, who constantly have to send out regular email reminders, e.g., for meetings, timesheets, etc.

Resources: Vivian Ngo

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

Implement Audio and Visual Mute in the Browser

It would be useful if you could pause/mute/freeze distracting content in a tab. Often this means plugins, which are playing music or animating. One possible solution is to expose the API that bfcache uses to freeze/thaw a window, since plugins are themselves "windows." Other platform specific approaches may also be available (e.g., hooking sound API calls in Windows).

References: http://www.melez.com/mykzilla/2007/04/tab-specific-mute.html

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.

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: Rob Helmer (rhelmer)

Thunderbird Image Auto-Resize

Write an extension for Thunderbird that gives functionality similar to that of Outlook, where image attachments in an email can be automatically re-sized to one of a set of smaller sizes. This is helpful for users who would otherwise try to send megabytes of image data, when they can safely scale the images down and still share their pictures with friends.

References: #maildev

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:

  1. https://bugzilla.mozilla.org/show_bug.cgi?id=412722#c5
  2. http://www.linuxcommand.org/man_pages/objcopy1.html (see --add-gnu-debuglink and --only-keep-debug)
  3. 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:

  1. http://code.google.com/p/google-breakpad/source/browse/trunk/src/google_breakpad/common/minidump_format.h
  2. http://www.codeproject.com/KB/debug/postmortemdebug_standalone1.aspx
  3. http://sourceware.org/gdb/current/onlinedocs/gdb_3.html#SEC7
  4. http://sourceware.org/gdb/current/onlinedocs/gdb_9.html#SEC80

Resources: ted, Stan Shebs, Jim Blandy

Profile the build system (why are my Windows builds so slow?)

It's a well known fact that it takes longer to build on Windows than on a comparable Linux or Mac machine. We don't know exactly why, however. There have been many theories, but no real data. Profiling the build system would allow us to figure out where all of the time is being spent. The best place to start might be by adding some profiling to GNU Make, to figure out which targets in our makefiles take the most time. From there, depending on the results, profiling could be added to other parts of the build system to narrow down specific bottlenecks.

References:

  1. http://wiki.services.openoffice.org/wiki/BuildSpeedup - OpenOffice.org did something similar

Resources: ted

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

Mercurial history browsing

We're just starting to use an exciting new distributed version control tool: Mercurial.

One of the exciting things about Mercurial is that the history—the list of all the changes that have ever been checked in—is not linear. It frequently has branches and merges. This is actually a good, important feature, as you know if you've read a little about distributed version control. The downside is that the history becomes a maze of twisty little passages. Benjamin Smedberg's demo shows the history of a repository with lots of merges (each box is a check-in; you can click on the boxes to move around).

There have been a couple attempts at showing history in an intuitive, graphical way. Mercurial comes with a web UI for browsing the repository, including history (here's what it looks like). It also comes with an "hg glog" extension that draws history as ASCII art, and an "hg view" extension that does roughly the same thing with a little GUI. Sadly, none of these applications qualifies as awesome.

Your mission is to rectify this sad situation by writing an awesome browser-based UI for navigating Mercurial repository history.

Resources: jorendorff, bsmedberg

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 an Infobar style warning for window resize/move

Many (poorly behaved) web sites attempt to move and/or resize your browser window. It is possible to stop this behaviour (cf. dom.disable_window_move_resize) but it would be nice to have an infobar that informed the user that a web page attempted to move/resize the window, and allow it or ignore it (default). This behaviour is similar to the current Pop-up Blocker already present in Firefox. NOTE: it is not clear whether such a feature would be accepted in the tree or if this would need to be done as an extension.

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

Colour Management Tests

Write reftests to compare images in order to deal with floating point tolerance. This includes dealing with things like Monitor Profiles, profiles in JPEG (i.e., JPEGs get changed based on colour profile info). See discussion of colour profiles in Firefox 3 here. It would be useful to be able to compare to PNGs with a reftest, perhaps creating an image diff tool, where pixels outside a floating point tolerance (> 0.n) would somehow be highlighted so you can see what is different. Little CMS (lcms) needs test coverage too.

This will require some graphics and image knowledge (i.e., Photoshop, what colour is on a computer, etc).

Resources: #gfx, joe, vlad

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).

This will require C programming, as well as light web development (html, js, perhaps swf).

Resources: jst

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