Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
socideas [2006/04/23 20:01]
mdc
socideas [2006/05/04 07:26]
mdc Add mailing list links
Line 1: Line 1:
 ====== Google Summer of Code ideas for Etherboot/​gPXE ====== ====== Google Summer of Code ideas for Etherboot/​gPXE ======
  
-Here are some ideas for projects for prospective ​students wishing to particpate in Google Summer of Code with the Etherboot Project.+Here you will find some ideas and other useful information ​for projects for students wishing to particpate in Google Summer of Code with the Etherboot Project.
  
-First, you should know that the Etherboot Project creates network booting code, which allows computers to start up from a network. ​ This code is can be stored in a number of places, including BIOS Flash, EPROMs, floppy, CD, HD, or other bootable media.+===== Background Information =====
  
-The next version of our code will be called "​gPXE"​.  ​To this point, our code has been called "​Etherboot",​ which is also the name of our project. ​ We also maintain "​mknbi",​ which creates files in "​.nbi"​ format, or "​Network Bootable Image" format.+First, a little background. 
 + 
 +You should know that we, the [[http://​etherboot.org/​|Etherboot Project]], create network booting code, which allows computers to load their operating system from a network. ​ Our code can be stored in a number of places, including BIOS Flash, EPROMs, floppy, CD, HD, or other bootable media. 
 + 
 +The next version of our code will be called "​gPXE"​.  ​Up to this point, our code has been called "​Etherboot",​ which is also the name of our project. ​Another piece of software we maintain ​is "​mknbi",​ which creates files in "​.nbi"​ format, or "​Network Bootable Image" format.
  
 Finally, we operate the [[http://​rom-o-matic.net/​]] website, which dynamically generates Etherboot (soon to also be gPXE) images in a variety of formats. Finally, we operate the [[http://​rom-o-matic.net/​]] website, which dynamically generates Etherboot (soon to also be gPXE) images in a variety of formats.
  
-We have number ​of areas we can use help with.  Since our focus is creating network boot codeit is important that if you want to help with coding you be comfortable with low-level programming -- that is, C and some x86 assembler.  ​+Since lot of what we do is centered around our mailing list ([[https://​lists.sourceforge.net/​lists/​listinfo/​etherboot-discuss|Etherboot-Discuss]]) and SourceForge CVS ([[http://​sourceforge.net/​projects/​etherboot/​]])we would expect anyone who wants to work with us to be comfortable ​having their code reviewed and commented on by others in our project community. ​ We do endeavor to maintain an environment of open discourse, ​with a reasonable ​level of civility ​and mutual respect.  ​Reading our mailing list archives may be useful for getting a sense of how we work together.
  
-The [[http://​rom-o-matic.net/]] site is written in PHPso if you would like to help with that, you would need to be able to write PHP as well as HTML, and whatever other languages will facilitate web programming.+We have a number of areas we can use help with Since our focus is creating network boot codeit is important that if you want to help with coding you be comfortable with low-level programming -- that isC and possibly some x86 assembler (though this is not essential for many projects, and you can pick it up as you go along). You should also understand that efficiencies of code size, runtime size, and execution speed are important to us.  Low-level, or "​bare-metal" ​programming ​requires patience and focus, but the sense of control and deep understanding of what is happening, and why, can be very exhilarating
  
 You can download Etherboot code from our [[http://​www.sourceforge.net/​projects/​etherboot|SourceForge Project Page]]. ​ You may also wish to join the You can download Etherboot code from our [[http://​www.sourceforge.net/​projects/​etherboot|SourceForge Project Page]]. ​ You may also wish to join the
 [[https://​lists.sourceforge.net/​lists/​listinfo/​etherboot-discuss|Etherboot-Discuss]] mailing list, or browse our [[https://​lists.sourceforge.net/​lists/​listinfo/​etherboot-discuss|Etherboot-Discuss]] mailing list, or browse our
 [[http://​sourceforge.net/​mailarchive/​forum.php?​forum=etherboot-discuss|Archives]] to see what sorts of things we are doing. [[http://​sourceforge.net/​mailarchive/​forum.php?​forum=etherboot-discuss|Archives]] to see what sorts of things we are doing.
 +
 +===== Information for Students =====
 +
 +Thank you for your interest in our project. ​ In this section you will find resources you may find helpful when searching for a projects and when writing a proposal.
 +
 +If you are interested in working with us, we would strongly recommend that you join the [[https://​lists.sourceforge.net/​lists/​listinfo/​etherboot-discuss|Etherboot-Discuss]] mailing list and introduce yourself. ​ The mailing list is a good place to ask questions about potential projects and to receive advice.
 +
 +==== Google Summer of Code Links ====
 +
 +  * Main page: [[http://​code.google.com/​soc/​]]
 +  * Student FAQ: [[http://​code.google.com/​soc/​studentfaq.html]]
 +  * Student Application:​ [[http://​code.google.com/​soc/​student_step1.html]] ​
 +
 +==== Etherboot Project Links ====
 +
 +  * Project Home Page: [[http://​etherboot.org/​]]
 +  * SourceForge Project Page: [[http://​sourceforge.net/​projects/​etherboot/​]]
 +
 +==== Etherboot Mailing List Links ====
 +
 +  * Etherboot-Discuss Maling List Archives: [[http://​sourceforge.net/​mailarchive/​forum.php?​forum=etherboot-discuss]]
 +  * Etherboot-Discuss Maling List Subscription Page: [[https://​lists.sourceforge.net/​lists/​listinfo/​etherboot-discuss]]
 +
 +
 +==== Example Student Applications ====
 +
 +Here are some examples of Student Applications from previous Google Summer of Code projects. ​ These are just to give some idea of what sorts of information is interesting in proposals.
 +
 +  * http://​summerofcode.xwiki.com/​xwiki/​bin/​view/​Main/​ExampleApplications
 +  * http://​inkscape.org/​wiki/​index.php/​SOC_Accepted_Proposals
 +
 +===== Mentors =====
 +
 +  * Marty Connor, Project Leader, Developer ​
 +  * Michael Brown, Lead Developer
 +  * Georg Baum, Developer
 +
 +===== Project Ideas =====
  
 Here are some ideas for projects for Google Summer of Code students: Here are some ideas for projects for Google Summer of Code students:
  
-  ​* Add a device driver for an unsupported network card to Etherboot/​gPXE.+==== Device Driver Related Ideas ==== 
 + 
 +These projects would be coded primarily in C, and would require hardware (a suitable computer and Ethernet/​NIC card) to do testing. ​ In the case of network drivers, existing drivers and Linux kernel drivers are available as starting points. ​ Data sheets are also generally available for most NIC variations, though such documentation is sometimes unreliable. 
 + 
 +  ​* Add a device driver for an unsupported network card to Etherboot/gPXE. This will require understanding the network card driver API for gPXE, and implementing the required routines to enable an Ethernet card to be controlled by gPXE.
  
   * Finish the e1000 gigabit driver update which is in progress.   * Finish the e1000 gigabit driver update which is in progress.
Line 25: Line 71:
   * Add PCMCIA network booting support to Etherboot/​gPXE. ​ This would include PCMCIA and Cardbus support, and at least one wireless network driver.   * Add PCMCIA network booting support to Etherboot/​gPXE. ​ This would include PCMCIA and Cardbus support, and at least one wireless network driver.
  
-  * Add a command line interface to gPXE to allow interactive network booting and debugging of protocol negotiations and image downloading+==== New Protocol Related Ideas ====
  
-  * Update [[http://​rom-o-matic.net/​]] to support gPXE image builds. ​ Improve the user interface of the site to make navigation easierand to save configuration choices for future builds.+  * Add a new network protocolsuch as https, ftp or smb.
  
-  * Implement [[http://​coraid.com/|AoE]] (ATA over Ethernet) protocol for gPXE.+  * Add secure network booting support for gPXE This would involve creating a secure network connection between the network client and server, and/or loading signed binaries.
  
-----+  * Implement support for IPv6.
  
 +==== General Improvements to gPXE ====
 +
 +  * Add a command line interface to gPXE to allow interactive network booting and debugging of protocol negotiations and image downloading,​ as well as setting parameters to be used during booting operations. ​ Design of command syntax and functionality is an important part of this project.
 +
 +
 +  * Port gPXE to a new CPU architecture,​ e.g. an embedded system.
 +
 +==== Toolchain, Build and Testing Improvements ====
 +
 +  * Develop an automated regression test framework and initial suite of tests.
 +
 +  * Extend gcc's i386 backend to support 16-bit code.  This would substantially reduce the size of gPXE's compiled binary, and would increase the range of object code environments for which gcc can be used.
 +
 +  * Investigate optimisations to further reduce the code size.  We already use most of the obvious techniques, so this project would require some creativity.
 +
 +  * Implement an API for reading and writing non-volatile storage (Flash and EEPROM) on network cards. ​ This would allow user preferences to be stored on the cards.
 +
 +  * Implement a user interface for setting preferences,​ such as static IP addresses, default boot protocol and filename, etc.
 +
 +==== Other Project Ideas ====
 +
 +  * Implement an UNDI network device driver for Linux. ​ This would enable Linux to boot from any PXE stack (including gPXE), and would greatly improve the ease of use of network-booted Linux.
 +
 +  * Rewrite the Etherboot NIC database at [[http://​etherboot.org/​db/​]] to make it more useful for testing Etherboot releases and getting feedback from users. ​ Improve user interface, create better voting/​polling mechanism. ​ The database is written in using PHP and MySQL.
 +
 +----

QR Code
QR Code socideas (generated for current page)