diff options
Diffstat (limited to 'community/gsoc/project_ideas/download_backends.mdwn')
-rw-r--r-- | community/gsoc/project_ideas/download_backends.mdwn | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/community/gsoc/project_ideas/download_backends.mdwn b/community/gsoc/project_ideas/download_backends.mdwn new file mode 100644 index 00000000..f794e814 --- /dev/null +++ b/community/gsoc/project_ideas/download_backends.mdwn @@ -0,0 +1,47 @@ +[[!meta copyright="Copyright © 2009 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="Use Internet Protocol Translators (ftpfs etc.) as Backends for Other Programs"]] + +The Hurd design facilitates splitting up large applications into independent, +generic components, which can be easily combined in different contexts, by +moving common functionality into separate Hurd servers (translators), +accessible trough filesystem interfaces and/or specialized RPC interfaces. + +Download protocols like FTP, HTTP, BitTorrent etc. are very good candidates for +this kind of modularization: a program could simply use the download +functionality by accessing FTP, HTTP etc. translators. + +There is already an ftpfs translator in the Hurd tree, as well as an [httpfs +translator on hurdextras](http://www.nongnu.org/hurdextras/#httpfs); however, +these are only suitable for very simple use cases: they just provide the actual +file contents downloaded from the URL, but no additional status information +that are necessary for interactive use. (Progress indication, error codes, HTTP +redirects etc.) + +A new interface providing all this additional information (either as an +extension to the existing translators, or as distinct translators) is required +to make such translators usable as backends for programs like apt-get for +example. + +The goal of this project is to design a suitable interface, implement it for at +least one download protocol, and adapt apt-get (or some other program) to use +this as a backend. + +This task requires some design skills and some knowledge of internet protocols, +to create a suitable interface. Translator programming knowledge will have to +be obtained while implementing it. + +It is not an easy task, but it shouldn't pose any really hard problems either. + +Possible mentors: Olaf Buddenhagen (antrik) + +Exercise: Make some improvement to one of the existing download translators -- +httpfs in particular is known to be buggy. |