* doc/books: Added books on Web Services and ASP.NET
[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 <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
189                 <li>Java integration through IKVM.
190
191                 <li>Embedding interface for the runtime.
192         </ul>
193
194         <p>Packaging:
195         
196         <ul>
197                 <li>mono: will contain the above features implementing
198                 the .NET 1.1 API.
199
200                 <li>mono-1.0-compat: Will include a build of the
201                 libraries with the .NET 1.0 API, this is a
202                 compatibility build for people running .NET 1.0
203                 applications. 
204
205                 <li>mono-unstable: Will contain a snapshot of the
206                 other technologies under development for developer's
207                 convenience, but will be unsupported at this time.
208                 These include the Generics edition of the C#
209                 compiler.
210
211                 <li>mono-ecma: A build that only includes the ECMA
212                 components.
213         </ul>
214         
215         <p>Release target: Q2/2004.
216
217         <p>Bug fix releases would be done on a monthly basis.
218
219         <p>For a detailed list, see the <a
220         href="mono-1.0.html">mono-1.0 feature list.</a>
221
222 <h3>Microsoft's Whidbey</h3>
223
224         <p>To understand post 1.0 editions of Mono, it is important to
225         put it into perspective with the Microsoft Whidbey product, to
226         be released in 2004.
227         
228         <p>The new features in the Whidbey release of the .NET Framework
229         include:
230         
231         <ul>
232                 <li><b>Generic types</b><br>
233                 These introduce changes to the compiler, runtime and
234                 class libraries.  
235
236                 <li><b>ASP.NET 2</b><br>
237                 Many tools to simplify web application development:
238                 Master pages, new controls for common operations,
239                 personalization and themes.
240
241                 <li><b>Remoting</b><br>
242                 New security channels and version-resistant remoting
243                 (good news in the interop department).
244
245                 <li><b>XML</b><br>
246                 XQuery debuts on this release as well as an improved
247                 XmlDocument system based on XPath: XPathDocument.
248
249                 <li><b>Networking</b><br>
250                 FTP client, Ssl streams.
251
252                 <li><b>Console and Serial ports:</b></br>
253                 Console terminal input/output is available as well as
254                 serial port handling.
255
256                 <li><b>Windows.Forms</b><br>
257                 Layout containers finally appeared on Windows.Forms as
258                 well as various new controls.
259
260                 <li><b>ObjectSpaces</b><br>
261                 An API for simpler data-base access.
262         </ul>
263
264 <h3>Mono 1.2</h3>
265
266         <p>The Mono team is developing in parallel some features that
267         wont make it to the 1.0 release in stable form.  These will be
268         the foundation for the 1.2 release.  The focus of this release
269         is to track the core API for the .NET Framework 1.2, but
270         again, only a subset of the total framework will be
271         available.  
272
273         <p>Mostly, Mono 1.2 consists of components that were not
274         stable enough for Mono 1.0, but that would be mature at this
275         point, plus the incorporation of some new features from
276         Whidbey.  In addition to the Mono 1.0 components, this release
277         will add:
278
279         <ul>
280                 <li>Generic types support: C# compiler, execution
281                 system and core class libraries.
282
283                 <li>ASP.NET 2.0 improvements.
284
285                 <li>Remoting improvements from Whidbey.
286
287                 <li>System.XML: simpler improvements from Whidbey,
288                 lacking the large additions (XQuery for example).
289
290                 <li>Console and Serial ports support.
291
292                 <li>New compilers: VB.NET and JScript support.
293
294                 <li>WSE1/WSE2 implementations.
295
296                 <li>System.Windows.Forms officially debuts with .NET
297                 1.0 API;  1.2 API available as an unstable addition.
298         </ul>
299
300         <p>This release will by default provide .NET 1.2 APIs, but
301         compatibility libraries for 1.0 and 1.1 will be distributed in
302         the mono-compat package.  The unstable components of Mono will
303         be distributed on the `mono-unstable' package, the libraries
304         in this release will be unsupported. 
305
306         <p>Release target: Q4/2004.
307
308 <h3>Mono 1.4</h3>
309
310         <p>A refresh update on the Mono 1.2 release containing the
311         missing components from the previous release and complete any
312         under performing pieces.  Updates to System.Xml, ASP.NET and
313         Windows.Forms to match the .NET 1.2 API.
314
315         <p>Release target: Q2/2005.
316         
317 <h3>Peer projects</h3>
318
319         <p>Other projects like the debugger, the documentation
320         browser, Java integration through IKVM and Gtk# will remain on
321         their own schedules.  This page will be updated to contain
322         that information when it becomes available.
323
324 <h3>Unscheduled activities</h3>
325         
326         <p>A missing component of Mono is the Code Access Security
327         (CAS).  This functionality is not needed in today's Mono as
328         currently Mono is being used to run fully trusted
329         applications, and we are not using it on embedded scenarios
330         where assemblies would have different trust levels.
331
332         <p>This is an important component, but requires three major
333         pieces of work:
334
335         <ul>
336                 <li>Runtime support for implementing the security
337                 demands.
338
339                 <li>A guidelines document outlining what and where
340                 must have security demands in place.
341
342                 <li>A full audit of our class libraries: method by
343                 method
344         </ul>
345
346         <p>All of these are major pieces of work, and we currently
347         have no plans to implement any of those.  A volunteer effort might be
348         able to help with the runtime requirements and the document,
349         but until those are done, we are unlikely to start doing any
350         work on the actual class library audit and instrumentation. 
351         
352 <h3>Mono and WinFX: 2006</h3>
353
354         <p>WinFX is the name given to the new set of libraries that
355         makes up .NET in the Longhorn operating system: the existing
356         .NET set of class libraries, plus the new functionality
357         available in the OS.
358
359         <p>WinFX adds things like storage facilities (WinFS), a
360         new versatile communications stack (Indigo) and a new
361         eye-candy packed GUI programming system (Avalon).
362
363         <p>Although WinFS, Avalon and Indigo are very exciting
364         components, at this time it is too early to tell when those
365         components will be available for Mono.  Open source developers
366         will very likely start work on these, but since they are still
367         far from being officially released, they are not in the radar
368         at this point.
369
370 <h3>Unsupported technologies</h3>
371
372         <p>Some technologies are very hard to implement or are being
373         phased out by components in the Longhorn time frame.  In some
374         cases, we feel that they are not crucial to the future of the
375         open source desktop.
376         
377         <p>System.EnterpriseServices and System.Management come to
378         mind, and we are unlikely to put any resources into the task.
379         We would gladly host the code if someone cares to implement
380         it, but they would likely remain unsupported features of Mono.
381
382 <h3>Mono Developer Strategy</h3>
383
384         <p>Mono Developers should read the <a
385         href="mono-hacking-roadmap.html">Mono Hacking Roadmap</a>
386         
387 <h3>Comments</h3>
388
389         <p>Feel free to send your comments or questions the roadmap to
390         <a href="mailto:miguel@ximian.com">miguel@ximian.com</a>
391
392
393 <p>
394 <i>Last Updated: Nov 1st, 2003</i>