summaryrefslogtreecommitdiff
path: root/community
diff options
context:
space:
mode:
Diffstat (limited to 'community')
-rw-r--r--community/gsoc/project_ideas.mdwn10
-rw-r--r--community/gsoc/project_ideas/gnat.mdwn32
-rw-r--r--community/gsoc/project_ideas/language_bindings.mdwn14
-rw-r--r--community/gsoc/project_ideas/object_lookups.mdwn42
-rw-r--r--community/gsoc/project_ideas/package_manager.mdwn20
-rw-r--r--community/gsoc/project_ideas/pthreads.mdwn49
-rw-r--r--community/gsoc/project_ideas/unionfs_boot.mdwn6
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