-
Notifications
You must be signed in to change notification settings - Fork 776
Google Summer of Code 2009
Google Summer of Code is a program that offers student developers stipends to write code for various open source projects. It has taken place for the last four years and the last year 175 organizations and 1125 students took part in the program. In order to participate in the program, you must be a student. The stipend is worth 5000 USD per accepted student developer - 4500 USD goes to the student and 500 USD goes to the mentoring organization.
For more information about the program see http://code.google.com/soc/
The following projects were completed successfully:
- XAML Code Completion (Siegfried Pammer)
- Entity Framework EDM Designer (Philipp Maihart)
- Debugger Visualizers (Martin Konicek)
- Integration of C++/CLI (Tomasz Tretkowski)
- Customizable Shortcuts (Sergej Andrejev)
The customizable shortcut feature is waiting on a branch in the SharpDevelop repository for cleanup and inclusion. Of the C++ project, only a small part made it into SharpDevelop. The other three projects were fully integrated into SharpDevelop and shipped with SharpDevelop 4.0.
SharpDevelop is an open source IDE for C#, VB.NET and other languages on the .NET platform. It is typically used as an alternative to Microsoft's Visual Studio .NET. It includes features like a forms designer, code completion, code generation, integrated debugger, refactoring support, SVN integration, code conversion between C# and VB.NET, integrated support for testing and many other features. The project is as old as the .NET platform itself - it started in the year 2000 and it has been actively developed ever since. SharpDevelop is translated by the community to over 18 languages and it is downloaded over 2000 times each day.
For more information see the homepage: http://www.icsharpcode.net/OpenSource/SD/
_March 23 ~12 noon PDT / 19:00 UTC_ | Student application period opens. |
**_April 3** 5:00 PM PDT / ~12 noon PDT / 19:00 UTC_ | Student application **deadline** |
For the whole timeline see http://socghop.appspot.com/document/show/program/google/gsoc2009/faqs#timeline
If you are interested in any project or if you have an idea of your own, please send us a short mail to: [[gsoc@icsharpcode.net]]
You can also reach us thought the public forum: http://community.sharpdevelop.net/forums/
David Srbecky | Email: dsrbecky(at)gmail.com |
MSN: dsrbecky(at)gmail.com | |
Skype: dsrbecky | |
ICQ: 153888796 | |
Daniel Grunwald | Email: daniel(at)danielgrunwald.de |
Matt Ward | Email: mrward(at)users.sourceforge.net |
Bernhard Spuida | Email: bernhard.spuida(at)gmail.com |
If you have any specific questions, please feel free to contact us directly. {BR}
You need to submit your application before the 3rd April. {BR} The application is submitted via Google. Do not send the applications directly to us. You can can find the template of the application here: here
Use this page to submit the application: http://socghop.appspot.com/student/apply/google/gsoc2009
If you want to discuss your idea with us, please feel free to contact us. (preferably sooner rather than later)
Please try to submit your application early, so that we can comment on it (even if the application still is not polished). You can still edit the application after you submit it.
See this page for some advice: http://code.google.com/p/google-summer-of-code/wiki/AdviceforStudents
Note that you will be expected to complete most of the projects in C#. This list is by no means exhaustive or fixed. Feel free to modify the ideas to your liking or come up with your own idea. We really value student generated ideas.
You can also look for additional ideas on the following two pages: {BR} (You might need to expand or trim down an idea to make it suitable as a project) {BR}
You can also find some ideas in the comments of this blog post: {BR} http://community.sharpdevelop.net/blogs/dsrbecky/archive/2009/03/24/gsoc2009.aspx#comments
In any case, note that you will be expected to work on the project for over two months and you will be paid 4500 USD for it. The project has to be sufficiently large so that you deserve the money - we are unlikely to accept a proposal that we can accomplish ourselfs over the weekend. On the other hand, do not be too ambitious - it much better to do smaller project very well than to promise too much and fail.
**Difficulty:** | Varies |
**Required skills:** | - |
**Mentor:** | Daniel Grunwald |
This involves adding support for the new VB 9.0 features to SharpDevelop's code-completion engine. This is shared between C# and VB, so some features for LINQ support are already present and just need some adjustment because VB has different LINQ features.
Links and References: {BR}
- VB .NET Language Specification - http://www.microsoft.com/DownLoads/details.aspx?FamilyID=39de1dd0-f775-40bf-a191-09f5a95ef500&displaylang=en
{BR}{BR}
**Difficulty:** | Varies |
**Required skills:** | Knowledge of LL-parsers |
**Mentor:** | Daniel Grunwald |
The VB parser in NRefactory needs to be improved for VB 9.0. The main task would be to add support for XML literals. This requires adding the node types to the abstract source tree; and implementing a lexer and parser for VB's XML literals. The existing VB lexer needs to enter some kind of special mode when it detects an XML literal, as VB uses different lexical rules in XML literals. See the VB specification for details.
Links and References: {BR}
- VB .NET Language Specification - http://www.microsoft.com/DownLoads/details.aspx?FamilyID=39de1dd0-f775-40bf-a191-09f5a95ef500&displaylang=en
{BR}{BR}
**Difficulty:** | Varies |
**Required skills:** | - |
**Mentor:** | - |
The whole ASP.NET support is a huge task and you are expected to focus only on some specific area which you like.
See the dedicated page for Support for asp.net
{BR}{BR}
**Difficulty:** | Medium |
**Required skills:** | - |
**Mentor:** | Daniel Grunwald |
Extend the XAML code completion to include support for attached properties, events, and markup extensions. Some specific markup extensions like 'Binding' can also have code-completion for some of their properties (e.g. 'ElementName').
Also, it might be a good idea to take a look at the new features in XAML 2009, the new version of XAML shipping with Visual Studio 2010.
Links and References:
- MSDN topics about XAML - http://msdn.microsoft.com/en-us/library/ms747122.aspx
{BR}{BR}
**Difficulty:** | Varies |
**Required skills:** | - |
**Mentor:** | - |
Difficulty varies depending on the level of support of the language. There is already a sample C++ AddIn in the SharpDevelop 'samples' directory, it only needs some simple improvements to get usable: allow creating new C++ projects, allow adding new files to C++ projects, create 'Project Options' dialog. This part would be easy. On top of that, it would be nice to have C++ code-completion - here you would have to look for available open source C++ parsers/code-completion engines and try to integrate one into SharpDevelop.
Forum Discussions:
- C++/CLI Support - C++ Support
{BR}{BR}
**Difficulty:** | Varies |
**Required skills:** | - |
**Mentor:** | - |
Difficulty varies depending on the level of support of the language (both parser and code-completion support would be preferred).
You can basically implement back-end for any .NET you like.
Bonus points if the language is widely used.
{BR}{BR}
**Difficulty:** | Easy |
**Required skills:** | - |
**Mentor:** | - |
**Forum thread:** [http://community.sharpdevelop.net/forums/p/9194/25756.aspx](http://community.sharpdevelop.net/forums/p/9194/25756.aspx) |
Create a 'reformat code' command for C# and VB that uses the PrettyPrinter in NRefactory (see NRefactory in src\Libraries\NRefactory) to reformat the code. The code for the command itself is trivial - it's like the single-file C# <-> VB converter, just without the conversion part :)
The main work will be in these aspects:
-
Create a user interface for the available formatting options. Please do not use XML Forms like existing SharpDevelop option panels - simply create a Windows Forms or WPF user control.
-
Improve NRefactory output options (e.g. maximum line length).
-
Improve preserving the position of comments. At least in the most common cases, should "stay in position" (currently NRefactory will move comments onto their own line).
NRefactory is also used by MonoDevelop, so you might want to coordinate with Mike Krüger.
{BR}{BR}
**Difficulty:** | Varies |
**Required skills:** | - |
**Mentor:** | - |
Implement or improve refactorings like "Extract Method" etc.
Several students can potentially work on several different refactorings.
{BR}
**Difficulty:** | Hard |
**Required skills:** | Compiler design |
IL bytecode | |
**Mentor:** | David Srbecky |
You do not have to worry about the debugger/runtime side of this. What we need is a C# compiler that is able to generate updated IL code, metadata and symbols. Modifying the Mono C# compiler is probably the best way to go.
The scope of this project is limited to just being able to modify a body of a method. For example, adding of a new method is not supported. We are limited by the capabilities of the .NET Framework anyway.
The problem is that the current Mono compiler compiles the source code and then exits (forgets all the intermediate data). If a body of a function is modified, it is not necessary to recompile the whole project. It is only necessary to recompile the function and get the new IL code. However, to do so, the compiler has to remember some of the state - all the already compiled classes and their members.
Links and References: {BR}
- Mono Project Page - http://www.mono-project.com/
- Mono C# compiler - http://www.mono-project.com/CSharp_Compiler
{BR}{BR}
**Difficulty:** | Medium to hard |
**Required skills:** | IL bytecode |
**Mentor:** | David Srbecky |
This is other approach to Edit and Continue. It is more general, but also slower. Instead for modifying the compiler, just recompile the whole program and then find differences between the old and new assembly.
Mono Cecil is probably best for reading the assemblies.
Links and References: {BR}
- Mono Project Page - http://www.mono-project.com/
- Mono Cecil - http://www.mono-project.com/Cecil
{BR}{BR}
**Difficulty:** | Depends on the visualizer(s) implemented |
**Required skills:** | - |
**Mentor:** | David Srbecky |
Visualizers are used during debugging to represent data in a more meaningful manner. You task would be to implement one or more visualizers in SharpDevelop.
The visualizer you want to work on is up to your imagination. For example see: http://www.gnu.org/software/ddd/
{BR}
**Difficulty:** | Varies |
**Required skills:** | - |
**Mentor:** | - |
Easy, fast, ready-to-go bug/feature tracking for a single developer {BR} Option to integrate with team-based bug tracker backends {BR} Integration with SCM system (subversion etc.) to link bugs to SCM revisions
{BR}{BR}
**Difficulty:** | Medium to hard |
**Required skills:** | - |
**Mentor:** | - |
Probably involves abstracting all actions to some kind of global list and providing a central accesspoint in the addin model where addins can retrieve and store shortcuts. Currently, each addin handles its own shortcuts, so this would probably entail some re-engineering of the addin model and implementation. A particular challenge will be avoiding conflicts between addins that use this mechanism and those that rely on the current model, as there are third party addins which may not be adapted to a new model.
{BR}{BR}
**Difficulty:** | Medium |
**Required skills:** | C# |
**Mentor:** | Matt Ward |
Create a new Server Explorer/Database Explorer that has similar features to Visual Studio. The database explorer should be based around MyMeta, an open source API that can be used to get metadata from a database, which is part of the MyGeneration code generator toolset. Add support for the Entity Framework, an object-relational mapping (ORM) framework for .NET, by integrating the open source Entity Framework Designer on CodePlex. All UI to be written in WPF. Good unit tests and code coverage required for new code.
Links and References: {BR}
- MyGeneration Project Page - http://mygeneration.sourceforge.net/
- Entity Framework Designer - http://www.codeplex.com/edmdesigner {BR}{BR}