diff options
Diffstat (limited to 'community')
-rw-r--r-- | community/gsoc/project_ideas.mdwn | 10 | ||||
-rw-r--r-- | community/gsoc/project_ideas/gnat.mdwn | 32 | ||||
-rw-r--r-- | community/gsoc/project_ideas/language_bindings.mdwn | 14 | ||||
-rw-r--r-- | community/gsoc/project_ideas/object_lookups.mdwn | 42 | ||||
-rw-r--r-- | community/gsoc/project_ideas/package_manager.mdwn | 20 | ||||
-rw-r--r-- | community/gsoc/project_ideas/pthreads.mdwn | 49 | ||||
-rw-r--r-- | community/gsoc/project_ideas/unionfs_boot.mdwn | 6 |
7 files changed, 63 insertions, 110 deletions
diff --git a/community/gsoc/project_ideas.mdwn b/community/gsoc/project_ideas.mdwn index e3d2700d..5a274cc5 100644 --- a/community/gsoc/project_ideas.mdwn +++ b/community/gsoc/project_ideas.mdwn @@ -1,4 +1,4 @@ -[[!meta copyright="Copyright © 2008, 2009, 2010, 2011, 2012 Free Software +[[!meta copyright="Copyright © 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc."]] [[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable @@ -78,16 +78,17 @@ See also the list of [Hurd-related X.Org project ideas](http://xorg.freedesktop.org/wiki/Hurd_Porting). <!-- Olaf, wouldn't it make sense to put the following tasks next to each -other: language_bindings, gnat, gccgo, perl_python. --> +other: language_bindings, gccgo, perl_python. --> [[!inline pages="community/gsoc/project_ideas/language_bindings" show=0 feeds=no actions=yes]] [[!inline pages="community/gsoc/project_ideas/virtualization" show=0 feeds=no actions=yes]] [[!inline pages="community/gsoc/project_ideas/file_locking" show=0 feeds=no actions=yes]] +[[!inline pages="community/gsoc/project_ideas/object_lookups" show=0 feeds=no actions=yes]] [[!inline pages="community/gsoc/project_ideas/server_overriding" show=0 feeds=no actions=yes]] [[!inline pages="community/gsoc/project_ideas/tcp_ip_stack" show=0 feeds=no actions=yes]] [[!inline pages="community/gsoc/project_ideas/nfs" show=0 feeds=no actions=yes]] -[[!inline pages="community/gsoc/project_ideas/pthreads" show=0 feeds=no actions=yes]] -[[!inline pages="community/gsoc/project_ideas/smp" show=0 feeds=no actions=yes]] +<!-- Richard, This task actually looks too big for a GSoC project. +[[!inline pages="community/gsoc/project_ideas/smp" show=0 feeds=no actions=yes]] --> [[!inline pages="community/gsoc/project_ideas/sound" show=0 feeds=no actions=yes]] [[!inline pages="community/gsoc/project_ideas/disk_io_performance" show=0 feeds=no actions=yes]] [[!inline pages="community/gsoc/project_ideas/vm_tuning" show=0 feeds=no actions=yes]] @@ -100,7 +101,6 @@ other: language_bindings, gnat, gccgo, perl_python. --> [[!inline pages="community/gsoc/project_ideas/package_manager" show=0 feeds=no actions=yes]] [[!inline pages="community/gsoc/project_ideas/download_backends" show=0 feeds=no actions=yes]] [[!inline pages="community/gsoc/project_ideas/maxpath" show=0 feeds=no actions=yes]] -[[!inline pages="community/gsoc/project_ideas/gnat" show=0 feeds=no actions=yes]] [[!inline pages="community/gsoc/project_ideas/gccgo" show=0 feeds=no actions=yes]] [[!inline pages="community/gsoc/project_ideas/hardware_libs" show=0 feeds=no actions=yes]] [[!inline pages="community/gsoc/project_ideas/cdparanoia" show=0 feeds=no actions=yes]] diff --git a/community/gsoc/project_ideas/gnat.mdwn b/community/gsoc/project_ideas/gnat.mdwn deleted file mode 100644 index ba34cc9c..00000000 --- a/community/gsoc/project_ideas/gnat.mdwn +++ /dev/null @@ -1,32 +0,0 @@ -[[!meta copyright="Copyright © 2009, 2011, 2012 Free Software Foundation, -Inc."]] - -[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable -id="license" text="Permission is granted to copy, distribute and/or modify this -document under the terms of the GNU Free Documentation License, Version 1.2 or -any later version published by the Free Software Foundation; with no Invariant -Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license -is included in the section entitled [[GNU Free Documentation -License|/fdl]]."]]"""]] - -[[!meta title="Porting GNAT (GCC)"]] - -An initial port of the GNU Ada Translator (GNAT) is available for the Hurd. - -The goal of this project is getting GNAT fully working in Debian GNU/Hurd. It -requires implementing some explicitly system-specific stuff in GNAT (mostly in -its runtime libraries), and for that also address a number of issues in Hurd -and other libraries. Knowledge of Ada is a must; some Hurd -knowledge will have to be acquired while working on the project. - -Designing and implementing [[language_bindings]] is a follow-up project. - -Possible mentors: [[Samuel Thibault (youpi)|samuelthibault]], [[Thomas Schwinge -(tschwinge)|tschwinge]]. - -Exercise: Fix one of the known issues of GNAT on the Hurd. - ---- - -[[Open Issue page|open_issues/gnat]]. [Entry in the GCC -wiki](http://gcc.gnu.org/wiki/SummerOfCode#gnat_hurd). diff --git a/community/gsoc/project_ideas/language_bindings.mdwn b/community/gsoc/project_ideas/language_bindings.mdwn index d9a426be..61a3fa01 100644 --- a/community/gsoc/project_ideas/language_bindings.mdwn +++ b/community/gsoc/project_ideas/language_bindings.mdwn @@ -1,4 +1,4 @@ -[[!meta copyright="Copyright © 2008, 2009, 2010, 2011, 2012 Free Software +[[!meta copyright="Copyright © 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc."]] [[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable @@ -47,18 +47,6 @@ In his [[2011 GSoC project|2011]], Jérémie Koenig designed and began implementing an object-oriented interface; see his [[Java status page|user/jkoenig/java]] for details. -There is another possible reason for preferring lower-level bindings: -Presently, the Hurd server libraries use the cthreads threading library, which -predates the pthread standard prevalent today. There is a -[[pthread library for the Hurd|libpthread]] -as well, but it's not possible to use both cthreads and pthreads in -the same executable. Thus, until -[[porting_the_Hurd_libraries_to_pthreads|community/gsoc/project_ideas/pthreads]] -is finished, implementing bindings for any language that uses pthreads (in the -runtime environment or the actual programs) is only possible when not using the -standard Hurd server libraries at all -- i.e. when binding at MIG stub level or -interface definition level. - The task is to create easy to use Hurd bindings for a language of the student's choice, and some example servers to prove that it works well in practice. This project will require gaining a very good understanding of the various Hurd diff --git a/community/gsoc/project_ideas/object_lookups.mdwn b/community/gsoc/project_ideas/object_lookups.mdwn new file mode 100644 index 00000000..5075f783 --- /dev/null +++ b/community/gsoc/project_ideas/object_lookups.mdwn @@ -0,0 +1,42 @@ +[[!meta copyright="Copyright © 2013 Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] + +[[!meta title="Improved System Object Lookups"]] + +The Hurd currently uses its ihash library ([[hurd/libihash]]) as a generic +container for various objects. While it does its job, it has been reported +to suffer from high collision rates. In addition, the "one size fits all" +approach contributes to slow things down. One particular use case is looking +up an object from a Mach port name, which basically translates to getting the +file or socket associated with a file descriptor in traditional Unix systems. +It's particular because there are actually two lookups for each object, the +first being finding the Mach port from a client port name, which is done in +the GNU Mach kernel, and the second being finding the server object from a +server port name. The best strategy would probably be to directly associate +the address of an object to the receive right of its port, eliminating the +need to look up again, but this is quite an intrusive change in the code base. +For the time being, optimizing lookups would already be an improvement. + +The goal of this project is to increase system performance by speeding up +object lookups, with a particular focus on name-to-object lookups. Note that +there is little room for improvement in the kernel name-to-port lookups because +of the various optimizations IPC has received in the past. Looking up server +objects from port names could use an algorithm highly tuned for this task, +perhaps with better locking (shared/exclusive instead of always mutually +exclusive for example). Then, the libihash algorithm could be replaced with a +better one, not necessarily a hash based one, to improve all the other users. + +This task requires proper knowledge of data structure algorithms, taking into +account machine properties such as processor caches, as well as the appropriate +skills in C and assembly to check the generated code. Being able to perform +accurate measurements in a system that lacks modern profiling tools would also +be helpful. + +Possible mentors: Richard Braun diff --git a/community/gsoc/project_ideas/package_manager.mdwn b/community/gsoc/project_ideas/package_manager.mdwn index 23304f6b..d80efe37 100644 --- a/community/gsoc/project_ideas/package_manager.mdwn +++ b/community/gsoc/project_ideas/package_manager.mdwn @@ -1,4 +1,4 @@ -[[!meta copyright="Copyright © 2008, 2009 Free Software Foundation, Inc."]] +[[!meta copyright="Copyright © 2008, 2009, 2013 Free Software Foundation, Inc."]] [[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable id="license" text="Permission is granted to copy, distribute and/or modify this @@ -36,15 +36,19 @@ sum of packages installed at a certain moment; it doesn't matter how this state came about. There are no global databases of any kind. (Some things might require caching for better performance, but this must happen transparently.) -The core of this approach is formed by [[hurd/translator/stowfs]], which -creates a traditional Unix directory structure from all the files in the -individual package directories. But this only handles the lowest level of -package management. Additional mechanisms are necessary to handle stuff like -dependencies on other packages. +The core of this approach is formed by [[hurd/translator/stowfs]]. +[Guix](http://www.gnu.org/software/guix), GNU's package manager, +installs each package in its own directory. Each user has a +*profile*, which is the union of some of these packages. On +GNU/Linux, this union is implemented as a symlink tree; on GNU/Hurd, +*stowfs* would offer a more elegant solution. Stowfs creates a traditional +Unix directory structure from all the files in the individual package +directories. This handles the lowest level of package +management. -The goal of this task is to create these mechanisms. +The goal of this task is to exploit Hurd features in GNU Guix. -Possible mentors: Ben Asselstine (bing) +Possible mentors: Ludovic Courtès, Ben Asselstine (bing) Exercise: Make some improvement to any of the existing Hurd translators. Especially those in [hurdextras](http://www.nongnu.org/hurdextras/) are often diff --git a/community/gsoc/project_ideas/pthreads.mdwn b/community/gsoc/project_ideas/pthreads.mdwn deleted file mode 100644 index 2270c774..00000000 --- a/community/gsoc/project_ideas/pthreads.mdwn +++ /dev/null @@ -1,49 +0,0 @@ -[[!meta copyright="Copyright © 2008, 2009, 2010 Free Software Foundation, -Inc."]] - -[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable -id="license" text="Permission is granted to copy, distribute and/or modify this -document under the terms of the GNU Free Documentation License, Version 1.2 or -any later version published by the Free Software Foundation; with no Invariant -Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license -is included in the section entitled -[[GNU Free Documentation License|/fdl]]."]]"""]] - -[[!meta title="Convert Hurd Libraries and Servers to pthreads"]] - -[[!tag open_issue_libpthread]] - -The Hurd was originally created at a time when the [pthreads -standard](http://www.opengroup.org/onlinepubs/009695399/basedefs/pthread.h.html) -didn't exist yet. Thus all Hurd servers and libraries are using the old -[[cthreads|hurd/libcthreads]] package that came with [[microkernel/Mach]], -which is not compatible with pthreads. - -Not only does that mean that people hacking on Hurd internals have to deal with -a non-standard thread package, which nobody is familiar with. Although a -[[pthreads implementation for the Hurd|libpthread]] -was created in the meantime, it's not -possible to use both cthreads and pthreads in the same program. Consequently, -pthreads can't presently be used in any Hurd servers -- including translators. - -(Thus it's impossible to use the [Hurd -libfuse](http://www.nongnu.org/hurdextras/#libfuse) with any FUSE modules -depending on pthreads for example.) - -Most of the conversion has already been done in previous efforts (see -[[!GNU_Savannah_task 5487]]) -- but the tricky parts are still missing. - -The goal of this project is to have all the Hurd code use pthreads. Should any -limitations in the existing pthreads implementation turn up that hinder this -transition, they will have to be fixed as well. - -This project requires relatively little Hurd-specific knowledge. Experience -with multithreaded programming in general and pthreads in particular is -required, though. - -Possible mentors: Barry deFreese (bddebian), Samuel Thibault (youpi) - -Exercise: Try to fix one of the outstanding issues with the work done so far. -It's not yet complete, and there hasn't been much debugging yet, so it should -not be too hard to find something needing improvement -- but if you don't see -anything obvious, feel free to talk to us about an alternative exercise task. diff --git a/community/gsoc/project_ideas/unionfs_boot.mdwn b/community/gsoc/project_ideas/unionfs_boot.mdwn index d9f1a9e1..13cc6cd1 100644 --- a/community/gsoc/project_ideas/unionfs_boot.mdwn +++ b/community/gsoc/project_ideas/unionfs_boot.mdwn @@ -1,4 +1,4 @@ -[[!meta copyright="Copyright © 2008, 2009 Free Software Foundation, Inc."]] +[[!meta copyright="Copyright © 2008, 2009, 2013 Free Software Foundation, Inc."]] [[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable id="license" text="Permission is granted to copy, distribute and/or modify this @@ -19,12 +19,12 @@ software packages, GNU/Linux distributions usually come with a package manager, which keeps track of all files upon installation/removal in some kind of central database. -An alternative approach is the one implemented by GNU Stow: each package is +An alternative approach is the one implemented by GNU Stow and GNU Guix: each package is actually installed in a private directory tree. The actual standard directory structure is then created by collecting the individual files from all the packages, and presenting them in the common `/bin`, `/lib`, etc. locations. -While the normal Stow package (for traditional UNIX systems) uses symlinks to +While the normal Stow or Guix package (for traditional UNIX systems) uses symlinks to the actual files, updated on installation/deinstallation events, the Hurd [[hurd/translator]] mechanism allows a much more elegant solution: [[hurd/translator/stowfs]] (which is actually a special mode of |