EiffelEnvision Editor and Eiffel for .NET

by Paul Bates (modified: 2010 Jan 28)

It has been a while since I've created a blog entry, there's actually been a lot going on in my blogging hiatus. From topics concerning EiffelEnvision, Eiffel for .NET, EiffelStudio and open source EiffelStudio projects.


So where to begin?

I guess EiffelEnvision and Eiffel for .NET, what's up and where is it. Over the past year we've been in talks about both of these products and let me assure you that they have not been forgotten. Work on EiffelEnvision was halted (note halted not stopped) earlier this year because of implementation limitation imposed by both Microsoft and Eiffel for .NET. EiffelEnvision for Visual Studio 2005 was to be a completely new release and was coming along well. The core packages were written from the ground up and used Eiffel for .NET, instead of the requisite C++, COM and ATL, using a then nascent Microsoft API for Visual Studio. The switch actually progressed Eiffel for .NET as complex usage of the language and .NET was required.

Using Eiffel for .NET to implement EiffelEnvision came with such great gains. Firstly, it's Eiffel so we get contracts and multiple inheritance. It's managed so memory resource management wasn't so much of a burden and finally EiffelEnvision could share libraries and frameworks written for EiffelStudio. One such library was the Eiffel parser. Previously we had to port changes from the Eiffel compiler, written in Eiffel, into C/C++ code which was a maintenance nightmare.

EiffelEnvision came quite far in development. The editor is fast, reliable and supports so many new features such as code snippets and code snippet functions, debugger auto expressions, intelligent partial parsing, excellent outlining, configuration options, smart indenting, debugger tracing and functional breakpoint setting, code validated breakpoint position, multiple breakpoints per line, brace matching that are smart and scoped (unlike C#) the list just goes on! And these features are actually in the editor right now, just waiting to be used. We managed to rewrite the editor that was in continually development for 3 years ,using C/C++, in less than 5 months using Eiffel for .NET, with more features! We also started rewriting the project system to be more like project systems you find in Visual Studio and fully supporting MsBuild. One star feature of the project system was that it was actually really file-based. You could add clusters and libraries like in EiffelStudio and previous EiffelEnvision release but for the project files itself, if it wasn't in the project it wasn't compiled. This held true even if there was an Eiffel source file on disk in the project directory, the root cluster of EiffelEnvision projects. The decision was made to make two products for distinct user's; those that were used to Visual Studio would be treated to a consistent Visual Studio experience, those that liked and used EiffelStudio would continue to use EiffelStudio. That's not to say we didn't support EiffelStudio users in EiffelEnvision, there were going to be options and tools that emulated some of EiffelStudio's core features and work-flow. Other exciting things were being planned and put in place, one exciting feature I began architecting was completion without compilation, a new way for integrating with design surfaces (Windows forms Designer and other designers used to generate code) and automatic code formatting.

Free Editor

So why am I bringing up EiffelEnvision? Well Peter's last post got me thinking, why not allow everyone to use the editor we have for Visual Studio 2005. It's functional, stable and is way better than any other version of the EiffelEnvision editors. So that's what I got the go ahead to do. The code needs to be cleaned up and partially functional features disabled and I need to build an installer (this is never as simple as you think), all in the little free time I have. I do not want it to get in the way of the things we have planned for EiffelStudio 6.1. I would like to release the code under GPL but it relies on some adapted Microsoft code (modification was due to Microsoft's myopic view that all developers use C# to extend Visual Studio.) A little know fact is that EiffelEnvision was the only language package to actually use the language to integrate into Visual Studio 2005. Eiffel for .NET was the only language that can say that!

I would actually like to see EiffelEnvision headed as a full open source project and license the compiler for commercial use. I swore that if EiffelEnvision ever got shelved I would continue work on it in my free time, and that still holds today. EiffelEnvision for Visual Studio 2005 really made working with .NET projects easy because that was what it was designed for. That said, EiffelStudio is now being treated some improvements which I am now working on. I'll be given teasers out in future blog entries (maybe later today.)

The Future

Before any more work can continue on EiffelEnvision Eiffel for .NET needs an overhaul. Once done work can continue in whatever form we decided, and I'm sure a lot of you out there will be happy with the end result. As for part of the next major Eiffel for .NET release, all I'm saying a think of consumer and think of Office Space and think of the printer. Mono is also key to the next iteration. As I said this is not a new revision we want it's a new Eiffel for .NET.

6.0 Is Out For Every Platform

For those that are not yet aware EiffelStudio 6.0 is now available on all platforms, with an updated version for Windows. The Windows update fixes some crucial issues regarding the installer and not being able to install EiffelStudio as well as a number of bugs that crept in before the release.