GSoC: Difference between revisions

From coreboot
Jump to navigation Jump to search
No edit summary
(39 intermediate revisions by 10 users not shown)
Line 1: Line 1:
= Google Summer of Code 2010 =
__FORCETOC__


http://3.bp.blogspot.com/_fxRR_bT3LgA/S5U3rk2J-eI/AAAAAAAACE8/mBRYQwSqvqQ/s400/2010_NoURL_300x267px.jpg
= Google Summer of Code 2013 =


Welcome to the [http://code.google.com/soc/ Google Summer of Code(tm)] page of the [[Welcome to coreboot|coreboot project]]. Apply for a coreboot GSoC project at http://socghop.appspot.com/.
Welcome to the coreboot's [http://www.google-melange.com/gsoc/homepage/google/gsoc2013 Google Summer of Code 2013] page.  


This year, coreboot also tries to host some flashrom projects.


== Deadlines ==
We are preparing to apply for GSoC 2013. Please continue to add you ideas to the [[Project Ideas|projects page]].


Make sure you check the [http://socghop.appspot.com/document/show/gsoc_program/google/gsoc2010/faqs#timeline Deadlines]


= Why work for coreboot =
If you have questions, comments, or concerns, please send them to the [[Mailinglist|mailing list]] or join us in [[IRC]].


Why would you like to work for coreboot?


* coreboot offers you the opportunity to work with modern technology "right on the iron".
The coreboot project may also host payload and [http://flashrom.org/GSoC flashrom] projects.
* Your application will be available to users worldwide and promoted along with all other coreboot projects.
<br /><br />
* We are a very passionate team - so you will interact directly with the project initiators and project leaders.
* We have a large, helpful community. Over 100 experts in hardware and firmware lurk on our mailing list, many of them waiting to help you.


[[Previous GSoC Projects|Previous coreboot GSoC projects]]


= Summer of Code Application =
= Call for Mentors and Project Ideas =
Google has announced the 2013 GSoC program. coreboot had been a GSoC participant in the past, but was not accepted in 2012 and we would like to change that this year. The GSoC project acceptance has become much more competitive and the project ideas and student recruitment pages has become key in getting accepted.  Our project ideas were not flushed out enough in the application process and we didn't have a complete mentors list/assignment for those projects.


Please complete the standard [http://code.google.com/soc/ Google SoC 2010 application]. Additionally, please provide information on the following:
I think that coreboot has some extremely talented people involved in the project and students should be attracted to the experience of working with our mentors as much as the potential projects.  


# Who are you? What are you studying?
# Why are you the right person for this task?
# Do you have any other commitments that we should know about?
# List your C, Assembler and hardware experience.
# List your history with open source projects.
# What is your preferred method of contact? (Phone, email, Skype, etc)


Feel free to keep your application short. A 15 page essay is no better than a 2 page summary. If you wish to write 15 pages, you are of course welcome to do so, and we will gladly put your paper up on the web page. But it is not required for the application.
What we need to apply for GSoC 2013:


== How to apply ==
Project Admins - We need a person or two to be the main liaison between coreboot and GSoC. This person(s) register the project, fills out the application, leads and organizes the projects and mentors.


The Drupal project has a great page on [http://drupal.org/node/59037 How to write an SOC application].
Mentors - We need a pool of mentors willing to support students on a number of levels; Helping them from the very beginning with project ideas and writing their applications, project and development time management, research, communication, documentation, drive deadlines.  


Please also read Google's [http://code.google.com/p/google-summer-of-code/wiki/AdviceforStudents Advice for Students].
Mentor biographies - To improve out GSoC recruitment, i would like to have a one paragraph biography for each of our mentors. It should contain what your coreboot experience and contributions. Something about your work and/or education experience and maybe some other personal information. Maybe where you are located. It helps to have mentors can be matched with the students culture.


== Some Caveats ==
Project ideas - We also need complete project ideas with pointers to background data and what the expected outcome would be. We need a list of potential mentors for each project idea.


* Google Summer-of-Code projects are a full (day-) time job. This means we expect roughly 30-40 hours per week on your project, during the three months of coding. Obviously we have flexibility, but if your schedule (exams, courses) does not give you this amount of spare time, then maybe you should not apply.
coreboot GSoC support roles - Even if you can't commit to being a full time mentor, we could use your help with the coreboot promotion, student recruitment, wiki, project ideas, blog postings, and code reviews , and encouragement and advice to students and mentors.  
* Getting paid by Google requires that you meet certain milestones. First, you must be in good standing with the community before the official start of the program. We suggest you post some design emails to the mailing list, and get feedback on them, both before applying, and during the "community bonding period" between acceptance and official start. Also, you must have made progress and committed significant code before the mid-term point.
* We are thinking of requiring accepted students to have a blog, where you will write about your project on a regular basis. This is so that the community at large can be involved and help you. SoC is not a private contract between your mentor and you.


Note that "regular basis" in the last item does _not_ mean "3 days before evaluation deadlines". You should be "around" all the time (reporting your feedback, sending in partial successes).
Important dates:
We don't expect our students to be experts in our problem domain, but we don't want you to fail because some basic misunderstanding was in your way of completing the task.
March18 - 29 - Org applications. We should have a list of mentors and suitable project ideas, policies, etc by this date.  
April 1 - 5-  GSoC application review
April 8 - Org acceptance
April 22 - May 5 - student applications


== Time Frame ==
If you are interested in helping, please feel free to contact me and/or start updating the wiki and add yourself and/or project ideas.


'''DEADLINE FOR STUDENT APPLICATIONS:''' Students who are interested in working on a coreboot-related GSoC project must apply between '''March 29, 2010''' and '''April 9, 2010'''! If you want to apply, please get in contact with us right away, not just when you send your application!
= People involved =


== Student requirements ==
{| class="wikitable"
 
|-
We will only accept your proposal if you have demonstrated that you can work with our codebase. For that, you have to send a patch to the list which is acceptable. Just ask for simple tasks on the mailing list or on IRC.
! Name !! Role !! Comms
 
|-
= Contact =
| Stefan Tauner || flashrom: organizer/possible mentor/wannabe student || IRC: stefanct, [http://www.flashrom.org/mailman/listinfo/flashrom flashrom ML]
 
|-
If you are interested in becoming a GSoC student, please contact [mailto:stepan@coresystems.de Stefan Reinauer].
|}
 
There is also an IRC channel on irc.freenode.net: #coreboot
 
= Possible ideas =
 
== Infrastructure for automatic code checking ==
 
We already have a build bot that builds various configurations of coreboot. It would be nice to extend it with various code validation routines, for example:
* Validate that there's no regression in doxygen documentation (eg. are all arguments to functions still explained in @param tags, eg. after new arguments were added?)
* Make code lint clean (and maybe extend lint to not fall into our traps), and run lint over the tree. Report regressions
* Use LLVM's static code checking facilities, report regressions.
* Work on code coverage support for coreboot code (dump data into ram, or via serial. Provide tools to fetch it). Analyse that data.
 
=== Links ===
* LLVM tools: [http://clang.llvm.org/StaticAnalysis.html Clang static analyser], [http://llvm.org/ProjectsWithLLVM/#Calysto SSA assertion checker]
* Lint tools: [http://lclint.cs.virginia.edu/ Splint]
* Coverage: [http://ltp.sourceforge.net/test/coverage/lcov.php LCOV], [http://ggcov.sourceforge.net GGCOV]
 
=== Mentors ===
* [[User:MJones|Marc Jones]]
* [[User:Stepan|Stefan Reinauer]]
 
== TianoCore on coreboot ==
 
[[Image:Tianocoreboot.png|160px|right]]
 
[http://www.tianocore.org/ Tiano Core] is Intel's EFI implementation. Unlike coreboot, it is not a firmware, but rather a bootloader. In 2008 there was an initial port of TianoCore to run on coreboot, but there are many things left to do.
 
* Improve Tiano Core / EDK2 running as a coreboot payload
* Implement a coreboot framebuffer driver for Tiano Core
* Implement a coreboot flash filesystem (CBFS) driver for Tiano Core
* Integrate and automate check out and build process of Tiano Core
* Create CorebootPkg using OVMF instead of DUET.
* Provide a script that creates working binaries for the EDK shell, EDK apps, FAT driver(?), ...
* The final work must compile on a cross gcc, and coreboot's crossgcc script has to be adapted so it can build this compiler (if the default script is not capable of doing so yet)
 
This project requires no hardware skills, but especially in case of TianoCore will require knowledge of Microsoft compilers as well as the GNU tool chain.
 
=== Links ===
* [http://www.tianocore.org/ Tiano Core]
 
=== Mentors ===
* [[User:Rminnich|Ron Minnich]]
* [[User:Stepan|Stefan Reinauer]]
* [[User:MJones|Marc Jones]]
 
==coreboot port to Marvell ARM SOC's with PCIe==
[http://www.marvell.com/products/processors/embedded/kirkwood/ Marvell Processors] These ARM SOC's with PCIe will become popular in netbooks later this year. These systems can take advantage of coreboot's strength in properly configuring PCI devices, fast boot time and payload support.
 
=== Mentors ===
* Bari Ari
 
== coreboot port to AMD 800 series chipsets ==
(probably too big of a task)
:I'm not sure that this is too of a big task. I think 800 is closely related to 780 and would be slightly harder than a 780 board port. ---[[User:MJones|MJones]]
 
=== Mentors ===
* [[User:Stepan|Stefan Reinauer]]
* [[User:MJones|Marc Jones]]
 
== coreboot mass-porting to AMD 780 series mainboards ==
 
Grab a couple of AMD 780 based mainboards and port coreboot to it.
 
=== Mentors ===
* [[User:Rminnich|Ron Minnich]]
* [[User:Stepan|Stefan Reinauer]]
* [[User:MJones|Marc Jones]]
 
== coreboot panic room ==
 
Create a safe boat solution for coreboot to easily and cheaply recover the system in case of a panic()
 
=== Mentors ===
* ?
 
== coreboot cheap testing rig ==
The goal of this project is to create a cheap testing rig which works with the existing board test infrastructure. We have a hardware test system since 2006:
* [http://www.coresystems.de/PDFs/LinuxBIOS-testing/Slides-LinuxBIOS-QA.pdf Quality Assurance Talk (Slides)]
* [http://www.coresystems.de/PDFs/LinuxBIOS-testing/TestIntegrationManual.pdf Test Integration Manual]
* [http://www.coresystems.de/PDFs/LinuxBIOS-testing/DevelopersManual.pdf Test Developers Manual]
* [http://www.coresystems.de/PDFs/LinuxBIOS-testing/TestSpecification.pdf Test Specification]
 
The initial version of our testing rig used a remote power switch and was rather expensive. With cheaper technologies such as X10, it's possible to drop the testing costs per board significantly.
 
=== Links ===
* http://qa.coresystems.de
 
=== Mentors ===
* [[User:Stepan|Stefan Reinauer]]
 
== coreboot GeodeLX port from v3 to v4 ==
significant parts of that are already done, so it's hard to fill a full GSoC with that. One thing could be "verify that everything is brought over", but that's nothing that can be reasonably proven (and it might also be too close to "documentation tasks", which are not allowed)
 
== drivers for libpayload ==
IDE, AHCI, Bluetooth, Firewire, Smartcards, maybe filesystems. Work towards making FILO only a shell, which uses libpayload for the "real" work. Notice that libpayload code must be licensed BSD-style (so ports from FILO, SeaBIOS or Linux won't work).
Pick a given set and tell us why it's enough work for the allocated time, but not too much for you. Also, which sources (if any) you want to draw from.
 
== Board config infrastructure ==
Design data structures that host information about the board layout so coreboot can better initialize components and generate all kinds of tables (mptable, pirq, acpi, ...) from that dynamically (at build or runtime, as appropriate). Adapt boards to use that instead of the current hardcodes.
 
== Refactor AMD code ==
AMD K8 and AMD Fam10 are different enough to have their own code. This is unfortunate, as you have to decide which CPU type you use in a given mainboard. Refactor AMD code so a single image can support both chip types on a given board. Also move tables from get_bus_conf and the like to the device tree or kconfig options (or runtime detection), as appropriate.
 
=== Mentors ===
* [[User:Stepan|Stefan Reinauer]]
 
== Payload infrastructure ==
Incorporate payload building into the coreboot build. kconfig options could be added for supported payloads, those payload could be updated to build with kconfig as well. Payloads that build with libpayload need would need default configs. Payloads should also be built with the crossgcc tools. This is related to the libpayload and board config infrastructure above. ---[[User:MJones|MJones]]
 
== flashrom ==
 
Note: The list below is an idea collection. Individual list items are simple enough to serve only as partial GSoC task, but they are grouped to reasonable tasks.  If you're interested, please talk to us on the flashrom mailing list and/or on IRC irc://irc.freenode.net/#flashrom
 
''[http://www.flashrom.org/GSoC/2010 http://www.flashrom.org/GSoC/2010] has more flashrom ideas and suggestions.''
 
=== Multiple GUIs for flashrom ===
 
* flashrom text mode GUI (for command line and flashrom-as-payload)
* flashrom graphics mode GUI (should be cross-platform, Sean Nelson has preliminary code you can base this on)
 
=== Recovery of dead boards and onboard flash updates ===
 
* flashrom as payload
* flashrom remote flashing for coreboot panic room mode
* flashrom remote flashing with modified SerialICE
 
=== SPI bitbanging hardware support ===
 
* flashrom support for Nvidia SPI chipset hardware
* flashrom support for RayeR SPIPGM hardware
* flashrom support for [[Paraflasher]] hardware
* flashrom support for Willem hardware
* flashrom support for some-yet-uninvented cheap universal LPC/FWH/SPI flasher hardware
* flashrom support for bitbanging LPC/FWH (code exists, Uwe Hermann
* flashrom support for bitbanging Parallel
 
=== Generic flashrom infrastructure improvements ===
 
* flashrom support for automatic recovery in case something goes wrong
* flashrom support for partial reflashing
* flashrom support for bytewise flashing (similar to the point above)
 
=== Laptop support ===
 
This one is really HARD. If you're lucky and if you have datasheets, you can do it in maybe 1 month. If you're unlucky, it can take the whole GSoC or more. If there is interest, we'll try to find an embeddec controller which won't cause you to give up in frustration. Still, it might be beneficial if you're willing to solder.
* flashrom support for embedded controllers (ECs) in laptops
 
 
=== Links ===
* [http://www.flashrom.org/ flashrom]
 
=== Mentors ===
* ?
 
== Your own Project Ideas ==
 
We have come up with some ideas for cool Summer of Code projects here. These are projects that we think can be managed in the short period of GSoC, and they cover areas where coreboot is trying to reach new users and new use cases.
 
But of course your application does not need to be based on any of the ideas listed below. The opposite: Maybe you have a great idea that we just didn't think of yet. Please let us know!
 
Feel free to contact us at the email address above, and don't hesitate to suggest whatever you have in mind.
 
= Previous Summer of Code projects =
 
We successfully participated in Google's Summer of Code in 2007, 2008 and 2009. See our [[Previous GSoC Projects|list of previous GSoC projects]].

Revision as of 16:23, 4 March 2013


Google Summer of Code 2013

Welcome to the coreboot's Google Summer of Code 2013 page.


We are preparing to apply for GSoC 2013. Please continue to add you ideas to the projects page.


If you have questions, comments, or concerns, please send them to the mailing list or join us in IRC.


The coreboot project may also host payload and flashrom projects.

Previous coreboot GSoC projects

Call for Mentors and Project Ideas

Google has announced the 2013 GSoC program. coreboot had been a GSoC participant in the past, but was not accepted in 2012 and we would like to change that this year. The GSoC project acceptance has become much more competitive and the project ideas and student recruitment pages has become key in getting accepted. Our project ideas were not flushed out enough in the application process and we didn't have a complete mentors list/assignment for those projects.

I think that coreboot has some extremely talented people involved in the project and students should be attracted to the experience of working with our mentors as much as the potential projects.


What we need to apply for GSoC 2013:

Project Admins - We need a person or two to be the main liaison between coreboot and GSoC. This person(s) register the project, fills out the application, leads and organizes the projects and mentors.

Mentors - We need a pool of mentors willing to support students on a number of levels; Helping them from the very beginning with project ideas and writing their applications, project and development time management, research, communication, documentation, drive deadlines.

Mentor biographies - To improve out GSoC recruitment, i would like to have a one paragraph biography for each of our mentors. It should contain what your coreboot experience and contributions. Something about your work and/or education experience and maybe some other personal information. Maybe where you are located. It helps to have mentors can be matched with the students culture.

Project ideas - We also need complete project ideas with pointers to background data and what the expected outcome would be. We need a list of potential mentors for each project idea.

coreboot GSoC support roles - Even if you can't commit to being a full time mentor, we could use your help with the coreboot promotion, student recruitment, wiki, project ideas, blog postings, and code reviews , and encouragement and advice to students and mentors.

Important dates: March18 - 29 - Org applications. We should have a list of mentors and suitable project ideas, policies, etc by this date. April 1 - 5- GSoC application review April 8 - Org acceptance April 22 - May 5 - student applications

If you are interested in helping, please feel free to contact me and/or start updating the wiki and add yourself and/or project ideas.

People involved

Name Role Comms
Stefan Tauner flashrom: organizer/possible mentor/wannabe student IRC: stefanct, flashrom ML