* roottypes.cs: Rename from tree.cs.
[mono.git] / web / mono-roadmap.html
1 <html>
2 <head><title>Mono Roadmap</title>
3 <style type="text/css">
4 h1 {
5 color: #efefef;
6 font-size: 18pt;
7 font-family: "Trebuchet MS";
8 border: 0;
9 margin: 0;
10 padding: 1em;
11 background: #666666;
12 }
13
14 h2, h3, h4, h5, h6 {
15 font-family: Verdana,sans-serif;
16 font-weight: bold;
17 margin: 9pt;
18 }
19
20 h2, h3 {
21 font-size: 18px;
22 }
23
24 h2 {
25 padding: 3px;
26 color: #000000;
27 }
28
29 h3 {
30 font-size: 13px;
31 border-bottom: 2px solid #dddddd;
32 }
33
34 h4 {
35 border-bottom: 2px solid #dddddd;
36 }
37
38 body, table {
39 background-color: #ffffff;
40 font-family: Verdana, sans-serif; font-size: 12px;
41 color: black;
42 margin: 0;
43 padding: 0;
44 border: 0;
45        margin-left: 20%;
46        margin-right: 20%;
47 }
48
49 p {
50 margin-left: 2em;
51 margin-right: 2em;
52 }
53
54 ul li {
55 margin-left: 2em;
56 }
57
58 img {
59 border: 0;
60 vertical-align: top;
61 }
62
63 </style>
64 </head>
65 <body>
66
67 <center>
68   <h1>
69   Mono Project Roadmap
70   <br>
71   <font size=1>Miguel de Icaza (miguel@ximian.com)</font>
72   </h1>
73   <p>
74 </center>
75
76 <i>Last update: Jan 18th, 2004</i>
77
78 <h3>Introduction</h3>
79
80         <p>This document describes the high-level roadmap for <a
81         href="http://www.go-mono.com">Mono</a>.  
82         
83         <p>The Mono project started in 2001 as an effort to implement
84         the .NET Framework to Unix.  To bring both the new programming
85         model based on the Common Language Infrastructure and C# as
86         well as helping people migrate their existing knowledge and
87         applications to Unix. Mono today supports a wide variety of
88         operating systems, CPUs and a large chunk of the functionality
89         available in the .NET Framework. 
90         
91         <p>At the October 2003 PDC conference a number of new
92         technologies were announced.  From the Mono release schedule
93         perspective, we should think about these technologies from
94         their release time standpoint, and the features that must be
95         supported.
96
97         <p>This document outlines the roadmap for the Mono project
98         from my perspective: what we can effectively deliver on the
99         dates outlined.  Since Mono is a large open source project,
100         things might change and new features can be incorporated
101         into the plan if external sources devote enough attention to
102         those problems.
103
104         <p>This is the timeline:
105         <p>
106         <center>
107         <img src="roadmap.png">
108         </center>
109         
110 <h3>Background</h3>
111
112         <p>So far Microsoft has published two versions of the .NET
113         Framework: 1.0 and 1.1, the later with incremental updates to
114         the changes in 1.0
115
116         <p>The Mono project has been tracking some of the
117         improvements available in those two releases, some of the
118         highlights of our work so far are: 
119
120         <ul>
121                 <li> Core: mscorlib, System, System.Security and
122                 System.XML assemblies.
123
124                 <li> ADO.NET: System.Data and various other database
125                 providers.
126
127                 <li> ASP.NET: WebForms and Web Services are
128                 supported.  Work on WSE1/WSE2 has also started.
129
130                 <li> Compilers: C#, VB.NET and various command line tools
131                 that are part of the SDK.
132
133                 <li> Open Source, Unix and Gnome specific libraries.
134         </ul>
135
136         <p>Other components like Windows.Forms, Directory.Services,
137         Enterprise Services and JScript are being developed but are not
138         as mature as the other components but are under development by
139         various people.
140
141         <p>Some other smaller and less used components do not have yet
142         a Mono equivalent (System.Management, System.Drawing.Design).
143
144 <h3>Mono release strategy</h3>
145
146         <p>The levels of maturity of Mono fluctuate depending on the
147         development effort we have put into it, and the use we have
148         given to them.  For example, the virtual machine and the C#
149         compiler very mature, while less commonly used functionality
150         in Mono like Windows.Forms or VB.NET are still under heavy
151         development.
152
153         <p>Our strategy is to release the mature components as Mono
154         1.0, and have upcoming versions of Mono add extra
155         functionality.
156
157 <h3>Mono 1.0 goals</h3>
158
159         <p>The Mono 1.0 release would include the following
160         components:
161
162         <ul>
163                 <li>C# compiler.
164
165                 <li>VM, with JIT and pre-compiler.
166                 
167                 <li>IL assembler, disassembler.
168
169                 <li>Development and security tools.
170
171                 <li>Core libraries: mscorlib, System, System.XML.
172
173                 <li>System.Data and Mono database providers.
174
175                 <li>System.Web: Web applications platform and Apache
176                 integration module.
177
178                 <li>System.Web.Services: client and server support.
179
180                 <li>System.Drawing.
181
182                 <li>System.DirectoryServices
183
184                 <li>JIT support: x86, SPARC and PPC architectures
185                 (interpreter available for other architectures).
186
187                 <li>ECMA profiles: special build options to build
188                 Mono as an implementation of the various ECMA profiles
189                 will be available.
190
191                 <li>Java integration through IKVM.
192
193                 <li>Embedding interface for the runtime.
194         </ul>
195
196         <p>Packaging:
197         
198         <ul>
199                 <li>mono: will contain the above features implementing
200                 the .NET 1.1 API.
201
202                 <li>mono-1.0-compat: Will include a build of the
203                 libraries with the .NET 1.0 API, this is a
204                 compatibility build for people running .NET 1.0
205                 applications. 
206
207                 <li>mono-unstable: Will contain a snapshot of the
208                 other technologies under development for developer's
209                 convenience, but will be unsupported at this time.
210                 These include the Generics edition of the C#
211                 compiler.
212
213                 <li>mono-ecma: A build that only includes the ECMA
214                 components.
215         </ul>
216         
217         <p>Release target: Q2/2004.
218
219         <p>Bug fix releases would be done on a monthly basis.
220
221         <p>For a detailed list, see the <a
222         href="mono-1.0.html">mono-1.0 feature list.</a>
223
224 <h3>Microsoft's Whidbey</h3>
225
226         <p>To understand post 1.0 editions of Mono, it is important to
227         put it into perspective with the Microsoft Whidbey product, to
228         be released in 2004.
229         
230         <p>The new features in the Whidbey release of the .NET Framework
231         include:
232         
233         <ul>
234                 <li><b>Generic types</b><br>
235                 These introduce changes to the compiler, runtime and
236                 class libraries.  
237
238                 <li><b>ASP.NET 2</b><br>
239                 Many tools to simplify web application development:
240                 Master pages, new controls for common operations,
241                 personalization and themes.
242
243                 <li><b>Remoting</b><br>
244                 New security channels and version-resistant remoting
245                 (good news in the interop department).
246
247                 <li><b>XML</b><br>
248                 XQuery debuts on this release as well as an improved
249                 XmlDocument system based on XPath: XPathDocument.
250
251                 <li><b>Networking</b><br>
252                 FTP client, Ssl streams.
253
254                 <li><b>Console and Serial ports:</b></br>
255                 Console terminal input/output is available as well as
256                 serial port handling.
257
258                 <li><b>Windows.Forms</b><br>
259                 Layout containers finally appeared on Windows.Forms as
260                 well as various new controls.
261
262                 <li><b>ObjectSpaces</b><br>
263                 An API for simpler data-base access.
264         </ul>
265
266 <h3>Mono 1.2</h3>
267
268         <p>The Mono team is developing in parallel some features that
269         wont make it to the 1.0 release in stable form.  These will be
270         the foundation for the 1.2 release.  The focus of this release
271         is to track the core API for the .NET Framework 1.2, but
272         again, only a subset of the total framework will be
273         available.  
274
275         <p>Mostly, Mono 1.2 consists of components that were not
276         stable enough for Mono 1.0, but that would be mature at this
277         point, plus the incorporation of some new features from
278         Whidbey.  In addition to the Mono 1.0 components, this release
279         will add:
280
281         <ul>
282                 <li>Generic types support: C# compiler, execution
283                 system and core class libraries.
284
285                 <li>ASP.NET 2.0 improvements.
286
287                 <li>Remoting improvements from Whidbey.
288
289                 <li>System.XML: simpler improvements from Whidbey,
290                 lacking the large additions (XQuery for example).
291
292                 <li>Console and Serial ports support.
293
294                 <li>New compilers: VB.NET and JScript support.
295
296                 <li>WSE1/WSE2 implementations.
297
298                 <li>System.Windows.Forms officially debuts with .NET
299                 1.0 API;  1.2 API available as an unstable addition.
300         </ul>
301
302         <p>This release will by default provide .NET 1.2 APIs, but
303         compatibility libraries for 1.0 and 1.1 will be distributed in
304         the mono-compat package.  The unstable components of Mono will
305         be distributed on the `mono-unstable' package, the libraries
306         in this release will be unsupported. 
307
308         <p>Release target: Q4/2004.
309
310 <h3>Mono 1.4</h3>
311
312         <p>A refresh update on the Mono 1.2 release containing the
313         missing components from the previous release and complete any
314         under performing pieces.  Updates to System.Xml, ASP.NET and
315         Windows.Forms to match the .NET 1.2 API.
316
317         <p>Release target: Q2/2005.
318         
319 <h3>Peer projects</h3>
320
321         <p>Other projects like the debugger, the documentation
322         browser, Java integration through IKVM and Gtk# will remain on
323         their own schedules.  This page will be updated to contain
324         that information when it becomes available.
325
326 <h3>Unscheduled activities</h3>
327         
328         <p>A missing component of Mono is the Code Access Security
329         (CAS).  This functionality is not needed in today's Mono as
330         currently Mono is being used to run fully trusted
331         applications, and we are not using it on embedded scenarios
332         where assemblies would have different trust levels.
333
334         <p>This is an important component, but requires three major
335         pieces of work:
336
337         <ul>
338                 <li>Runtime support for implementing the security
339                 demands.
340
341                 <li>A guidelines document outlining what and where
342                 must have security demands in place.
343
344                 <li>A full audit of our class libraries: method by
345                 method
346         </ul>
347
348         <p>All of these are major pieces of work, and we currently
349         have no plans to implement any of those.  A volunteer effort might be
350         able to help with the runtime requirements and the document,
351         but until those are done, we are unlikely to start doing any
352         work on the actual class library audit and instrumentation. 
353         
354 <h3>Mono and WinFX: 2006</h3>
355
356         <p>WinFX is the name given to the new set of libraries that
357         makes up .NET in the Longhorn operating system: the existing
358         .NET set of class libraries, plus the new functionality
359         available in the OS.
360
361         <p>WinFX adds things like storage facilities (WinFS), a
362         new versatile communications stack (Indigo) and a new
363         eye-candy packed GUI programming system (Avalon).
364
365         <p>Although WinFS, Avalon and Indigo are very exciting
366         components, at this time it is too early to tell when those
367         components will be available for Mono.  Open source developers
368         will very likely start work on these, but since they are still
369         far from being officially released, they are not in the radar
370         at this point.
371
372 <h3>Unsupported technologies</h3>
373
374         <p>Some technologies are very hard to implement or are being
375         phased out by components in the Longhorn time frame.  In some
376         cases, we feel that they are not crucial to the future of the
377         open source desktop.
378         
379         <p>System.EnterpriseServices and System.Management come to
380         mind, and we are unlikely to put any resources into the task.
381         We would gladly host the code if someone cares to implement
382         it, but they would likely remain unsupported features of Mono.
383
384 <h3>Mono Developer Strategy</h3>
385
386         <p>Mono Developers should read the <a
387         href="mono-hacking-roadmap.html">Mono Hacking Roadmap</a>
388         
389 <h3>Comments</h3>
390
391         <p>Feel free to send your comments or questions the roadmap to
392         <a href="mailto:miguel@ximian.com">miguel@ximian.com</a>
393
394
395 <p>
396 <i>Last Updated: Nov 1st, 2003</i>