Welcome!

Microsoft Cloud Authors: Andreas Grabner, Nick Basinger, Kevin Benedict, Pat Romanski, Liz McMillan

Related Topics: Microsoft Cloud

Microsoft Cloud: Article

The Mono Project

The Mono Project

In July 2001 we announced the launch of the Mono Project ­ an effort to build an open-source implementation of the Microsoft .NET Framework using the technical documents that Microsoft submitted to ECMA (the European Computer Manufacturers Association) for standarization.

Eighteen months later, we have achieved quite a bit: we have an implementation of the Common Language Infrastructure (CLI), a C# compiler, and roughly 3,500 classes at various degrees of completion.

In this magazine it is not necessary to rave about the greatness of .NET and how it simplifies the development process, nor the pleasure you receive from writing new code in the C# language and being able to morph and model your code rapidly to improve it, and to quickly expand it.

The original team at Ximian that set out to build Mono and create its vibrant community was interested in bringing this pleasure and these programming improvements to the Unix world, where we have spent the past few years building a platform, a desktop, and a set of desktop productivity tools for Unix.

Mono was initially led by Ximian, and has since grown up to be a team effort by many international programmers and contributors. To date, roughly 200 people have contributed code, documentation, patches, and their time to the project, and a little more than a hundred have direct write access to our shared source code repository.

Mono is useful today to create a wide range of applications, but it is not yet a complete drop-in replacement to .NET. (For more details about the current efforts, please read Dennis Hayes' article in this issue of .NET Developer's Journal.)

As I often discover, different people on the Mono team contribute to the effort for different reasons. From the beginning, the Ximian team was interested in bringing better development tools to the Unix world, and the Microsoft .NET technology was the best match with our vision: component software, reusable software, increased productivity, raising of the programming level, and cross-language interoperation.

Other motivations to join the effort come from those who want to use Linux or Unix as a deployment system. Some people have existing non-Intel servers; others like the price features of Linux or the BSD operating system and would like to deploy applications on those systems for both clients and servers (the Linux client market is stronger in markets where desktop computers became affordable only recently).

Since Linux and Unix are relatively strong on the server market, it makes sense to bring the .NET technologies to them, and developers who in the past have been excited about .NET and have built .NET server applications want to bring their products to Unix. A few companies have announced that they will use Mono for distributing their products. At the time of this writing, OpenLink, Tipic, and Winfessor have done so. These companies contribute to the Mono effort with new code, improvements, and bug fixes.

Also, we foresee that many developers in the Windows world will be drawn to .NET as it vastly simplifies their problems. We would love these developers to be able to make their code cross-platform by adding Mono into the mix. This compatibility has also brought a fraction of the developer base. Today many .NET applications work out of the box on Mono. As long as you use only classes that have been implemented, you will be fine (we track those classes on our Web site, and you can check whether your particular class has been implemented or not. A tool that does this programatically would not only be possible, but certainly useful, and a great chance for anyone who wants to get involved to start with).

And there are also enthusiasts: people who love .NET, people who want to implement things on their own to learn, people who like to see a new little universe created, and people who like the community that has been built around Mono. These people are examples of who makes up the Mono community.

I want to stress this point, because more than a technological project, Mono is a people project; without the help of a very enthusiastic team and a fascinating community, Mono would not exist. Of course, the willingness of Microsoft to publish and standarize the core specifications plays a significant role, as well as the readily available documentation for most of the .NET components.

Mono-Specific Developments
Although the core of the project focuses on a reimplementation of the .NET Framework classes, various developers have used Mono to create their own class libraries both cross-platform and with a Unix focus.

The Gtk# team (pronounced GTK-sharp) has built bindings for most of the GTK and Gnome APIs for Unix and Windows. These bindings let people build GTK and GNOME applications, but they also take advantage of the .NET Framework to simplify deployment (we can use embedded resources, for example) or coding (like using attributes, events, and delegates to write code) ­ a truly welcome improvement to the Unix developer toolkit.

The Mono.Data team has not only produced plenty of database providers beyond those provided by the framework (which work on Unix and Windows), but has also produced a database multiplexer to simplify the development of cross-database applications.

Recently, a module for Apache has also been built: this module embeds the Mono ASP.NET runtime into Apache, which will ease the deployment of Mono-based Web applications for those using this server.

There are more examples, but I won't go into the details. Check the project Web site for further information on the OpenGL bindings, Vorbis bindings, guile/scheme bindings, and mPhoto. The Mono runtime also provides a number of features, such as profiling, memory usage profiling, and coverage analysis.

New Developments
We continue to work on stabilization and conformance with the .NET Framework, and we will be closely tracking the upcoming changes to the C# language as well as the generics extensions to the CLI to bring these new features to our platform.

A couple of major developments are currently under way: a managed/unmanaged debugger written in C# and a new just-in-time (JIT) compiler engine for Mono.

The debugger is unique for us because it allows the debugging of managed, unmanaged, and managed/unmanaged mixed applications. Theoretically the debugger should also be easy to port to more architectures and operating systems, as everything has been cleanly isolated.

Although the current JIT engine is sufficient, and has done a good job, we are interested in improving its performance. We had implemented some optimizations on it: constant folding, inlining (a bit limited), and some per-CPU optimizations. To implement the more agressive optimizations that people expect from compilers we needed to make many changes to our code. We did not want to complicate the existing JIT design, as it was not really designed as an optimizing compiler, so we chose to build a new one with performance in mind.

The new JIT engine has two levels of intermediate representation (and due to some optimization on this representation, it is faster at the regular optimization level than the current JIT). This new representation lets us perform different kinds of optimizations at both levels. A couple of optimizations have already been implemented with a pluggable architecture, but this new design was driven by the desire to make static-single-assign form optimizations.

The new JIT engine may be released by the time you read this.

Joining the Effort
Mono is not finished and can use more help at various levels. You can find the details on how to contribute at our site: www.go-mono.com/contributing.html.

Contributing to Mono spans pretty much all aspects of software design and implementation; it is not limited to writing new classes, fixing bugs, or doing performance and memory tuning. If you have time to volunteer, and you want to join a vibrant community, we would like to help you join the project.

The Mono mailing list ([email protected]) is a good place to get involved with the project, or if you prefer a more interactive approach, you can try the #mono chat room on the irc.gnome.org IRC server.

References

  • The Mono project: www.go-mono.com
  • Ximian: www.ximian.com
  • Gtk# project: http://gtk-sharp.sf.net
  • How to contribute: www.go-mono.com/contributing.html
  • More Stories By Miguel de Icaza

    Miguel de Icaza, co-founder and CTO of Ximian, is one of the foremost luminaries in the Linux development community and one of the world's most prominent advocates for Free Software. Before co-founding Ximian, Miguel was instrumental in the development of Linux for SPARC systems and the Midnight Commander file manager. Miguel is the founder and President of the GNOME Foundation. He was also the first recipient of the prestigious MIT Innovator of the Year award in 1999. Miguel has galvanized Ximian's efforts to make Linux accessible and available to the average computer user, and continues to reach out globally by working with international organizations such as eMexico to introduce affordable technology alternatives, like Linux, to other nations.

    Comments (0)

    Share your thoughts on this story.

    Add your comment
    You must be signed in to add a comment. Sign-in | Register

    In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.


    IoT & Smart Cities Stories
    Codete accelerates their clients growth through technological expertise and experience. Codite team works with organizations to meet the challenges that digitalization presents. Their clients include digital start-ups as well as established enterprises in the IT industry. To stay competitive in a highly innovative IT industry, strong R&D departments and bold spin-off initiatives is a must. Codete Data Science and Software Architects teams help corporate clients to stay up to date with the mod...
    Tapping into blockchain revolution early enough translates into a substantial business competitiveness advantage. Codete comprehensively develops custom, blockchain-based business solutions, founded on the most advanced cryptographic innovations, and striking a balance point between complexity of the technologies used in quickly-changing stack building, business impact, and cost-effectiveness. Codete researches and provides business consultancy in the field of single most thrilling innovative te...
    Darktrace is the world's leading AI company for cyber security. Created by mathematicians from the University of Cambridge, Darktrace's Enterprise Immune System is the first non-consumer application of machine learning to work at scale, across all network types, from physical, virtualized, and cloud, through to IoT and industrial control systems. Installed as a self-configuring cyber defense platform, Darktrace continuously learns what is ‘normal' for all devices and users, updating its understa...
    At CloudEXPO Silicon Valley, June 24-26, 2019, Digital Transformation (DX) is a major focus with expanded DevOpsSUMMIT and FinTechEXPO programs within the DXWorldEXPO agenda. Successful transformation requires a laser focus on being data-driven and on using all the tools available that enable transformation if they plan to survive over the long term. A total of 88% of Fortune 500 companies from a generation ago are now out of business. Only 12% still survive. Similar percentages are found throug...
    CloudEXPO has been the M&A capital for Cloud companies for more than a decade with memorable acquisition news stories which came out of CloudEXPO expo floor. DevOpsSUMMIT New York faculty member Greg Bledsoe shared his views on IBM's Red Hat acquisition live from NASDAQ floor. Acquisition news was announced during CloudEXPO New York which took place November 12-13, 2019 in New York City.
    OpsRamp is an enterprise IT operation platform provided by US-based OpsRamp, Inc. It provides SaaS services through support for increasingly complex cloud and hybrid computing environments from system operation to service management. The OpsRamp platform is a SaaS-based, multi-tenant solution that enables enterprise IT organizations and cloud service providers like JBS the flexibility and control they need to manage and monitor today's hybrid, multi-cloud infrastructure, applications, and wor...
    The Master of Science in Artificial Intelligence (MSAI) provides a comprehensive framework of theory and practice in the emerging field of AI. The program delivers the foundational knowledge needed to explore both key contextual areas and complex technical applications of AI systems. Curriculum incorporates elements of data science, robotics, and machine learning-enabling you to pursue a holistic and interdisciplinary course of study while preparing for a position in AI research, operations, ...
    Atmosera delivers modern cloud services that maximize the advantages of cloud-based infrastructures. Offering private, hybrid, and public cloud solutions, Atmosera works closely with customers to engineer, deploy, and operate cloud architectures with advanced services that deliver strategic business outcomes. Atmosera's expertise simplifies the process of cloud transformation and our 20+ years of experience managing complex IT environments provides our customers with the confidence and trust tha...
    With the introduction of IoT and Smart Living in every aspect of our lives, one question has become relevant: What are the security implications? To answer this, first we have to look and explore the security models of the technologies that IoT is founded upon. In his session at @ThingsExpo, Nevi Kaja, a Research Engineer at Ford Motor Company, discussed some of the security challenges of the IoT infrastructure and related how these aspects impact Smart Living. The material was delivered interac...
    Intel is an American multinational corporation and technology company headquartered in Santa Clara, California, in the Silicon Valley. It is the world's second largest and second highest valued semiconductor chip maker based on revenue after being overtaken by Samsung, and is the inventor of the x86 series of microprocessors, the processors found in most personal computers (PCs). Intel supplies processors for computer system manufacturers such as Apple, Lenovo, HP, and Dell. Intel also manufactu...