A recent post over at meta-douglasp hints at something that Microsoft appears to have in the works: Emacs.Net. For many UNIX and Linux folks, emacs is probably old hat. For the rest of us, here is a quick overview.
Emacs is an text editor that is very popular on UNIX and is often used to write software, configure systems and edit just about anything. Emacs is mainly used by technical people, and is easy to configure, extend and tweak if you are technically inclined. I haven’t used emacs much in the past decade, but it is a handy, light-weight editor that also scores high on the geek cred scale. As far as UNIX file editors go, emacs dates back to 1976 and has been developed in a fashion that retained it usefulness as it has been extended. To contrast with some other tools, emacs has endured the test of time and appears to keep on going. For more on Emacs, please check out the wiki.
Which brings us back to Microsoft and their premier development editor: Visual Studio (VS). I’ve been using Microsoft’s VS for the past decade and overall, each version has gotten bigger, slower, more unwieldy, buggier and less usable. That is a shame because Microsoft has been cramming tons of work into adding features galore. I think on paper, VS ships a great spec: There are all kinds of really neat looking features, functions and capabilities. But, over time, this editor has gotten worse as far as actual usability and productivity of the user.
My long running joke is: Visual Studio was designed by and for executives. Now, I don’t think executives use Visual Studio, or if they do it’s very few and very rarely. What I do mean is: MS executives drive production direction and approve the product. Then, at other companies, executive dictate their software will be developed with Visual Studio (VS). In truth, that’s pretty much how it happens. The people with the least amount of hands on technical knowledge (executives) often make technical calls such as this (sad but true). What’s really sad is the MS executives don’t really know what they are shipping (Visual Studio), and the other-company executives don’t really know what they buying.
A related item: Microsoft .NET. Years ago, when the internet was really starting to take off and executives were rubbing their wallets thinking “how can I cash-in on this internet craze?” Meanwhile, Microsoft executives were really starting to sweat how they were going to complete with Netscape and remain competitive in this new internet based world. The MS Windows team was worried about future prospects (i.e. who needs windows is everything is done in a browser), as was the MS Office team (i.e. complete with web apps), the MS Developer division (i.e. native applications), and pretty much anyone else who drank the cool aid, or was a quick follower of FUD (In all fairness, there really was a lot going on in the industry and at Microsoft at this time, but I’m trying to keep it high-level).
All this brings us to .NET, which Microsoft hoped would provide competition to Java (also an interpreted and web-tacular language.) .NET could also (theoretically) help out the office team if they wanted to market web-based office applications. And .NET could (theoretically) help the developer division remain competitive by developing a Cool.New.Thing! A bunch of languages (J#, VB.NET, etc) that all use the same run time (CLR) which could be made to run on different platforms (Cool! CRL is its own abstraction mechanism and runtime). Basically, a bunch of different executives (and teams) were jazzed about what .NET could do.
In the spirit of Dogfooding, the Microsoft Developer division developed a massive all-in-one developer tool to end all developer tools written in .NET. Initially, many people (or at least the executives) thought this was a grand idea. Now that this has been completed, I do have to say this tool is a 100 ton whale that cannot get out of its own way. (That’s just my opinion… and the opinion of many other C++ developers). Also, .NET really has become something of a boondoggle for Microsoft. Overall, it’s very functional and provides all kinds of cool capabilities. But…
.NET also brings some problems: it’s auto handling of garbage collection (like java) is really pretty good, but not nearly as good as custom developed allocation and deallocation written in C++. Also, .NET imposes a performance hit b/c the CLR is a complete runtime which… runs on top of the Windows runtime. But, the biggest problem with .NET is: its actually not being used as much as good old fashioned C++. And that’s a travesty. Specifically, MS spent many millions of dollar designing, developing and marketing a product (.NET) that people by and large don’t want. And MS has been spending years trying to push C++ developer, teams and products away from C++ (as builds on the bad decisions that created .NET, and continues to mitigate Microsoft FUD). Don’t get me wrong, there are a bunch of people that write applications for .NET, but when you look at industry statistics: there are more people, teams and companies writing applications is good old fashioned C++, than in .NET. Since it took a while (years and years) for Microsoft to realize this, they are now quickly trying to re-invest in their native C++ toolset. So now, Microsoft executives are saying something akin to: Hey, we were just kidding! C++ is a great language! You can use .NET or C++. Really, we love both!
This all brings us back to Microsoft’s rumored Emacs.Net. Since .NET really has a bunch of issues, and Visual Studio is written in .NET, and many C++ developers have gotten fed up with .NET… it’s time for a new tool: Emacs.NET. You may say: huh? It does seem a bit odd, but if I had to guess, I’d think this tool will be written natively (possibly, but probably not) and will have some interop with .NET but overall, this tool will be a clean slate design.. with the expressed purpose of: continuing to leverage Microsoft’s technologies (gotta include .NET so the executives sign off on it), while reconnecting with the core developer base (i.e. emacs endures, so lets make an emacs), and results in a new light-weight tool that can also be levered against Windows Server core, Powershell and by general technical folk.
But hey, these are just my best guesses because I really don’t know. And neither will Microsoft, nor the executives until all is said and done. Like I say: developing software is one massive feedback loop and you don’t really know where you are going, or how it will pan-out until the product ships.