wiki:SummerOfCode

Version 19 (modified by pguyot (Paul Guyot), 14 years ago) (diff)

More details about task 3.

Google Summer of Code, 2007

This is the main tracking page for MacPorts/Google Summer of Code 2007.

If MacPorts is selected as a Summer of Code participant, we'll post that information here and provide additional information for student applicants.

Status

MacPorts is currently in the process of applying for organizational acceptance by Google for Summer of Code 2007.

  • The organizational application for MacPorts has been filed with Google. We'll be notified by google of their decision by Wednesday, March 14, 2007 (PST).

Mentors

The following committers have agreed to be mentors for SoC (append @macports.org for e-mail)

  • James Berry (base, general, ports) [jberry]
  • James Cox (general) [james at imajes.info]
  • Juan Manuel Palacios (general) [jmpp]
  • Paul Guyot (base, general, ports) [pguyot]
  • Markus Weissmann (base, general, ports) [mww]

Tasks

This is a list of some potential tasks that student SoC members could undertake. These are just ideas, and while they express our current concerns, we are open to blue-sky projects related to MacPorts. We strongly suggest that you discuss your contribution ideas with potential mentors by e-mail, on the MacPorts development list or the irc channel before applying.

Main Tasks (Base/Infrastructure Code)

Task 1: Dependencies

This task consists in implementing a new dependencies engine for MacPorts. The current dependency engine properly deals with installing packages, but it does not deal satisfactorily with dependencies on variants (and versions), uninstalling and upgrading. This very challenging task requires a complete formalization of the use cases before any implementation, as well as a deep understanding of the dependency relations (static linking, dynamic linking, runtime use).

Classification: very challenging task
Programming languages: Tcl and C
Potential mentor: pguyot

Task 2: Python Group

Improve python group code (medium)

Classification: medium task

Task 3: Virtual "chroot"

MacPorts uses dynamic library injection code to control and monitor file system accesses of ports when they are compiled. This technique is used for the trace mode which is used to automatically figure out dependencies between ports. The proposed task consists in upgrading this mechanism to transform the trace mode (which reports) into a virtual chroot environment which will contraint ports to be compiled in a controlled environment. For example, if a port does not mention a dependency on the jpeg port, the configure script, the compiler and the linker will not see jpeg port binaries, includes and libraries. This task could extend up to defining virtual ports based on software installed with traditional MacOS X packages (for which list of files are saved in /Library/Receipts/). Part of the challenge includes the design of an efficient communication channel between the dynamic library and the Tcl code and a complete study of possible holes in this virtual chroot environment.

Classification: challenging task
Programming languages: Tcl and C
Potential mentor: pguyot

Task 4: Binaries

Working in concert (or cooperatively) with whomever does (virtual chroot), get package building working all the way to a point where complete package builds can be done for all of MacPorts and the results made available to users as pre-build package collections.

Classification: major task
Potential mentor: pguyot

Task 5: Graphical user interface

Come up with a front-end for installing packages (or building ports, where no package exists) for naive end-users.

Classification: major task

Task 6: Pkgview (depot-to-depot dependencies)

Take what Will started with the notion of a depot location vs an installed location (e.g. /opt/local/var/db/dports/software/gawk/3.1.5_2/opt/local/bin/gawk vs /opt/local/bin/gawk) and finish the job, making depot-to-depot dependencies finally work. That is to say that if port foo depends on version 1.2.3 of port bar, it should be compiled and linked in such a way that it's wired to the depot location of bar, not the "activated" location. That will finally fix the fragility problem where deactivating port bar vers n-1 in order to install port bar vers n (because other things depend on n) won't also require breaking everything that relies on n-1.

Classification: major task
Potential mentor: pguyot

Task 7: Root privileges

Implement facility to reduce need to execute macports as root, by adding facilities to mark ports as requiring root, by dropping root privileges where possible, and perhaps by keeping repository in per-user space.

Classification: medium task

Task 8: Portfiles

Sweep through all Portfiles and look for useful opportunities to add more built-in Tcl functions that make Portfiles more (usefully) terse, powerful, flexible or easier to write. I'm sure there is an entirely family of helper functions yet to be written here. (medium)

Classification: medium task

Additional tasks

Task 9: Ports

  • Porting of additional packages to MacPorts
  • Cleanup and/or remove obsolete ports

Classification: medium task

Task 10: Documentation and Website

  • Improve macports documentation (minor - medium)
  • Improve macports website (minor - medium)

Classification: minor task