GSoC application 2011
From Milkymist Wiki
Don't apply to GSoC, it's a waste of time. Don't get a job at Google, either.
This is for Google Summer of Code 2011 Application.
- Feb 28, mentoring orgs can submit apps
- March 11, mentoring apps deadline
- March 18, announcement about accepted mentoring organizations
- March 28, student app period opens
- April 8, student app period closes
- Then there are more dates, but these are the key ones!
 Describe your organization.
Milkymist is the leading open source system-on-chip design. It is today the fastest open source system-on-chip capable of running Linux, and it comes with an extensive set of features and graphics accelerators.
On the surface, Milkymist is promoted as a visual synthesizer. The project develops a stand-alone device in a small form factor that is capable of rendering MilkDrop-esque visuals effects in real time. It has a high level of interaction with many sensors and uses live audio and video streams.
The flexibility of the FPGA used as a central component enables advanced users to modify the design, and also permits compact integration of many interfaces (Ethernet, OSC, MIDI, DMX512, video inputs). This makes Milkymist the platform of choice for both anyone looking to build a fast open source processor and for the mobile VJ (video performance artist).
The IP cores that make up the system-on-chip are entirely written in open source synthesizable Verilog HDL and come with test benches and documentation. This makes Milkymist a great library for re-usable logic cores to serve as a base for other open source hardware. In this regard, Milkymist is similar to projects such as LEON3/GRLIB (http://www.gaisler.com/cms/index.php?option=com_content&task=section&id=13&Itemid=125), OpenSPARC (http://www.opensparc.net/) and OpenCores (http://www.opencores.org).
The project is led by Sébastien Bourdeauducq with a strong community of over 30 active in the IRC chat channel. Development boards, for starters the Milkymist One board: http://en.qi-hardware.com/wiki/Milkymist_One, and now available end-user products using the open source system-on-chip are available in collaboration with Sharism at Work Ltd (http://www.sharism.cc).
The mentors we have for Google Summer of Code 2011 are:
- Sébastien Bourdeauducq (Milkymist founder)
- Jon Phillips
- Eric Rannaud (Ulogic)
 Why is your organization applying to participate in GSoC 2010? What do you hope to gain by participating?
The first hardware is real and manufactured. The code is already well developed. Some parts have even been re-used in prestigious development projects, for example the Milkymist memory controller is being used in the NASA CoNNeCT experiment: http://www.nasa.gov/mission_pages/station/science/experiments/CoNNeCT.html). However, there is still a significant effort needed to make the software work well.
At present all developers on the project are self-employed and work on the project in spare time, while taking on extra work to keep the project alive. GSoC 2011 is important to provide some stimulation to the community and get some younger participants from around the world involved.
This effort encompasses work on the device drivers, board support package, graphics libraries, user interface, and end user application. The primary goal of this GSoC application is therefore to recruit more software developers, to provide a good and open source operating system support and end-user applications for the open hardware system-on-chip.
There are also some hardware tasks that can still be done, for the HDL designers among students.
 Did your organization participate in past GSoCs? If so, please summarize your involvement and the successes and challenges of your participation.
No, we are hopeful to participate this year. Jon Phillips is helping us with the application this year and supporting contributors. He has been a mentor for Inkscape the first year of GSoC, Creative Commons and StatusNet. He will help guide the mentors and project through the summer.
 If your organization has not previously participated in GSoC, have you applied in the past? If so, for what year(s)?
Yes, we applied last year and were not accepted. We have talked with Google employees about this and are submitting a more solid application this year.
 What license(s) does your project use?
GPLv3 for the most part. The LatticeMico32 CPU core is using a license specific to Lattice Semiconductor, which is BSD-style. All license details are in the "Credits" section of the README file: http://github.com/lekernel/milkymist/blob/master/README . Students are encouraged to use GPL, but other open source licenses compatible with it might also be used after agreement. Compatibility with GPL is a high priority.
 What is the URL for your ideas page?
 What is the main development mailing list for your organization?
 What is the main IRC channel for your organization?
Channel #milkymist on the FreeNode network (irc.freenode.net)
 Does your organization have an application template you would like to see students use? If so, please provide it now.
 Who will be your backup organization administrator?
Jon Phillips (Link id: rejon)
 What criteria did you use to select these individuals as mentors? Please be as specific as possible.
- High personal involvement in open source software or hardware.
- Technical expertise in the many specific areas that the Milkymist project requires: Linux kernel development, logic design (Ulogic), embedded GUI toolkit design (Genode FX).
- Interest in the Milkymist project.
- Time for and interest in mentoring students.
- Good contact with the administrator.
 What is your plan for dealing with disappearing students?
We will collect contact information (email + mobile + home phone number) and mentors should regularly check up (at least every week) and report to the administrator.
We will require an initial blog post that will be posted on our main website http://milkymist.org at the beginning of the project. Then, we will require a mid-stream blog post and then a final blog post as well.
We will have weekly meetings as well for the project with the mentors and students encouraged to attend. These will be simple check-ins, but crucial to keep students moving forward on the project.
In case a student really disappears, we will inform Google and go without their contribution.
 What is your plan for dealing with disappearing mentors?
This should not happen, however, the administrator will regularly check that the mentors are still on the project (at least once a week). The administrator will have contact information (email + home + mobile phone) of all mentors.
In case a mentor does disappear, we will inform Google and assign their students to other mentors. The number of students per mentor should be kept low (0 to 2) to limit the problems this would cause.
 What steps will you take to encourage students to interact with your project's community before, during and after the program?
As mentioned before, we will have the students write an initial blog post, a midterm and a final blog post to let the community (and world) know about their work for the summer.
The Milkymist project has an IRC channel and a mailing list where developers meet. We will ask that students and mentors be always present there during their work (if network connectivity permits), and are subscribed to the mailing list (if not already so).
If students and mentors are geographically close enough, we will have meetings, workshops and code sprints at hackerspaces such as /tmp/lab (http://www.tmplab.org) or La Suite Logique (http://www.lasuitelogique.org) in Paris.
We intend to be open to the student's contributions and ideas, even though they might not be perfect. We'll encourage the students to discuss them with their mentors, on the mailing list and IRC. We'll provide fast answers to their questions to keep motivation up.
We hope that the students will enjoy contributing to the project and use the many opportunities that we provide to link with interesting people.
 What will you do to ensure that your accepted students stick with the project after GSoC concludes?
We will give complete sub-projects to the students and then ask them if they can be sub-project maintainers. By giving them such ownership and control over their work, we hope to get them personally involved in it.
We also hope that they will appreciate to work on an unusual project that brings openness to a new level: the design of the chip their software would run on. They could even design parts of the chip!
Finally, we will work to be able to integrate student's code in the releases, so that they can see their code being actually used, which should motivate their continued involvement.
Community commitment will ensure that the student will feel reward of contributing after the GSoC period.
Also, by helping the students to promote their work, this will benefit GSoC and the students in announcing the constant activity for the project.
 If you are a small or new organization applying to GSoC, please list a larger, established GSoC organization or a Googler that can vouch for you here.
Jon Phillips (http://rejon.org) from Inkscape, Open Clip Art Library, Creative Commons, Status.Net, and Fabricatorz vouches for this project. I personally will administer it. Chris DiBona, Cat, Carol, and DeWitt can vouch for me. My organization Fabricatorz (http://fabricatorz.com) and our community for open hardware, http://qi-hardware.com vouches for this project.
 If you are a large organization who is vouching for a small organization applying to GSoC for their first time this year, please list their name and why you think they'd be good candidates for GSoC here:
Sebastien and the entire Milkymist.org project is exemplary. There hasn't existed a real affordable and fun open source microprocessor project. I (Jon Phillips) think this project is world changing and the beginning of bringing real hardware hacking to the home and developers desk. I think that innovation and the student engagement will be beyond the effects of Arduino and other open hardware projects that have existed yet. I personally vouch for the heroic efforts of the community. I have never seen a more impressive team of hardware hackers also maintaining such a level of quality.
 Project Ideas
 Linux port (device drivers)
There needs to be linux ports of the device drivers still: Ethernet, improvements of the framebuffer driver, sound (ALSA), video input (V4L), graphics acceleration, DMX, MIDI, infrared.
 Patch Store + Online Upgrade
The goal is to build a patch store where patches for milkymist will be available and anyone may contribute for othrs to use. Also, there should be the capability to update the milkymist from the web as an online upgrade. This technology should all be standards based.
 On-Video Controls
Flickernoise (the VJ application) can already render effects on the device using the video input, in the style of Visikord. However, it currently lacks active areas and motion-directed effects like those demonstrated on this video. The goal of this task is to implement such interaction possibilities.
 File Manager
The embedded GUI application needs a file manager implemented using the MTK GUI toolkit, for standard file operations (rename, move, delete, create directories, ...). Ideally, it should also double as FTP client to enable easy file transfers between two Milkymist devices, which already include a FTP server.
 OHCI Support
The current USB FPGA core ("softusb") is based on a microprocessor compatible with gcc-avr that handles the details of the USB protocol and the communication with the host. The softusb firmware is currently only capable of talking to input devices using a simple ad hoc protocol to communicate the input events to the host. The goal of this task is to rewrite the softusb firmware and perhaps make some modifications to the Verilog HDL code in order to support the standard OHCI host protocol for USB.
 LM32 MMU
I'd do it this way, but the applicant or mentor can disagree as long as it works great. The main design goals are to use little FPGA resources, avoid complex logic that would reduce the system clock frequency, and have no impact on performance when the MMU is disabled and a minimal impact when it is enabled.
- MMU can be completely disabled, for initial TLB loading and backwards compatibility
- Separate instruction and data TLBs
- Virtual indexes and physical tags
- TLBs running concurrently in the CPU pipeline with the I and D caches, with one cycle latency
- TLB storage implemented on FPGA block RAM, enabling a large number of entries to be stored efficiently
- Thanks to this large number of entries, we can assume we have a low rate of minor TLB misses, and we handle said misses entirely in software (no hardware-managed system memory backing of the TLB).