[Mono-dev] Sample program templates, augmenting programs.
Miguel de Icaza
miguel at ximian.com
Sun Nov 4 00:18:43 EDT 2007
I have been thinking on ways of reducing the learning curve for
those using Mono in Linux. IDEs typically have features to create
projects based on a template, so you can get a console project, a web
project, a GUI project and so on setup for you.
But if you do not have an IDE, most of the time you have to roll
these things on your own. For console applications that is not much of
a problem, and it is not much of a problem even for simple desktop
applications; But complex applications or applications that depend on
special files are not as easy to type from memory.
We recently introduced a new command "mconfig" that can help
managing a Web.config file (this is used in ASP.NET sites). This
allows for example an existing ASP.NET application to gain AJAX
functionality by running:
$ mconfig af -t=web AJAX
This creates a Web.config (or modifies an existing one) to add the
proper "magic" to the file to support AJAX.NET. It is a pluggable
system so we can add more features and more targets so developers can
add/remove features to their software as they go.
But it seems like there is room for growth here, we could take
things a few steps ahead and have a template system that would allow
developers to create templates and lookup new templates from a
centralized repository from the command line.
This is similar in spirit to Ruby on Rails where you have commands
that can setup your project, update pieces of your project and so on.
We could have an mtemplate command to create all kinds of different
mtemplate -kind=web:asp:simple ConferenceRegistration
mtemplate -lang:ironpython -kind:gtksharp PointOfSale
I was thinking about this today as I realized that we do not really
have templates for Silverlight applications today on Mono/MonoDevelop.
Which is not terrible, but it would be nice if I could quickly create
projects without having to update my IDE to get new templates for
More information about the Mono-devel-list