Summer of Code

From Genunix

Jump to: navigation, search

The OpenSolaris Project will be a mentoring community in Google's 2006 Summer of Code program. Currently, there are three threads (discuss, marketing, desktop) on the OpenSolaris Jive discussion forums where community members are discussing potential projects to offer. Please feel free to join these conversations, propose a project, and list yourself as a volunteer mentor.

Below is a list of mentors and projects that OpenSolaris community members will be offering students. The project ideas are from leaders in various OpenSolaris communities, projects and distributions.


Contents

OpenSolaris Program Administrator for the Google SoC

Volunteer Mentors

The following people have volunteered to mentor students as OpenSolaris participates in the Google SoC. See their project areas for more information and contact information.

  • Desktop: Brian Cameron, Glynn Foster, Darren Kenny
  • Chime Visualization for DTrace: Tom Erickson
  • Exploiting Parallelism to Optimize Build Performance: Mike Pogue, Bart Smaalders, Mike Kupfer
  • OpenGrok -- wicked fast source browser: Chandan Bellur Nandakumaraiah
  • Marketing: Tim Foster
  • Documentation: Michelle Olson
  • Internationalization and Localization: Young J. Song
  • Polaris -- Solaris on PowerPC: Tom Riddle
  • Security Community: Darren Moffat
  • NexentaOS: Alex Ross

Desktop Community

Project Home: The OpenSolaris Desktop Community

Contacts/Mentors: Brian Cameron (Brian.Cameron@sun.com), Glynn Foster, Darren Kenny

Project Ideas:

  • Integrate JMF with GStreamer via JNI so that the Java Media Framework can use GStreamer plugins for formats that GStreamer supports but JMF does not have a direct implementation.
  • Write a SunAudio GStreamer audio source plugin for recording audio
  • Backport GStreamer 0.10 and media players to Solaris 10
  • GNOME's accessible themes have many missing icons and there is work to finish the Tango project. Work suitable for graphic designers.
  • GNOME User docs, API docs, and manpages need improvement.
  • Work on GNOME dictation or an improved GNOME magnifier using compositition for accessibility.
  • Accessiblity QA testing.
  • Bluetooth stack - not just desktop, requires kernel work, but would be of most benefit to the desktop user.
  • Encrypted Filesystems support in GNOME based on work done at : http://www.opensolaris.org/os/community/security/projects/xlofi/
  • Firewall/IPsec configuration UI - the ipfilter firewall on Solaris is sadly lacking a decent UI to edit it's configuration. Ideally we need a single GUI to configure Packet Filtering and Encryption/Authentication policy.
  • Service reduction - come up with a desktop configuration of services, at the moment there are far too many services run by default for a desktop platform.
  • File Event Mechanism - we need a userland API to make use of the File Event Mechanism kernel API, something like inotify/dnotify on Linux - but would be nice to support distributed file systems too since NFSv4 makes use of this in the kernel [Someone in Sun is already looking at this - see http://mail.opensolaris.org/pipermail/perf-discuss/2006-May/000540.html]
  • GNOME development environment integration in to the Netbeans IDE.
  • Provide GNOME desktop hooks which would allow sunray utactions (specifically java card removal) to do something useful such as:
     Tell GAIM instant messenger that you are away.
     Tell screensavers, stock tickers, clocks and other visually active applications to stop updating the screen for a while.
     Tell other GNOME applications to go into a low resource usage mode.
  • Write a porting tool which would allow customizations of desktop files and gconf key to be migrated automatically to newer GNOME releases.
  • Make gnome-vfs understand zfs snapshots, clones, mirrors and rollbacks. Modify nautilus to present this in a way which is useful to a desktop user or developer.
  • Port the GNOME Partition Editor (gparted) to Solaris.

Chime Visualization Tool for DTrace

Project Home: Chime Visualization Tool for DTrace

Contacts/Mentors: Tom Erickson

Project Ideas:

  • A student interested in data visualization could gain experience with JFreeChart, a SourceForge project used by Chime, and design some new display types besides the existing bar and line graphs.
  • There's a client/server prototype optionally used by Chime that someone could replace with JMX or cacao or something that supports user authentication, etc.
  • Chime needs a wizard or Netbeans-style property editor for creating new displays (a good chance to get familiar with XML).
  • Chime needs a way to playback XML recordings without having to decode an entire file into memory all at once.
  • Someone might want to make Chime run in a web browser.
  • A new set of displays designed specifically to answer questions about one aspect of the system could be an interesting project, possibly resulting in a new tool separate from Chime.
  • More ways to rearrange D programs (or create new D programs) in response to GUI gestures could make Chime better at answering questions. Specific dtrace(1M) use cases could provide a useful starting point for someone to make Chime follow the same steps more easily.

The Chime project will be a good introduction to DTrace. Some of the ideas above may require expertise from the community or a more specific problem statement. Anyone who has tried the tool and has a suggestion, please share it.

Another idea: Peter Tribble in the observability community has done some cool work with kstats: http://www.petertribble.co.uk/Solaris/jkstat.html

Someone could build on that to solve a specific observability problem.

Exploiting Parallelism to Optimize Build Performance

Project Home:

Contacts/Mentors:

  • Mike Pogue
  • Bart Smaalders
  • Mike Kupfer

Background: OpenSolaris consists of a large number of source code files, which can theoretically be compiled in parallel. Yet in practice, adding more than 6-8 CPU's doesn't improve build time. This means that we have a hard time taking advantage of highly parallel CPU architectures like the Niagara/T1000, which supports 32 simultaneous threads on one chip.

There may be many reasons for the lack of parallelism. Some of these are explored in this paper from 2001. Other suggestions for improving build performance include ccache, Electric Cloud, pre-processing include files, copying files to /tmp/usr/include, creating "flatter" makefiles with targets from multiple directories, SCons, and distcc.

This project will explore how to make large builds (e.g. OpenSolaris) go faster, by exploiting thread and core-level parallelism on modern CPU's, e.g. Niagara/T1000 (32 threads per chip) and/or AMD64 (dual-core chips, multiple chips per box). Access to these kinds of hardware will be provided, so that many different techniques can be tried for improving build performance.

OpenGrok - wicked fast source browser

Project Home: OpenGrok

Contacts/Mentors: OpenGrok Forum

Project Ideas:

  • Add support (HistoryAnalyzers) for source code management systems like git, mercurial.
  • Annotate source listing with revision information.
  • Write Analyzers for specific languages like Java, Perl, python.
  • write 'plugins' for editors (vim, xemacs, jedit, IDEs like Netbeans) that use the OpenGrok search index.

Marketing Community

Project Home: The OpenSolaris Marketing Community

Contacts/Mentors: Tim Foster

Project Ideas:

These ideas relate to how easy it is to demonstrate OpenSolaris to users. The problem we're trying to solve, is that a person performing a demo may not be sufficiently versed in the many different techologies in OpenSolaris. We would like the OS to be able to show itself off.

  • OpenSolaris Demo Content - Demonstrations that show aspects of technologies integrated into OpenSolaris

Background: There are many aspects to OpenSolaris that we would like to be able to demonstrate, but there isn't an easy way to do that without having an expert on hand.

Requirement: This could be addressed in two ways:

  • Record a movie (flash, or traditional mov,avi,etc.) of a demo that people can watch
  • Write a script that effectively demonstrates the technology

We should be able to provide at least DTrace, Zones, SMF, ZFS and BrandZ demos.

  • OpenSolaris Demo Package

Background: Demoing OpenSolaris can be cumbersome if the user has to walk through an install to get to it, or would have trouble getting to an OpenSolaris system in order to experiment with what they've just been shown.

Requirement: This project calls for a package that adds a new SMF milestone. On boot (via a grub menu entry which can "boot -m milestone=opensolaris-demo") we instantly login to a guest account showing the OpenSolaris desktop, with a movie player which cycles through a set of OpenSolaris demos, with perhaps two or three terminal windows also open on the desktop. This package could then be added to any LiveCD distribution of OpenSolaris, so that the OS will be running while the viewer is watching the demo, and the viewer could play along with the demo, or otherwise explore the system.

The "code" required here, is the work needed to create a special "demo" milestone, the integration needed to allow the instant login to an X session running the demo, and the packaging and delivery of this, such that the demo works on all current OpenSolaris live-cd distributions.

Documentation

Project Home: OpenSolaris Documentation Community

Contacts: mailto:michelle.olson@sun.com

Background: The mission of the documentation community for OpenSolaris is to provide open source technical documentation and to develop new information in support of OpenSolaris.

A student developer might augment the work that they complete in another project area by working with a technical writer to document their completed project. For example:

  • Write instructions that describe how you improved OpenSolaris build performance
  • Write a design document that describes the implementation of compiling in parallel to improve build performance
  • Write instructions that describe how you enhanced the basic OpenSolaris privilege set
  • Write a design document that describes how you implemented enhancements to the basic privilege set
  • Write instructions that describe how you developed a new plugin for OpenSolaris audio recording
  • Write instructions for how to install and configure the new audio plugin

A student developer could also work with the docmentation tools developers to add support for transformations we need for making documentation open source and providing a collaborative environment. For example:

  • Add support for DocBook5 to HTML transformations
  • Add support for ASCIIdoc to generate HTML and PDF from text

Internationalization and Localization

Project Home: OpenSolaris Community: Internationalization and Localization

Contacts/Mentors: Young J. Song

Project Ideas:

  • Support for server-side localization:
    • versions of gettext() and friends that take a language tag or locale as an argument
    • per-thread locale settings, at least for LC_MESSAGES
  • Korean translation glossary review/creation: Review and create Korean glossary that is invaluable to future Solaris GUI translation and potentially, more open source communities.
  • Chinese Pinyin input method development
    • Mentor: Phill Zhang
  • collaborative translation tool
    • Aims to make translation a collaborative activity for many language experts out there in the community as opposed to done by translation vendors. An easy to use tool which can be a front end for users to easily change translation of any application running in the system.
    • Mentor: Suresh Chandrasekharan

Polaris: Solaris on PowerPC

Project Home: A Community Focused on Solaris/PPC

Contacts/Mentors: Tom Riddle

Overview: Sunlabs is one of the main contributors in the effort to port Solaris to the PowerPC architecture. Our overall focus is a more of a lightweight implementation of the kernel and enabling solaris upon a true embedded HW architecture is a necessary first step.

Project Ideas:

  • Kernel Port related: port of KRTLD, KMDB
  • Build related: Enhance current Make/build structure for seamless cross compilation environments; create a configuration management tool to support multiple PPC platforms, options; port of ctfconvert, ctfmerge
  • Drivers: Any and all that are target related
  • EFIKA (MPC52xx) and Power Assessment: Review what would be required to port the VM from the current G4 target to these architectures, tradeoffs and enhancements.

Here's your chance to really become involved with the details of a true kernel port. Be on the front end of an exciting, rewarding community project and blaze the trail where only a few have been before!

Security Community

Project Home: [ http://opensolaris.org/os/community/security/ ]

Contacts/Mentors: Darren Moffat

Project ideas:

  • Expansion of basic privileges: OpenSolaris uses privileges both for process empowerment and also has a currently small set of basic privileges that can be removed to restrict processes. The basic set should be enhanced so that inbound and outbound network access can be restricted even for non privileged ports.
  • A Linux Capability to OpenSolaris privileges(5) compatibility library: There is an almost 1:1 mapping between Linux Capbilities and OpenSolaris privileges(5), a userland compatibility library would help the porting of privilege aware applications from Linux to Solaris and would also help the BrandZ project for running Linux applications on Solaris.
  • Superlight Zones: Using the Zones technology to compartmentalise applications, say httpd, without requiring an "installation" of a zone. The goal is near zero disk impact.
  • User Cred Manager: Solaris (and thus now OpenSolaris) has long had the keyserv daemon for storing and controlling access to sensitive user keys. GNOME (and MacOS X) now have a keyring for storing keys that GNOME uses. We also have ssh-agent for ssh private keys. We have the kerberos ticket cache. Integration of all of these into a single "User Credential Manager" would be very helpful.
  • Open Source IKE solution for OpenSolaris: The IPsec code for OpenSolaris is open, but unfortunately for OpenSolaris distos other than Sun's Solaris there isn't an open source IKE solution. This project is to provide an Open Source Solution for IKE on any OpenSolaris distro. This project can be done in any number of ways, including but not limted to porting an existing solution like Racoon (used by many Linux/BSD distros including MacOS X).

NexentaOS

Project Home: http://www.gnusolaris.org

Contacts/Mentors: Alex Ross

Project Ideas:


  • Gamin plugin and user space library to enable usage of FEM. Solaris FEM provides close to Linux's inotify kernel-level functionality. Since the introduction of NFSv4 in Solaris 10, a new kernel level module was provided in Solaris, called the File Event Monitoring API (FEM). This kernel API enables other kernel modules to monitor file activity by intercepting file system modifications at the v-node level.




  • Ada/GCC does not work, port needed.

ZFS

Project Home: [ http://opensolaris.org/os/community/zfs/ ]

Contacts/Mentors: Eric Schrock

Project ideas:

  • new compression algorithms
  • new checksum algorithms
  • block allocation visualization/optimization
  • adaptive block size picker (for record-based access)
  • integrated rolling snapshot functionality
  • integrated MDB backend for pools (re-implement zdb as a bunch of mdb dcmds/walkers)
  • background disk scrubbing
  • user undo
  • snapshot 'diff'
  • Stable probes to visualize DMU and SPA behavior
  • Port ZFS to other platforms

More information

Personal tools