Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
soc [2008/03/12 16:52] mcb30 |
soc [2011/05/22 04:49] (current) |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Google Summer of Code 2008 ====== | + | ====== Google Summer of Code ====== |
- | **The Etherboot Project is applying to participate in Google's 2008 [[http://code.google.com/soc/|Summer of Code]] project!** | + | The [[http://etherboot.org/|Etherboot project]] has been participating in [[http://code.google.com/soc|Google Summer of Code]] since 2006 and has been generously accepted again for 2010. |
- | We, the [[http://etherboot.org/|Etherboot Project]], create network booting code (gPXE) that allows computers to load their operating system from a network. gPXE can be stored in a number of places, including BIOS Flash, EPROMs, floppy, CD, HD, or other bootable media. The project has been around since about 1993. | + | {{ :bootroms.jpeg?350×190|Some boot ROMs}} |
- | We have a number of areas we can use help with. Since our focus is on creating network boot code, it is important that you be comfortable with low-level programming -- that is, C 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. | + | ==== General Information ==== |
- | ===== Where to find us ===== | + | We (the [[http://etherboot.org/|Etherboot Project]]) create network booting code (gPXE) that allows computers to load their operating system from a network. gPXE can be stored in a number of places, including BIOS Flash, EPROMs, floppy, CD, HD, or other bootable media. The project has been around since about 1993. |
- | We generally hang out in the ''#etherboot'' channel on the FreeNode IRC network (irc.freenode.net). Please feel free to drop in and ask questions, discuss ideas, etc. We talk to all applicants individually as part of the selection process and, if we accept you as a Summer of Code student, we'll expect to talk to you in the IRC channel at least every couple of days. | + | We have a number of areas we can use help with. Since our focus is on creating network boot code, it is important that you be comfortable with low-level programming -- that is, C 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. |
- | We also have a mailing list ([[https://lists.sourceforge.net/lists/listinfo/etherboot-discuss]]; you must subscribe before posting). | + | ==== Project Ideas ==== |
- | ===== Project ideas ===== | + | Our project ideas page is [[soc:ideas|here]]. |
- | This list is not exhaustive, and we welcome new suggestions. Some of these ideas are not in themselves complete projects; feel free to ask us how much work is likely to be involved, and how many ideas you might sensibly attempt as a Summer of Code project. | + | ==== For information about a specific year please choose below: ==== |
- | ==== Device drivers ==== | + | * [[soc:2011:]] |
+ | * [[soc:2010:]] | ||
+ | * [[soc:2009:]] | ||
+ | * [[soc:2008:]] | ||
+ | * [[soc:2007:]] | ||
+ | * [[soc:2006:]] | ||
+ | ==== Where to find us ==== | ||
- | gPXE is always in need of more device drivers. In the case of network card 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. You could: | + | We generally hang out in the ''#etherboot'' channel on the FreeNode IRC network (irc.freenode.net). Please feel free to drop in and ask questions, discuss ideas, etc. We talk to all applicants individually as part of the selection process and, if we accept you as a Summer of Code student, we'll expect to talk to you in the IRC channel at least every couple of days. |
- | + | ||
- | * Update some of the old Etherboot drivers to work with the new gPXE driver API. All drivers are written in C, and you will need to have hardware (network cards, server and client computers) to test driver changes. (We may be able to provide some of the required cards for development and testing.) | + | |
- | + | ||
- | * Add support for newer network card variants to an existing gPXE driver. | + | |
- | + | ||
- | * Add a device driver for a new, currently-unsupported network card to gPXE. | + | |
- | + | ||
- | If you are feeling more adventurous, and have access to appropriate hardware, you could: | + | |
- | + | ||
- | * Add a driver for a wireless network card. There is some out-of-date support for one type of 802.11b wireless card; you could expand this into a general framework for wireless networking, and add drivers for one or more modern wireless NICs. | + | |
- | + | ||
- | * Add a non-Ethernet driver, e.g. a driver for an Infiniband card. (gPXE does have a working Infiniband subsystem.) | + | |
- | + | ||
- | * Fix up the support for legacy bus types such as ISAPnP. These devices are allegedly supported, though most have not been tested for many years, and it is unlikely that the current code is in a working state. | + | |
- | + | ||
- | * Add support for a new bus type, e.g. PCMCIA or USB. | + | |
- | + | ||
- | ==== Protocols ==== | + | |
- | + | ||
- | ==== Automated regression testing ==== | + | |
- | + | ||
- | gPXE has a relatively large feature set given the code size. Many features are rarely used, and there has been a tendency for parts of the code to suffer from bit-rot. The measures we have taken so far will ensure that we never end up with unbuildable code; we now avoid the use of #ifdef wherever possible, and have automated tests in place to identify missing or redundant symbols. However, we do not have any systematic method for functional testing. | + | |
- | + | ||
- | We would ideally like to be able to run a series of tests to verify different functional units (e.g. http download, Linux kernel booting, PXE booting, serial console support, etc.). Most of these tests can be carried out inside a virtual machine such as bochs or qemu. Some tests (e.g. specific device driver tests) will need to be carried out on real hardware. The tests should be fully automated, and should produce a clear pass/fail status indicator. It should be possible for a developer to simply run “make test” and, some time later, receive an overall pass/fail status, together with a list of any failed tests. | + | |
- | Having such an automated test suite would enable us to offer quality control guarantees; we could then be confident that upgrades would not break existing functionality. | + | |
- | + | ||
- | ==== Other ideas ==== | + | |
- | + | ||
- | * [[soc:ideas:misc | Miscellaneous other ideas]] | + | |
- | + | ||
- | Please drop in to our IRC channel, #etherboot on irc.freenode.net, or send a message to our mailing list [[https://lists.sourceforge.net/lists/listinfo/etherboot-discuss | Etherboot-Discuss]], (you have to join to post), to discuss your ideas. | + | |
- | + | ||
- | + | ||
- | + | ||
- | ===== Student Information ===== | + | |
- | + | ||
- | Here are some links to information for students interested in our project: | + | |
- | + | ||
- | * Here is some [[soc:background | Background Information]] about our project. | + | |
- | * We have assembled some [[soc:student_info | Student Information Resources]] you may find helpful. | + | |
- | * Here are some [[soc:ideas | Project Ideas]] for Summer of Code proposals. | + | |
- | + | ||
- | ===== Mentors ===== | + | |
- | Our Mentors for Google Summer of Code are: | + | Our mentors for Summer of Code (with their IRC nicknames) are: |
+ | * Marty Connor [''mdc''] (Project Leader, Developer, Etherboot Project) | ||
+ | * Stefan Hajnoczi [''stefanha''] (Developer, Etherboot Project) | ||
+ | * Gene Cumm [''genec''] (Contributor, Etherboot Project) | ||
- | * Marty Connor, Project Leader, Developer, Etherboot Project | + | You can reach the mentors directly via e-mail using <soc-mentors@etherboot.org>. There is also the [[https://etherboot.org/mailman/listinfo/gpxe|gPXE mailing list]] (you must subscribe before posting). |
- | * Michael Brown, Lead Developer, Etherboot Project | + | |
- | * H. Peter Anvin, Project Leader, Lead Developer, Syslinux | + | |
- | If you have questions about participating in Google Summer of Code with us, you can reach us via email at: <soc-mentors@etherboot.org>. | ||
- | We hope you have enjoyed reading about the [[http://www.etherboot.org/|Etherboot Project]], and we thank you for visiting! |