* reflection.c: Remove *_ATOMIC macros. We really shouldn't
[mono-project.git] / web / mono-roadmap.html
blob29344af556053dc45fec2a7254738704c1020636
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;
14 h2, h3, h4, h5, h6 {
15 font-family: Verdana,sans-serif;
16 font-weight: bold;
17 margin: 9pt;
20 h2, h3 {
21 font-size: 18px;
24 h2 {
25 padding: 3px;
26 color: #000000;
29 h3 {
30 font-size: 13px;
31 border-bottom: 2px solid #dddddd;
34 h4 {
35 border-bottom: 2px solid #dddddd;
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%;
49 p {
50 margin-left: 2em;
51 margin-right: 2em;
54 ul li {
55 margin-left: 2em;
58 img {
59 border: 0;
60 vertical-align: top;
63 </style>
64 </head>
65 <body>
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>
76 <i>Last update: Jan 18th, 2004</i>
78 <h3>Introduction</h3>
80 <p>This document describes the high-level roadmap for <a
81 href="http://www.go-mono.com">Mono</a>.
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.
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.
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.
104 <p>This is the timeline:
106 <center>
107 <img src="roadmap.png">
108 </center>
110 <h3>Background</h3>
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
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:
120 <ul>
121 <li> Core: mscorlib, System, System.Security and
122 System.XML assemblies.
124 <li> ADO.NET: System.Data and various other database
125 providers.
127 <li> ASP.NET: WebForms and Web Services are
128 supported. Work on WSE1/WSE2 has also started.
130 <li> Compilers: C#, VB.NET and various command line tools
131 that are part of the SDK.
133 <li> Open Source, Unix and Gnome specific libraries.
134 </ul>
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.
141 <p>Some other smaller and less used components do not have yet
142 a Mono equivalent (System.Management, System.Drawing.Design).
144 <h3>Mono release strategy</h3>
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.
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.
157 <h3>Mono 1.0 goals</h3>
159 <p>The Mono 1.0 release would include the following
160 components:
162 <ul>
163 <li>C# compiler.
165 <li>VM, with JIT and pre-compiler.
167 <li>IL assembler, disassembler.
169 <li>Development and security tools.
171 <li>Core libraries: mscorlib, System, System.XML.
173 <li>System.Data and Mono database providers.
175 <li>System.Web: Web applications platform and Apache
176 integration module.
178 <li>System.Web.Services: client and server support.
180 <li>System.Drawing.
182 <li>System.DirectoryServices
184 <li>JIT support: x86, SPARC and PPC architectures
185 (interpreter available for other architectures).
187 <li>ECMA profiles: special build options to build
188 Mono as an implementation of the various ECMA profiles
189 will be available.
191 <li>Java integration through IKVM.
193 <li>Embedding interface for the runtime.
194 </ul>
196 <p>Packaging:
198 <ul>
199 <li>mono: will contain the above features implementing
200 the .NET 1.1 API.
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.
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.
213 <li>mono-ecma: A build that only includes the ECMA
214 components.
215 </ul>
217 <p>Release target: Q2/2004.
219 <p>Bug fix releases would be done on a monthly basis.
221 <p>For a detailed list, see the <a
222 href="mono-1.0.html">mono-1.0 feature list.</a>
224 <h3>Microsoft's Whidbey</h3>
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.
230 <p>The new features in the Whidbey release of the .NET Framework
231 include:
233 <ul>
234 <li><b>Generic types</b><br>
235 These introduce changes to the compiler, runtime and
236 class libraries.
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.
243 <li><b>Remoting</b><br>
244 New security channels and version-resistant remoting
245 (good news in the interop department).
247 <li><b>XML</b><br>
248 XQuery debuts on this release as well as an improved
249 XmlDocument system based on XPath: XPathDocument.
251 <li><b>Networking</b><br>
252 FTP client, Ssl streams.
254 <li><b>Console and Serial ports:</b></br>
255 Console terminal input/output is available as well as
256 serial port handling.
258 <li><b>Windows.Forms</b><br>
259 Layout containers finally appeared on Windows.Forms as
260 well as various new controls.
262 <li><b>ObjectSpaces</b><br>
263 An API for simpler data-base access.
264 </ul>
266 <h3>Mono 1.2</h3>
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.
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:
281 <ul>
282 <li>Generic types support: C# compiler, execution
283 system and core class libraries.
285 <li>ASP.NET 2.0 improvements.
287 <li>Remoting improvements from Whidbey.
289 <li>System.XML: simpler improvements from Whidbey,
290 lacking the large additions (XQuery for example).
292 <li>Console and Serial ports support.
294 <li>New compilers: VB.NET and JScript support.
296 <li>WSE1/WSE2 implementations.
298 <li>System.Windows.Forms officially debuts with .NET
299 1.0 API; 1.2 API available as an unstable addition.
300 </ul>
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.
308 <p>Release target: Q4/2004.
310 <h3>Mono 1.4</h3>
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.
317 <p>Release target: Q2/2005.
319 <h3>Peer projects</h3>
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.
326 <h3>Unscheduled activities</h3>
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.
334 <p>This is an important component, but requires three major
335 pieces of work:
337 <ul>
338 <li>Runtime support for implementing the security
339 demands.
341 <li>A guidelines document outlining what and where
342 must have security demands in place.
344 <li>A full audit of our class libraries: method by
345 method
346 </ul>
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.
354 <h3>Mono and WinFX: 2006</h3>
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.
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).
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.
372 <h3>Unsupported technologies</h3>
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.
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.
384 <h3>Mono Developer Strategy</h3>
386 <p>Mono Developers should read the <a
387 href="mono-hacking-roadmap.html">Mono Hacking Roadmap</a>
389 <h3>Comments</h3>
391 <p>Feel free to send your comments or questions the roadmap to
392 <a href="mailto:miguel@ximian.com">miguel@ximian.com</a>
396 <i>Last Updated: Nov 1st, 2003</i>