-
Notifications
You must be signed in to change notification settings - Fork 802
Google Summer of Code 2011
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 five years and the last year 150 organizations and 1000 students took part in the program. In order to participate in the program, you must be a student. The stipend is worth 5500 USD per accepted student developer - 5000 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/
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 2000 times each day.
For more information see the homepage: http://www.icsharpcode.net/OpenSource/SD/
Our project participated in GSoC 2009. The following student projects are already part of SharpDevelop 4.0:
- XAML Code Completion (Siegfried Pammer)
- Entity Framework EDM Designer (Philipp Maihart)
- Debugger Visualizers (Martin Konicek)
The customizable shortcut feature is scheduled for 4.0 inclusion, the C++ backend binding is part of the extension source samples.
If you are interested in any project or if you have an idea of your own, please send us a short mail to: [[[email protected]]]
You can also reach us thought the public forum: http://community.sharpdevelop.net/forums/
We have set up an IRC Channel at irc://irc.freenode.org/#sharpdevelop
If you have any specific questions, please feel free to contact the mentors directly.
| David Srbecky | Email/MSN/XMPP: 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 |
You need to submit your application before the 9th April 2010. 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 (TODO: Update)
Use this page to submit the application: http://socghop.appspot.com/student/apply/google/gsoc2009 (TODO: Update)
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.
We suggest that you start coding even before the application deadline. Some preliminary code allows us to see that you can understand and extend the SharpDevelop source code. It also show us that you are motivated and can write good C# code.
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 (see below).
{BR}
| **Difficulty:** | Hard |
| **Required skills:** | VB 10 |
| **Mentor:** | Daniel Grunwald |
This involves adding support for the new VB 9.0 and VB 10.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 9.0 Language Specification - http://www.microsoft.com/DownLoads/details.aspx?FamilyID=39de1dd0-f775-40bf-a191-09f5a95ef500&displaylang=en
{BR}
| **Difficulty:** | Hard |
| **Required skills:** | VB 10, Knowledge of LL-parsers |
| **Mentor:** | Daniel Grunwald |
The VB parser in NRefactory needs to be improved for VB 9.0 and VB 10.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 9.0 Language Specification - http://www.microsoft.com/DownLoads/details.aspx?FamilyID=39de1dd0-f775-40bf-a191-09f5a95ef500&displaylang=en
{BR}
| **Difficulty:** | Medium-Hard |
| **Required skills:** | WPF, Xaml |
| **Mentor:** | Daniel Grunwald |
The WPF designer is the most important feature of SharpDevelop 4.x. It should contain different editing features. The basic grid editing features are implemented, things that need to be done include:
- specific Canvas, Stackpanel, Dockpanel editing
- adorners for different controls to increase usability (offer shortcuts)
- etc.
Furthermore changes in the designer should be immediately visible in the XAML source code. Similarly, changes in the XAML source code should be immediately visible in the designer (that is, faster then reloading the whole XAML file). We have some ideas about how to do this. In particular, we have a our own custom XML parsing library that can notify you when parts of the XAML file are changed. (but this for you only if you're interested in implementing a difficult feature)
Difficulty varies based on which features you plan to implement. We expect your GSoC application to contain a detailed list of the features you want to implement. You could just try the existing WPF designer to see what's missing. Then, please discuss your feature list with us before submitting your application!
{BR}
| **Difficulty:** | Medium (A lot of work though) |
| **Required skills:** | Reflection-API, WPF, (Multi-threading) |
| **Mentor:** | David Srbecky |
The debugging user interface needs some improvements and additions:
- The pads need to be rewritten to WPF
- Allow the user select which handled exceptions should break execution
- Allow the user select which MDAs should break execution
- Some usability improvements in the tooltips (Edit values, Search by name, "Star" some names, "Pin" the tooltip)
- Rewrite options page to WPF
- Parallel tasks pad (see Visual Studio 2010)
- Parallel callstacks pad (see Visual Studio 2010) Low-priority?
- Anything else you can think of...
The items are relatively small so you might be able to do all of them. However, doing just a few of them well would be fine as well.
{BR}
{BR}
| **Difficulty:** | Medium |
| **Required skills:** | Reflection-API, WPF |
| **Mentor:** | David Srbecky |
Create some interesting and useful debugger visualizer. It is up to you to come up with some ideas. You can create one complex visualizer or several simple ones.
The visualizers should be written in WPF.
Porting of some open-source Visual Studio visualizers might also be an option - however, discuss that with me first.
Links and References: {BR}
- Mole for WPF visualizer - http://www.codeproject.com/KB/WPF/MoleForWPF.aspx
{BR}
| **Difficulty:** | Easy |
| **Required skills:** | Experience with ReSharper advantage |
| **Mentor:** | - |
ReSharper provides many great features that make the work of Visual Studio programmers easier. You task would be implement some of these features in SharpDevelop as well.
For example:
- Quick-fixes for some common compile errors
- Navigation short-cuts
- Refactorings(although SharpDevelop already implements several of these)
Feel free to pick any ReSharper features that you think are important or come up with your own ideas. The goal is to make life of SharpDevelop programmers easier. Most of the features do not seem particularly difficult so you might be able to implement quite a few of them.
Links and References: {BR}
- ReSharper features - http://www.jetbrains.com/resharper/features/index.html
{BR}
| **Difficulty:** | Medium |
| **Required skills:** | NRefactory, Background in Code Analysis |
| **Mentor:** | - |
Code Quality Analysis is important, it is even more important to have that directly integrated into the IDE and that it works out-of-the-box. You can think of CQA as the following:
- dependency graphs/matrices
- analysis of code complexity using metrices
- find unused/dead code
- etc.
A good example of CQA is NDepend. It was launched as an OSSP, as it became very successful it was turned into closed source. Internally it used components created by the SharpDevelop team, e. g. NRefactory.
NDepend had a wide acceptance in the Windows .NET Open Source world and you can help to bring it back.
Links and References: {BR}
- NDepend features - http://www.ndepend.com/Features.aspx
{BR}
| **Difficulty:** | Easy-Medium |
| **Required skills:** | Entity Framework |
| **Mentor:** | - |
Use T4 from MonoDevelop. T4 is text templating system which is supported in Visual Studio. It is quite similar to the other know templating systems such as MyGeneration and CodeSmith.
The goal of the project would be to implement support for T4 and then write templates for the Entity Framework that will generate SQL code necessary to create a database on the server.
Note that MyGeneration is open-source some parts of it might be useful.
Links and References: {BR}
- T4 description on MSDN - http://msdn.microsoft.com/en-us/library/bb126445.aspx
- More about T4 - http://www.olegsych.com/2007/12/text-template-transformation-toolkit/
- T4 in Mono - http://dan.s.wards.ws/how-to-execute-t4-text-templates-in-monodevelop/
{BR}
{BR}
| **Difficulty:** | Hard |
| **Required skills:** | Knowledge in compiler theory; |
| **Mentor:** | - |
Low-priority project. Difficulty varies depending on the level of support of the language. Parsing C++ is extremely hard, you will be required to pick and reuse an existing open-source parser implementation. clang might be an option.
Forum Discussions:
- C++/CLI Support - http://wiki.sharpdevelop.net/CPPSupportPage.ashx
{BR}
| **Difficulty:** | Easy |
| **Required skills:** | - |
| **Mentor:** |
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.
Links:
{BR}
| **Difficulty:** | Hard |
| **Required skills:** | Compiler design |
| IL bytecode | |
| **Mentor:** | David Srbecky |
Low-priority project.
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}
| **Difficulty:** | Medium to hard |
| **Required skills:** | IL bytecode |
| **Mentor:** | David Srbecky |
Low-priority project.
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}
Feel free to come up with an idea of your own.
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
In any case, note that you will be expected to work on the project for over two months and you will be paid 5000 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.
