Release plan for MonoDevelop 1.0
From MonoDevelop
After several years of development MonoDevelop is beginning to be really useful to develop real applications, so it makes sense to start planning a stable 1.0 release. This page contains a list of tasks to do before the relase.
| Table of contents |
[edit]
Release schedule
The proposed plan for the release is the following:
- MD beta 1 release: in this release we would include most of the missing features for 1.0 (see below). We would do code freeze at this point.
- MD beta 2 (or RC) release: mainly bug fixes and memory usage reduction.
- MD 1.0 release: it will include the latest bug fixes. I also think we should work on writing documentation for this release, specially tutorials.
[edit]
Development tasks
So, which features is MD 1.0 going to include?. Basically, we are going to finish and polish what we already have. Here is a list of things to do for each add-in (bugs aside):
- MonoDevelop core: The core can be considered complete now. No major new features are planned. However, it will need to be polished:
- Make an audit of the API to make sure we don't have public classes or methods which don't really need to be public. (Lluis)
- Reorganize the extension point tree (which has a mixture of SharpDevelop and MonoDevelop branches), to something like what was described some months ago in a message (http://lists.ximian.com/archives/public/monodevelop-list/2006-January/003077.html) in the MD mailing list. (Lluis)
- Debugger: A lot of people will ask for this, but looks like the debugger won't be ready by our code freeze date. We can release it later on as a separate add-in. (David Srbecký, Google SoC project).
- Documentation browser:
The Monodoc integration more or less works, but there are some known crashes. There is a proposal for showing Monodoc in an external window. It would be more practical that the current integrated view. The integrated documentation tree is not really useful, we don't have search or an index integrated.
- Text editor: There are several requests/issues to solve:
-
Parameter completion: after typing the name of a method, show a popup window with information about the parameters the method takes. -
Remove C#-isms. The code completion engine has several C#-isms in the code, which may make it difficult to integrate with other languages. - Configurable key bindings. That's not specific to the editor, but people mostly complain about it. I'm not sure we can implement this for 1.0.
- Refactory operations. We have and under-used refactory API. It would be nice to use it to implement some basic refactoring operations.
-
- Visual Studio importer:
Ankit is working on supporting VS2005 files right now. The idea is that you can open VS files directly in MD and work with those projects like if they were native projects. It will support writing changes such as adding files or modifying the project configuration.Ideally, we should do the same for VS2003 (right now it only supports importing for VS2003 projects). (Ankit)
- ASP.NET support: The basic ASP.NET support is most of the way there, and can certainly be polished enough for the release. It should then be usable for real-world projects. Things that *need* doing for AspNetAddIn are: (Michael Hutchinson)
- Handling referenced assemblies, i.e. web.config (medium)
- Checks for XSP before trying to run it (easy)
- Web deployment (medium, code mostly done for this, but *requires* core changes)
- Icons (easy, time-consuming)
- Handle "special folders" (easy/medium, some code done)
- Things we would quite like to do, but most likely won't have time for:
- Text editor toolbox support, for ASP.NET/HTML snippets (easy/medium).
- Special folders for ASP.NET 2.0, incl App_Code etc (medium).
- CodeBehind tabs at the bottom of windows, but this will involve some fairly complicated changes to get it working reliably, including changes to Core (medium/hard).
- Allow launching site in different browsers (easy).
- Some additional templates, e.g. web service project (easy)
- Live parsing of Web Forms to push member declarations into CodeBehind (this already is done at compile time, so probably not too hard).
- GTK# designer: There are several features to be implemented in the designer before the release: (Lluis)
-
Support partial classes when generating code. -
Support for Undo/Redo. -
Reuse the toolbox implemented for the ASP.NET add-in. - Support for some missing controls, such as
Gtk.Fixedand context menus. It would be nice to have a TreeView designer, but it may be too much work for 1.0.
-
- NUnit: It can be considered feature complete for 1.0. (Lluis)
-
One issue that needs to be resolved is what to do with the NUnit dependency. Right now the add-in can't be built with recent NUnit versions since they have breaking changes. I talked about this with Charlie Poole in the Mono summit and he suggested to embed the most recent NUnit dlls into the add-in, since even if the API has some breaking changes, new NUnit versions can still run tests written for all the previous versions. A new small feature: add an option to run a test in the context menu of the editor. - A feature request: allow running a test case from the context menu in the text editor.
-
- Version Control:
Support for SVN is mostly functional.
- Welcome page:
-
Missing support for localization. - Add an iframe that renders the latest news from the Mono and MonoDevelop projects. Maybe it should render a special RSS feed specific for MonoDevelop, so we can push content there that matters to MonoDevelop users (articles, releases, etc).
-
- Web references:
There is an add-in to be integrated by Gideon de Swardt.The only problem is that it only supports .NET 2.0 projects. It would be nice to make it work for 1.1 as well. (Gideon de Swardt)
- Xml editor: It's being maintained outside of MD, so nothing to add. Just to make sure it works when we release 1.0.
- Boo binding: This add-in is mostly complete. There are however a couple of tasks to be done (Peter Johanson):
- Right now the Boo add-in always starts an external process which runs the backend for the Boo shell. This process should only be started if the user opens the shell, since it's a waste of memory otherwise.
- Implement all the necessary bits to support Stetic/Gtk# design.
- C# binding:
It is mostly complete. We may need to add support for partial classes. I'm not sure they are correctly handled by the parser right now.
- ILAsm binding: Complete.
- Java binding: It's mostly complete, although there are some IKVM configuration issues that need to be fixed.
- VB.NET binding: There is no support for generics. We may want to migrate to the new VB compiler.
- Nemerle binding: One issue is that this add-in depends on a specific version of Nemerle from SVN. If it can't be made to depend on a packaged Nemerle version we won't be able to include it in the MD release.
- ChangeLog add-in:
It's now integrated with the version control add-in. There are ideas for improving it.
- Autotools: There are several features I'd like to support for MD 1.0:
-
Support integration with existing Makefiles. That is, if somebody has a project with complex build rules which can't be emulated by MD, just make it possible to delegate the entire build process to Make, and still be able to launch the build from inside MD. About modifying the Makefile in MD, supporting adding/removing files would be enough for now. -
We need to find a solution for file templates (.in files). MD uses some of them. We need to support them in the MD build model if we want to be able to completely build MD using MD.(not for 1.0) - There may be other missing features needed for self-hosting MD.
- It would be nice to support generating a tarball without having to pollute the project directory with autotools files.
-
- IDE extensions for Mono:
Nothing much to do. Just make sure it works with the most recent Mono makefiles. (Lluis)
- MonoQuery database management: Chris Hergert proposed to finish the add-in by implementing the following features:
- Use reflection for loading database providers
- turning your db queries into csharp code
- generate nhibernate mappings for your project
- graphical table builder
- possibly integrate into the project build process
- store configuration data in the solution
- generate classes from database structures
- Deployment: Several pending topics: (Lluis)
-
There is a patch pending for review, which provides a general way for projects to specify which files need to be deployed. -
Creation of a Desktop Tools add-in, wich would provide support for features like creating launch scripts, freedesktop *.desktop entries and MIME types.
-
[edit]
MonoDevelop branding
Several branding related tasks:
- A new logo has been proposed. That logo is currently being reviewed to give it a Tango (http://tango.freedesktop.org) look.
- Once the logo is complete, update the look and style of:
- the splash screen
- the about box
- the welcome page
- the MonoDevelop web site
[edit]
Documentation
It would be good to produce some documentation for the 1.0 release, so new users can easily get started using MonoDevelop. Here are some ideas:
- MonoDevelop 1.0 walkthrough: a quick introduction to MonoDevelop 1.0, showing the main features.
- Getting started and basic concepts: explain how to create a project, what is a solution, how to compile and run projects, and other basic commands.
- For each addin, an introduction, feature reference and walkthrough.
- Tutorials:
- Creating a simple "hello world" project.
- Creating GNOME applications using Stetic.
- Creating web applications.
- The container model, people coming from VS.NET are very confused that widgets take all the space, and believe that this is a bug.

Powered by MediaWiki