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