Skip to content

Google Summer of Code 2009

Daniel Grunwald edited this page Sep 15, 2012 · 3 revisions

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/

Results

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

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/

Screenshot of SharpDevelop

Timeline

_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

Contact

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/

Mentors

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}

How to apply

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

Project Ideas

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.

Language Support

** VB 9.0 (LINQ) code-completion support **

**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}

{BR}{BR}

** VB 9.0 parser (XML literals) **

**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}

{BR}{BR}

** ASP.NET (.aspx) support **

**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}

** XAML code-completion **

**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:

{BR}{BR}

** Integration of C++/CLI **

**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:

{BR}{BR}

** Support for your favourite .NET language **

**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}

** Pretty Printer **

**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:

  1. 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.

  2. Improve NRefactory output options (e.g. maximum line length).

  3. 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}

** Refactoring **

**Difficulty:** Varies
**Required skills:** -
**Mentor:** -

Implement or improve refactorings like "Extract Method" etc.

Several students can potentially work on several different refactorings.

{BR}

Debugger Features

** Edit and Continue for C# **

**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}

{BR}{BR}

** Edit and Continue for any language **

**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}

{BR}{BR}

** Debugger Visualizers **

**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}

Tools

** Integrated Bug Tracking **

**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}

** Customization of all keyboard shortcuts / Improve Keyboard Experience**

**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}

** Database Tools **

**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}

Something went wrong with that request. Please try again.