Edit: I confused roslyn with the recently announced AOT compiler.
To use java as an example, this would be like open sourcing javac without open sourcing the JVM. (Just fyi, both javac and JVM are open source under the GPL license. :) [edit - Looks like large parts of .NET platform are being released]
Still, this is a move to be applauded. Microsoft has been easing itself into a more open source friendly company over time by putting more projects under an open license. Microsoft ASP.NET MVC is another good example. There is an incomplete list of open source projects originating from Microsoft here: http://www.microsoft.com/opensource/directory.aspx
[edit above in brackets]
You can view and download the whole .NET source here: http://referencesource.microsoft.com/
Folks, this is a very big deal for Microsoft. Who would have imagined this 10 years ago?
Here is an image that shows what they are putting into the community https://pbs.twimg.com/media/BkT9oBcCQAAHIAV.jpg:large
I think you wanted to say that the "change" was made only thanks to the exit of Ballmer, but I think that's an exaggeration.
I think it'd probably be more accurate to say that these particular changes are symptoms of the same corporate change of direction that the change of CEO was, not that the change of CEO specifically resulted in these releases.
The open sourcing of Roslyn can only mean good things for Xamarin.
How about in 5 months? Don't get me wrong I'm not falling on either side of this argument, but I think it seems at least slightly plausible that this process could have been initiated or at least accelerated by the new CEO.
No WPF?
Result: we now have to ship a .reg file to our clients before we can launch our shit via ClickOnce. That's only 2000 people we now have to hand hold through this.....
There is no straightforward migration path from vdproj to WiX, either. It's a case of re-writing all of your deployment code (which has already been tested/tweaked/hacked on for years) for no upfront benefit.
http://www.add-in-express.com/vdproj-wix-converter/index.php
WinJS is the other.
There are no less than 3 similar but different and incompatible UI libraries that can be instantiated by XAML: WPF, Silverlight (WPF/e), and Windows store/phone (WinRT). WPF is dead like WinForms but the only solution for normal windows apps unless somethings changed with WinRT to make non full screen apps with.
If you have ever tried to develop across more than one of these with a shared code base you will know how frustratingly similar yet how incompatible and different they are. They are not supersets or subsets they are forks.
So yeah, when I said WPF, I meant XAML/WinRT. My main desktop use is supporting WinForms legacy apps so I don't keep up with the new GUI frameworks.
I'm looking to move to direct2d eventually. I work at a low enough level that this wouldn't be too bad for me.
Is everything just wrapped around Win32 like MFC was etc.?
I don't agree with RMS many times but in this one way he was 100% wrong when he targeted mono.
I really like microsoft products and I use them every day, however the business model is too lock people in to their ecosystem so that you have to purchase licenses for their products.
Mono clearly undermines that b/c it allows you to "easily" jump ship to a free platform.
Unless I'm somehow completely misunderstanding their business model - killing Mono just makes business sense.
It's all part of the same thinking. RMS et al think - not unreasonably - think that this is Microsoft's business plan, so they really don't want the open source community investing their time on a platform they think will get clamped down to work only on a proprietary system.
I think what RedHat is doing is nice, but it's really not on the same scale to what Microsoft does; not to mention that they essentially have no monopoly/lockin - b/c anyone can start doing what they do (ie. start providing support for CentOS).
The synergy of microsoft services is closely tied to their ability to lock in developers and customers. Devs like C#, they write code to run on windows, windows gets more OS-exclusive software, more people buy Windows and Office, etc. etc.
Mono means people can run their C# work on free software, which mean they stop looking any better more appealing than the competition
So look at what they're actually doing, right now: they're open-sourcing key parts of the .NET platform, and they're partnering with Xamarin to support even more open-source elements that makes the .NET platform appealing to new kinds of developers. So there's a low barrier to entry to getting started with .NET development and getting into that ecosystem. Once you're on the hook, as you grow you'll run into more and more things Microsoft can sell you. Microsoft can sell you their line of Visual Studio development tools, which provide the best .NET development experience. They can sell you Azure hosting for your .NET apps, which will likely offer the best .NET hosting possible (and even if you're not on .NET or are mixed between .NET and something else, Azure is getting very competitive with Amazon and Google). And if you're writing phone and tablet apps for iOS/Android using Xamarin, Microsoft is right there for you to expand your reach by porting to Windows Universal, where you can get your app on Windows 8 tablets and PC, Windows 8.1 phones and the Xbox One. That's Microsoft's vision of the future.
And yes, if you're running ASP.NET on Mono on Debian via AWS, to support your iOS app developed in Xamarin using Xamarin's IDE, Microsoft doesn't really benefit there. But that's also the case if you're running Node.js or PHP on AWS to connect to an iOS app written in ObjectiveC. And people in the former group are still much better PROSPECTIVE customers for future Microsoft endeavors than people in the latter group. (Not that Microsoft doesn't want to sell the latter group stuff too -- look at Azure.)
They're looking longer term in the face of declining Windows/PC sales, and stagnant phone/tablet sales. It makes a lot of sense to improve/expand the platforms that their tools can target. They do have some really nice tooling, and imho Azure is a bit easier to use for a lot of things compared to alternatives.
It's not perfect, but they definitely have a strategy in place with the future in mind.
* I work for MSFT, on the Cloud.
This current move from MS suggests that they may not be being evil in this case, and that's great, but it doesn't make people with concerns about MS FUD-merchants at all. In fact, that's kinda insulting - most people accept that past behaviour is a good predictor of future behaviour so being cautious and sceptical about MS was not an unreasonable stance.
What I hear privately from the people I meet who work on the .Net and Visual Studio side of things is consistent with what the company is now saying publicly.
Basically: "We luvvv Mono" :-)
You know, I tried that. I've tried to run about 3 .NET programs, written for Windows, under Mono on Linux. They all have had some library that was never part of the "open spec" that, therefore, ruined their chances of running on anything but Windows. The experience(s) put a nice, neat pin on the board as to what "open" meant when it came to Mono. It was a lot of double speak. And it's exactly this long-suffering characteristic about Microsoft that makes people like me take these current announcements with a large grain of salt.
https://www.fsf.org/news/dont-depend-on-mono
So, five years later Microsoft makes another step in the right direction, and you think he's wrong because he didn't want to risk building the open source environment around something that could go away with a simple threat.
Btw, doesn't Microsoft make more money from Android patents than Microsoft phones? Microsoft does exercise their patents.
Edit: why the downvotes? If I started a social movement and everyone associated me with a watered-down alternative that tries to silence my views, I would be a little miffed.
Until they really make free enough licenses not only for the core stuff but for the crucial libraries nobody can expect to be off-the-hook of the traditional lock-in.
And even if they do all that, it doesn't mean anybody was "wrong" only that the conditions are changing and allow reconsideration.
C# 2.0 is nearly a decade old now - and mono certainly hasn't limited itself to it. Absolutely none of C# 3, 3.5, 4.0, 4.5 was ever released as an open specification or as open source software until now - yet these are the versions mono and everyone was using.
So the "MONO FUD" was never actually FUD, it was legitimate concerns about the lack of openness of the technology. Those are no longer concerns (about this release version) - and we can be glad that RMS et al were "wrong" about this one (When they were in fact, absolutely right at the time.)
Not depending on them for anything is, has been, and will be a fine strategy.
But my guess would be that Ballmer stepping down was sort of symbolic in this regard. With a new CEO it looks more like a "new Microsoft" doing all these things.
[1] http://www.apple.com/pr/library/2000/04/05Apple-Releases-Darwin-1-0-Open-Source.html [2] http://opensource.apple.com/
How do you reckon that?
And the iPad, which is kicking the hell out of Android tablets (to my consternation, because I'm primarily an Android user and their tablets are terrible).
And the Macbook Pro, which is making pretty major inroads at leading-edge companies. A buddy of mine is working on *nix software at IBM and they asked if he wanted a Thinkpad or an MBP; that blew my mind.
They don't do big iron, but they move a lot of product and very little of it is faddish. They Get It, or have Gotten It historically, and a lot of people respond well to that. They might at some point no longer Get It, but until then, saying that they only have the iPhone going for them is wishcasting.
Apple's business is not one that has to own a market to make gobsmacking amounts of money. As such I doubt they see being outsold by Chromebooks as being a serious problem; they've been being outsold in the laptop market forever and are still making yachtloads of cash.
And as to sustainable business models - the iTunes Ecosystem alone is a large as half of Google's entire business and is growing faster.
Most Chromebooks are glorified phone hardware. Even the one with the whizzbang screen has lousy soldered-on local storage, so it fails as a microcomputer. It essentially is a terminal with a fantastic screen. I certainly wouldn't attempt to use one to develop on (and I mean develop on, not RDP/VNC/SSH to a box elsewhere). Could I write C++ on it for multiple OSes thanks to virtualization on a Chromebook? I know my needs are niche but I don't think Chromebooks compete with MacBooks, even if they look similar-ish and one has outsold the other. Out of interest, have Kindles outsold MacBooks? Would that be the death-knell for MacBooks? Really is comparing Apples and Oranges I think.
Do you supplement the internal storage with external? Is it a hassle? My Windows VMs are all 50GB+ so having tiny internal SSD storage is crippling.
Except, you know, IBM doesn't have anything to do with Thinkpad anymore, and hasn't for years.
Thinkpads are now Lenovo, not IBM. And MacBooks do run official Unix, so it'd make sense. Plus, he can look cool in a coffee shop :-)
(I love my MacBook, but don't use it coffee shops, as an aside.) Your point about iPads is very true. My wife has an iPad and it is joy to use. I have a Motorola Xoom that I really do love using and find very very useful but the standards aren't the same. I know the Xoom is old (some would say ancient) and is easy to develop for but the iPad truly does rule the Tablet waves.
Apple isn't dominating any market.
You're obviously going by the number of units sold, not the profit share. And you're not technically wrong. But isn't that a little bit like measuring the number of swings a baseball player takes instead of the number of times he gets a hit?In the PC market Apple is absolutely destroying all comers: 45% of the profit share in 2012. HP, Lenovo, Dell, Acer and Asus combine for the remaining 55%. (I couldn't find numbers for 2013) http://www.forbes.com/sites/timworstall/2013/04/18/apples-mac-took-45-of-the-profits-in-the-pc-market/
They're dominating similarly in the mobile market. http://www.businessinsider.com/apple-smartphone-profit-share-2014-2
I mean, if you want to say their products are crap - that's subjective and we can't argue that.
But if you don't think they're doing incredibly well in their key markets, that's diametrically opposed to the truth.
[1] http://www.lambocars.com/lambonews/lamborghini_among_most_profitable_car_brands.html
they both catch fire!
I had a 2010 MBP go up in flames and an immediate colleague's one screen went phut and melted. Lambos do this too (google images)
Lambo is profitable, evidently, but they have an absolutely miniscule share of the auto industry's profits.
Profits, profit margins, and profit share are related but really distinct things. I hope nobody lets you run a business!
If you must, at least attempt to include accumulated value as part of the equation - so that "fake" costs that are actually investments appear as increases in company valuation. Of course, this still looks good for apple :-), but given the volatility of share prices and what that says about how easy it is to determine "value" it should be clear that the one thing these comparisons cant' be is clear.
Apple were doing well by profit share in the PC market in the early 1990s when they were as now a bigger company than MS. But because there were so many more PCs out there software developers and hardware manufacturers targeted MS not Apple and then when Apple machines were poor in the mid to late 1990s Apple almost disappeared.
If Android is, say, 80%+ of the market at some point and it's no longer worth making things for iOS Apple and Apple have a generation or two of stuff that isn't that good Apple could be in the same position as they were in the late 1990s and it's unlikely Jobs will be back again to save them.
The only thing Apple wins is the mindshare of relatively
wealthy (American) people and an enormous amount of
hedge and institutional fund investment.
So they're only dominating in terms of profit share in wealthy countries. And also in most if not all customer satisfaction and retention metrics. And also killing it at retail.But other than that, not dominating at all.
I hope I can achieve this level of non-domination in my lifetime. Seems pretty cushy.
The thing you miss is that lot of people buy shit if it's cheap.
But really.. Apple is like that competitor that start miles ahead of any competitor, but because of some draconian moves and misteps, they end loosing all of their advantages.. it happen with Microsoft.. now its happening again with Google
Apple built on oss foundations, and most of what they've open sourced is simply a result of them not closing forks of once open projects, which is very valuable, but nevertheless less impressive that releasing important bits of their own making.
There's also things like the streaming server which as far as I can tell was strictly an Apple project. I think libdispatch was also strictly an Apple project.
The fact that the core OS is still open source doesn't actually mean much when there's a huge layer of proprietary code on top, does it?
As for the Apple Lossless Codec, it open-sourced a failure. It would have been much better for everyone if Apple had just supported FLAC.
Visual Studio and their MVC framework continue to impress me (I mostly work in Ruby today, but have to maintain some .NET stuff) and MS takes inspiration from successful open-source tools and frameworks where needed. Many of their recent advancements over the last 3-4 years have clearly been the work of engineers who enjoy and value the best of the open source world.
I'm not trying to tell you that Microsoft is suddenly our warm, fuzzy friend. As even Scott Hanselman would gladly admit, they're ultimately trying to sell you software licenses or Azure services.
But it seems to me that they're using open source the right way in order to achieve that goal, as opposed to the bad old "embrace and extend / embrace and extinguish" days at Microsoft.
Whether or not Microsoft has earned another shot with us or not is definitely up for debate, and with all the cool shit happening in the open source world it's probably even a moot point to an extent.
But they're definitely doing more than cargo-culting in Redmond these days.
Non-copyleft licenses can easily align with the "embrace, extend, extinguish" strategy. The value of .NET for most developers is closely associated with Visual Studio. They can make the next version closed source and have Visual Studio only accept that one and we are back to the same old Microsoft. Sure, you'd still have the previous open source version, but who cares when most people will probably just move on to the next.
What? I would think if anything giving everyone else a crippled license while retaining copyright etc yourself that would be an even bigger setup for a EEE.
Remember, MS can do w h a t e v e r they want with that code anyway it is not lke they'd be bound by a copyleft on their own code.
(Unless they also started accepting patches without copyright assignment I guess.)
A non-copyleft license effectively means that Microsoft, should they try EEE, has to compete not only with free as in beer and free as in freedom, they also have to compete with all the closed source competition they are subsidizing in this effort.
If you believe that more competition is good, the less restrictions on the code from a big vendor, the better.
I think your view is pretty naive. They develop the platform and own the IDE that's synonymous with it. They can keep any other compiler off the IDE if they want that, you would be competing with them at their house, which is doomed to fail.
With copyleft without assignment at least any later version would effectively remain free for all, whether Microsoft wants it or not. You don't have to believe and hope, it's just the way it is.
Did you take a quick look at his comment history before posting this statement?
You can think what you will about my opinion but it is based on a decade-long career around both BSD-licensed and GPL-licensed projects.
> Copyleft licenses are more conductive to dual licensing because they give you no other choice if you want to sell a closed source premium version.
And the licensor can always decline to sell the license to a competitor though this might be problematic for a big company. The point is that the GPL gives a company control over proprietary spinoffs, while the BSD license does not.
> They can keep any other compiler off the IDE if they want that, you would be competing with them at their house, which is doomed to fail.
Frankly their choice of licensing makes no difference in what sorts of products they can ship.
> With copyleft without assignment at least any later version would effectively remain free for all, whether Microsoft wants it or not.
But the point is that you end up with less competition under a copyleft license because fewer forms of competition are in line with the license. If your fear is against Microsoft as competitor, giving up more rights is better than giving up fewer.
You say you think my view is naive, so I have to ask: how does one both release code under the Apache2 license, a license which allows anyone to change the license and add restrictions when distributing it provided that the license restrictions in that license are met, and adopt an embrace-extend-extinguish strategy. The first two might work ok because one could sell additional proprietary features just like anyone else, but the final one doesn't work because you are competing against yourself if you do that.
I don't understand what was so upsetting about my previous comment thatgot so many downvotes. Microsoft has a history of being hostile to FOSS. I will agree that they have changed their attitude when they make a serious effort to assure us that there aren't potential traps in this move. Otherwise I'll say thanks but no thanks.
Didn't downvote but I think the ones who did did so because they found your comment misleading. I happen to agree with them but chose to explain the reasoning behind it instead of downvoting.
Read einhverfr's comment again, espescially the "the less restrictions on the code f r o m a big vendor, the better.".
See, some of us has had to work within and around various funny and not-so-funny licenses for years. Both commercial but open source as well..
For me copyleft without assignment is the safer choice, the others depend on future goodwill or a view of the market self-regulating which I don't see happening with such a big gorilla. After the clarification about assignment, I don't see how it's misleading or wrong in any way. If copyleft licenses can be abused in certain situations it doesn't mean non-copyleft ones can't or are the better option here.
I'm interested but worried about the long term viability of this free compiler. I don't want to depend on Microsoft getting the value of FOSS or not. They can give guarantees today that even if they change their mind tomorrow they can't go back in this decision.
I know copyleft licenses can be a pain and that they have problems on their own. I use GPL and LGPL software daily, so I know it. But those issues are orthogonal to the one I'm talking about here (the guaranteed free access to future versions to the community).
And sorry but unless we are talking about another software giant, there's simply no way Microsoft could feel threatened about a third party version of the compiler which works on their framework which is used by their IDE on their OS. They either don't mind what you are doing, will replicate it easily or if everything else fails will keep you away from their framework or IDE.
But I'll shut up as my opinions are continously downvoted by some who can't be bothered to explain even why. I saw some perfectly reasonable comments by einhverfr downvoted too, so it's not just me. I feel HN is becoming toxic. Thanks anyway for the response.
But I do indeed think this is better than not having happened.
I wouldn't place bets on any strategy that relied on Microsoft not closing the doors again at some point in the future, on future versions of their development stack.
Like you said, though, this is better than not having happened.
MS doesn't really make money off C# or .Net directly, they make money off the windows licenses you need to run the resulting code.
Open C#/.Net = stronger, longer lasting community / free improvements = more users = more licenses.
It also has other side effects like fostering [more] open source frameworks/plugins for their platform, which again, strengthens their position.
There is this quote:
Microsoft also today announced that Visual Studio 2013 has sold over 3.7 million copies since its release less than five months ago. That makes it the fastest-selling release of Visual Studio to date.
Based on those numbers and the fact that Visual Studio prices range from about $1,000.00 for VS Professional up to $13,000.00 for VS Ultimate, I'd say they make quite a bit of money of C#, .Net (and of course C++ as well).
http://channel9.msdn.com/Forums/Coffeehouse/The-99-VS2012-Pro-VS2013-Pro-offer-is-available-
My guess is the actual revenue figures are probably in the $1B to $2B (B = billion) range, which isn't too bad for a product that I'm sure Microsoft doesn't consider one of their big money makers and a product line that I'm sure they also subsidise with income from sales of their other products.
I too suspect Microsoft looks at VS as an essential, break even product, but with sales numbers like that I can't believe they aren't also making a nice little profit from VS.
VS2012 was shockingly bad. VS2010 users who dodged it were now 2 releases behind.
VS2010 does keep me from using C++11 features, but that isn't a massive problem.
Like I said they dont make money off the language or the framework directly it being open source will certainly not hinder or hurt their vs sales. It will most likely increase them.
Any examples? Besides "bundling IE with the OS and pressuring some OEM vendors back in the nineties"?
But Microsoft wanted to remove the open web, in favour of all their proprietary services, such as Active-X. Places like South Korea foolishly followed the MS paradigm, and they are suffering for it now. Microsoft wanted to control everything, and kill Linux and over open source projects by spreading FUD.
Refers to this, if anyone was not aware: http://en.wikipedia.org/wiki/Halloween_Documents
Continue here if you feel extraordinarily ambitious: http://www.groklaw.net/staticpages/index.php?page=2007021720190018 (Comes vs. Microsoft)
Seriously though, you have to have an initial browser to be able to get the browser you want. Of course a company will make that initial browser the one they make themselves. I've never understood the outrage over this.
Not certain if Ubuntu has a browser built in, but I would say that in this day and age, if GTK+ doesn't have any native components for rendering HTML then that would really stand out. It's considered an essential feature on every other platform's GUI toolkit. Just try removing WebKit from Android or an Apple OS, or pulling Gecko out of a Firefox phone.
The last exhibit would be Microsoft scrapping their plans to ship a version of Windows 7 that didn't include IE. (Though I imagine the rendering engine would still be needed - gotta display help files somehow, after all.) Turns out manufacturers didn't want to carry it, because nobody wants a computer that ships without a web browser anyway.
Requiring IE to download Windows Update is never acceptable. Everybody likes to hate Windows Vista but here is one thing Microsoft got right in Vista (and beyond).
I don't blame them for bundling IE in Windows, not bundling a browser would be foolish and you can say that Microsoft bundling IExplorer in Windows is what made the web so ubiquitous - I blame them for (1) not making IE cross-platform, which meant that alternatives like, Mac OS, Linux, OS/2 suffered for years because the web was optimized for IE - actually IExplorer was released for Mac OS but it wasn't the same, which made the problem worse as it stopped alternatives for awhile, (2) promoting Windows-only technologies like ActiveX, still in use by many online government services in many countries and (3) after they crushed Netscape with IExplorer 5, which was really good technically speaking, they completely halted the development of IExplorer and of the web in general. IExplorer 6 was a cosmetic release, after which the team was dissolved, many of the members ending up working on Silverlight and other such bullshit. Not mentioning web standards here because the web standards were whatever IExplorer was doing, 10 years ago.
In so far as forgiveness for mistakes that happened 10 years ago - dude, many of us don't have a short memory and many of us don't forgive so easily, not when we aren't seeing signs that a company changed. I'm happy for these recent announcements - it seems that there is interest amongst the upper management to change things, now that Ballmer is gone. And Roslyn (with F# before it) - are the first projects of any significance that they are open-sourcing and F# is finally accepting contributions from third-parties.
But lo and behold - Microsoft is choking Android with patents infringement threats, because obviously, when you can't innovate, you can always litigate, especially when you have a war chest that was built starting in the early eighties. I don't hate patent trolls as much as I hate big companies that are becoming obsolete and with stuffed legal departments that sit on their asses all day thinking of how to "monetize" their bullshit IP, that was built on top of prior art in a time when software patents weren't the norm mind you.
So I'll forgive Microsoft the day they stop threatening and litigating and strong-arm their way into new markets. And don't think that I'm not seeing what Google and Apple are doing. Neither of them resemble the companies I fell in love with years ago. And they should pay attention to Microsoft, as public trust once lost is very hard to regain.
This year's technical excellence can be next year's pain in the ass, as seen with IExplorer. And I don't understand why they haven't open-sourced IExplorer yet.
Safari has always been mostly OK on the Mac (although I tend to use Chromium instead) but on the iPad it crashes a lot for me.
It always makes me laugh the shouts of "NOO!!!" and general disbelief at the Mac conference when IE was announced. The sky was falling. It fell and became glossy and shiny and Apple lives.
2. SCO versus Novell : On March 4, 2004, a leaked SCO internal e-mail detailed how Microsoft had raised up to $106 million via the BayStar referral and other means.[60] Blake Stowell of SCO confirmed the memo was real.[61] BayStar claimed the deal was suggested by Microsoft, but that no money for it came directly from them.[62] In addition to the Baystar involvement, Microsoft paid SCO $6M (USD) in May 2003 for a license to "Unix and Unix-related patents", despite the lack of Unix-related patents owned by SCO.[63] This deal was widely seen in the press as a boost to SCO's finances which would help SCO with its lawsuit against IBM.[64][65] [http://en.wikipedia.org/wiki/SCO%E2%80%93Linux_controversies]
3. Patent troll : [http://gigaom.com/2014/01/21/cable-industry-sues-apple-backed-patent-troll-over-illegal-conspiracy/]
For one, this wikipedia page is incorrect (shocker, I know). The "quirks" mode has little to do with "proprietary extensions" in IE, and more with stuff like incompatibilities due to MSs early adoption of standard syntax that later changed.
Second, all browser vendors have introduced "proprietary extensions". Heck, Javascript itself was a proprietary Netscape extensions, as were tons of other stuff we take for granted now. Oh, and this AJAX thing? It started as a proprietary IE extension. Not to mention the Canvas and CSS animations (which started as proprietary Safari extensions).
2. Seems legit (if another example of "ancient history", that didn't even matter in the end).
3. The consortium that had those patents seems to include all major players (even Apple, Blackberry, Sony et co). So not really singling out MS in this.
You mean things like XMLHTTPRequest?
How about bankrolling SCO's lawsuit?
How about all of the patent shakedowns (Linux, Android, Rockstar, ...)? And their new pro-software-patent advocacy group?
And that's just off the top of my head.
https://en.wikipedia.org/wiki/Windows_refund
As well as constant attempts to subvert emerging open standards, sabotaging patent reform, patent protection racket and etc. and etc.
"Judge Thomas Penfield Jackson issued his findings of fact on November 5, 1999, which stated that Microsoft's dominance of the x86-based personal computer operating systems market constituted a monopoly, and that Microsoft had taken actions to crush threats to that monopoly, including Apple, Java, Netscape, Lotus Notes, RealNetworks, Linux, and others." [https://en.wikipedia.org/wiki/United_States_v._Microsoft]
There've been plenty of others since, most notably related to being pro-software-patents and using them to shake down Android OEMs, making threats and creating FUD about Linux, and using exclusive contracts and their leverage on OEMs to ensure that Linux on Netbooks failed (and were hobbled with artificial specification limits, etc.) and that ARM-based notebooks (running Linux) were dropped by vendors like Pegatron and Qualcom despite being highly popular when debuted at Computex... http://www.trustedreviews.com/news/ARM-Powered-Pegatron-Netbook-Showcased or http://liliputing.com/2009/06/pegatrons-arm-based-netbook-at-computex-video.html
Personally, I've despised Microsoft since I lived in Seattle (doing research in the building next to the Mary Gates wing of the UW Hospital) prior to moving to New Zealand.
I know a lot of people who went to work for MS after the .com crash in the 2000's. All of them went in with the attitude that MS needed to get religion on standards and open source. Seems to me that some of this is paying dividends now.
They have a bad track-record, but not in terms of "this team" (known as Devdiv). They might have gotten all uppity about IE, Windows or what-have-you - but the .Net team had a relatively quick epiphany about open source. Look at Mono.
Java is always touted as a "more open" platform, Microsoft-haters have no issue spewing falsity that the Microsoft encumbrance is a big risk - however, so far as the framework track-record goes, Microsoft has a "community promise", an ECMA spec and has given Mono unit tests for Moonlight; Sun/Oracle has a track record of aggressively pursuing copyright (the recent spat with Google/AOSP).
I'm not saying that Java sucks, or that people shouldn't use it. I'm just saying that a lot of people need to have a hard look at how much time they spend trying to mud the name of a company trying to make a turn. These opinions are antique.
It may change in the future given new governance in those corporates (just as the e.g. Java, NodeJS situation may change), but as of now and as far as .Net FX goes: Microsoft is likely one of the best living examples of how things should be done.
I don't like Microsoft but Visual Studio is the only IDE I've ever tried that is substantially better than gedit/jedit. The auto-completion (intellisense) is just delightful to use.
(yes, I know about ReSharper - but that's just lipstick on a pig)
But VS auto-complete was a breath of fresh air afterwards.
I appreciate Eclipse's openness (and I tend to work with open source languages), but I must admit that purely examining the quality of the tool, Visual Studio is leagues ahead.
MP4 hotlink: http://media.ch9.ms/ch9/793e/d1b6ebda-d31b-413e-983e-1c698a8e793e/visualstudioonlineazurepart1_high.mp4
But, you can easily add it back if you want to use a program that uses it (i.e. Gnome Do)
Which is exactly what you can now create using the Roslyn technology that is now open sourced. Add these languages and they will get all the fancy support that Visual Studio provides, like (remote) debugging and code completion.
There are a lot of people at Microsoft who really do understand the value of open source. When I worked there ten years ago, there were plenty who did. When I wrote interop papers as an outside consultant in 2007, I worked with a unit that did.
But Microsoft also has a bunch of real problems that make it hard for them to realize this value, and so their options in going into it are somewhat limited. They can't pivot and become a services company because their whole Microsoft Partner network would be turned upside down. So they enter services in some key areas where their partners can't. It's a very delicate process, and it means for many on the administration side, the value of open source software for Microsoft is not as high as it would be for some other firms.
Nonetheless this is huge. Open sourcing the VB.net/C# compiler effectively means the possibility of an Linux port, which means that .net has the possibility to become write once, run anywhere even if the whole class libraries are not open sourced yet. This is a gamble for Microsoft because it reduces the barriers to moving from Windows to other platforms (Linux, OSX, BSD, etc).
I'm hoping that the tooling and integration gets a lot better in *nix, but nod sure how the Mono license (MIT iirc) and this new C# license (Apache) will jive together.
Personally, most of my new dev for the past couple years has been in node.js (which has its' own niceties and quirks).
The MIT license is a lot more permissive than the Apache license. However I see no reason that you can't have different components under each license which work together harmoniously. If nothing else, the MIT license can be easily changed without consulting other contributors because of the sublicensing grant.
They renamed it from Windows Azure to Microsoft Azure to remove the windows connotaiton - specifically mentioning that 15% of all Azure deployments are Linux OS. So I would say that this is where they see the future, although there are still some very byzantine sales processes to go through to buy enterprise azure, because of the existence of the partner network. In that sense, they're almost like the car manufacturers forcing you to buy through a dealer for their direct-to-consumer products.
I mostly feel sympathetic to the engineers working there. It's no fun living under an embarassing dictator.
I once saw a presentation of the Visual Studio lead in Belgium, where he claimed that there were over 1200 people involved in the Visual Studio project.
If that's true, i don't think there is any IDE that can top that number and it explains why Visual Studio is the best tool for (almost any) job.
People should realize that Visual Studio is not solely C#, it's NodeJS, PHP, Mono, Python and so much more in one environment.
The release of Darwin isn't a massive thing I don't think.
I would not be surprised if they get worse and worse over time in giving back to LLVM.
In short, Apple publishes free software, generally because they either (1) have to, due to GPL, or (2) feel the gain from the project is bigger than the cost of having to maintain a separate branch, so it makes perfect business sense.
(I am not criticizing that Apple has published free software and that is a good thing in general, regardless of the intent, but to say that they don't have their business interests in mind at all times and they fundamentally care about free software more than Microsoft is simply not true.)
---
[1]: http://www.phoronix.com/scan.php?page=news_item&px=MTY0NzE
[2]: In our own experience developing techniques to uncover more than a hundred bugs in production GCC and LLVM (http://mehrdadafshari.com/emi/paper.pdf), we found GCC folks much more responsive to bug reports than Clang/LLVM folks, of which I draw the conclusion that the project is relatively under-resourced, at least in parts that are less relevant to Apple Darwin x86/64/arm backend.
How is that different from any other company? Don't companies release free software when a) they are forced to, or b) they feel they have something to gain?
Remember that time (well within the iOS era) that Apple claimed that FaceTime would be an open standard for interoperability?
[0] https://en.wikipedia.org/wiki/Embrace,_extend_and_extinguish
well, Microsoft used to say that open source software was anti-american, cancer, communist, anti-competitive, etc... yup I think they changed a bit
With the code released, can you:
- Run a ASP.Net web server?
- Run a classic C# .Net project better than with Mono?
Competition is great for everybody and Microsoft is making all the right moves!
But not much behind ASP.net.
http://www.techempower.com/benchmarks/#section=data-r8&hw=i7&test=json&l=35u&f=zijzsv-yelngf-yykq67
And quite a bit ahead of Sinatra
http://www.techempower.com/benchmarks/#section=data-r8&hw=i7&test=json&l=sg2&f=zijzsv-vz77cv-yykq65
Then again, so's Perl. The joys of implementation differences.
I find Nancy a lot easier to develop with than ASP.net. You do pay for the expressiveness however.
At work I'm deploying a Nancy based project to parse/process documents into structured data using a 3rd party vendor's SOAP service. There were some unpleasant compatibility issues with the SOAP service and our Perl server's SOAP client and zero logging so I took the service's source code (so glad the Vendor provided it) and replaced the WebService portion of it with a thin Nancy controller to route the calls and return JSON. Since most of the processing time is spent chewing on the files Nancy's overhead isn't an issue and Nancy made it dead simple to code.
P.S. We're the Visual Basic compiler too :)
Interestingly, no -- but neither can the native C# compiler (that's what we call the old C# compiler that everyone's using in VS right now)!
Why? The C# compiler is bootstrapped, so we actually compile the compiler with the compiler. It just so happens that a while ago we felt we needed a feature so badly for the C# compiler that we introduced it into the C# language (exception filters) and started using it in the compiler immediately. So in order to compile the compiler, you need a C# compiler that supports exception filters, which right now is just the Roslyn C# compiler. Honestly, the feature (and some other small changes we've made) aren't that complicated, so they could be backported to other compilers, but I don't know why you would want to do that.
A few years ago I was on a small team working on a .NET compiler and runtime -- it compiled MSIL into native code targeting x86 and PowerPC. I remember when working on the part of the compiler that built the exception handling routines running into exception filters and wondering what they were for. We were largely targeting C# as a development environment at the time but ended up implementing them in case anyone wanted to use VB.NET. Funny to see that they're now making their way back into C#, even if it's just in the compiler :)
This isn't just useful for the compiler, but we felt it was necessary for us to make the most reliable, agile product.
Then they wrote the second C# compiler in C#, and used the first compiler to compile the second compiler. Voila!
This source release is so cool!
We only stopped bootstrapping using the native compiler about, oh, 6 months ago, since that was when we decided to take a dependency on new language features. The next VS will be the first VS where Roslyn is the default C# compiler.
Bootstrapping a compiler from nothing is harder and involves a lot of incremental steps. http://en.wikipedia.org/wiki/Bootstrapping_(compilers)
http://c2.com/cgi/wiki?StructureAndInterpretationOfComputerPrograms
And tends to happen to other languages... you just have to bootstrap the first compiler.
Some other interesting contemporary examples:
I think as we speak Go is working on its plan to switch from using a compiler written in Go[2].
Rust[3] has kind of a hybrid approach where the front-end of the compiler is written in rust, but generates llvm bytecode which is then compiled the rest of the way by llvm itself. It takes three "stages" for them to do a full compile, first a binary "snapshot" compiler is downloaded and used to compile the compiler (stage 0), then that generated compiler is used to compile the compiler again (stage 1), and then that generated compiler is used to compile the compiler again (stage 2). Stage 2 is actually just a test - its output should be identical to that of stage 1, and if it isn't, something went wrong.
There is a classic lecture from Ken Thompson[4] that I think is really illuminating on how this stuff works, if you're unfamiliar with it.
It's really fascinating stuff!
[1]: http://homepage.ntlworld.com/edmund.grimley-evans/bcompiler.html [2]: https://docs.google.com/document/d/1P3BLR31VA8cvLJLfMibSuTdwTuF7WWLux71CYD0eeD8/preview [3]: http://www.rust-lang.org/ [4]: http://cm.bell-labs.com/who/ken/trust.html
If you already have a compiler in the language you're compiling, you can update the compiler with new features by the following process, called "bootstrapping". This process is used in gcc for example:
1. Use the old binary version to compile the new source version.
2. Use the binary produced in step 1 to compile the new source version.
3. Use the binary provided in step 2 to compile the new source version.
The results of stages 2 and 3 should be the same (assuming the old and new compilers assign the same semantics to the compiler source code and don't have non-determinism, e.g. using wall-clock time to determine when to stop searching for optimizations).
The bootstrap process can't be used on the first compiler for a brand-new language, because there is no "old compiler" that can be used in stage 1. The only way around this is to write the first compiler in a different language that already exists.
Of course, if a self-hosted compiler is your goal, you can afford letting the very first compiler (the one written in another language) be limited, "dirty," or "hacky". You don't have to implement the entire language in the first compiler; the first compiler just has to support enough of the new language to allow you to write the second compiler.
Anyway, once you have the first compiler, you write the first version of the second compiler in whatever subset of the language the first compiler supports. Once the first compiler builds the first version of the second compiler, the first compiler is no longer needed; you can add all new features to the second compiler only.
New versions of the second compiler (perhaps supporting more language features) can now be produced by bootstrapping. Of course, you can also use the second compiler to compile a totally different compiler implementation written in the new language (this would be the third compiler for the new language).
Man, this is a crazy world. Cats and dogs living together. Open source MS projects. The falcon cannot hear the falconer
This is basically old hat for me -- I'm just glad Microsoft agrees it's the way to go. :)
Lots of people use it
It's also somehow satisfying to witness Xamarin's success and further opening of .NET after all the bashing and hating Mono received from the free software community.
Now that MS has released the stuff under Apache license things have really changed.
We're looking at a lowered on-ramp to .net apps that run more smoothly than java+linux+every-support-tool-bit (dev-wise) across devices (and things). It's compelling.
Everything from dev to deployment and ops is getting touched at this conf. This shows where MS's strengths can present differentiation. Their profit source is, and has been, building/selling tools and platforms for others to run businesses. When the thing people hate becomes more like what they aspire to have/be, the tension is palpable.
Google is about the only other player nearly capable. But Google's mission has far less to do with selling shovels vs. harvesting and monetizing.
Apple is just not in this space. If anything, they sure feel like a device-only company in this conversation. WWDC is about the garden. Build is handing out spades, shovels, and, now, dirt.
Xamarin's Evolve, last year, felt a bit like all this does. The are big things happening. If nothing else, at least it feels like change, if not progress for devs and consumers.
The garbage collector for example would be very interesting to peruse. Sure threading and synchronization code would be differ but these have been emulated on Linux before to good effect, I don't see any serious barriers there.
I'm sure the codebase is factored internally to have some sort of platform abstraction.
C# is a great language, and I hope to see it flourish outside of the MS walled garden. Miguel de Icaza does what he can with Mono, but it can be so much more.
But I still hope Microsoft does well, because frankly I like .NET
I really like C#. But it's currently pretty close to useless anywhere other than Windows - Mono doesn't even come close.
Hopefully this will close the gap.
Cloning into 'roslyn'...
remote: Counting objects: 10525, done.
remote: Compressing objects: 100% (4382/4382), done.
remote: Total 10525 (delta 6180), reused 10391 (delta 6091)
Receiving objects: 100% (10525/10525), 16.94 MiB | 1.69 MiB/s, done.
error: RPC failed; result=56, HTTP code = 200
Edit: This looks like an incompatibility between GnuTLS and whatever Microsoft is using for TLS. Using git+libcurl linked against OpenSSL works fine.Makes me think of Sun open sourcing Java.
So while this development is positive, one should take it with a grain of salt. MS still can't be just trusted blindly.
See slide: https://pbs.twimg.com/media/BkT9oBcCQAAHIAV.jpg:large
Here's to hoping that Microsoft goes beyond the compiler and open-sources the VM and the whole standard library too - .NET and C# always had great potential, it's a pity that Microsoft saw it as a way to sell Windows. And I hope they realize they have a long way to go before they catch up.
And here's some notes on bridging between Haskell and Unity http://lambdor.net/?p=321
That's not to say Unity is better, it was just easier to use.
I think this will help .Net devs make smarter decisions about their code now that they can see what's happening in the background.
Generally I've not been very impressed with the quality of Android's documentation and firmly believe a company such as Google can do better. And after having a look at the process around getting a patch approved I deemed it not worth my time trying to contribute documentation fixes and enhancements.
git clone https://github.com/microsoft/windows.git
to happen git clone https://git01.codeplex.com/roslyn
Do you mean on github?Teams under his lead have been open sourcing things in expanding significance for years. As Scott has been steadily climbing the Microsoft chain of command and with each step of the ladder it seems larger projects got open sourced.
Microsoft, please add unix terminal instead of start button in Windows 8.
You can always use a bash/cygwin prompt for that if you want.
And why did they have to screw up tab completion like that? More like tab cycling. Why does MS always have to be different just for the sake of being different?
MS whole approach to the cli grinds my gears. And Powershell fixes nothing.
edit: Ah nice, Apache 2 license explicitly calls out a patent license is granted for use. I wonder how much cajoling it took to get the lawyers to agree to that!
See Locke1689's comments here, especially:
https://news.ycombinator.com/item?id=7524722
"the native C# compiler (that's what we call the old C# compiler that everyone's using in VS right now)"
Really, this seems better than opening up the old compiler that they're moving away from.
[1] http://www.microsoft.com/en-us/download/details.aspx?id=14124#
Is this the return of the original MS?
Microsoft's endgame is in sight.
I suspect that Microsoft is trying to fight their way into the Server space where Linux installations are prevalent by offering services via Azure.
So, for example, you have an extensive Linux environment running critical back-end services. You can have a BASH script which generates C# code, compiles it and eventually deploys it to Azure. This is I think a fantasy scenario that Microsoft is envisioning.
I don't understand what you're trying to say here. The roslyn compiler can generate code that can be run on the Mono VM. It was even demonstrated by Miguel on stage.
You'd also need something to run the roslyn compiler on linux, and that again would be mono.
Visual Studio will be using the roslyn compiler in the next version also.
Azure doesn't really have anything to do with this. It's an open source compiler that can run on the .NET VM or the Mono VM, and generate output for either.
With Valve pushing their Debian fork and more gaming support for Linux in the last time, Microsoft wan't to appeal to the Open Source community the reduce the "bashing" which ... which could actually loose some force behind it. Not that it could actually benefit Linux with better Mono support etc.
There are a number of things people are doing, based on Linux, which are basically using Linux as an OS and then layering on some custom drivers or such into a product. Whether its a web 2.0 company using it as the server OS or an embedded signage company. All of these were "impossible" when you had to have your own OS team to support them, and Microsoft benefited from that. Now the OS "maintains itself" (such as it is) and so businesses get everything they got from employing Microsoft tools but at a much lower effective cost. They don't need to pay big license fees, they don't need to hire programmers to maintain a lot of code that isn't central to their product, and they don't have to spend a lot of money/time training people on their own infrastructure. That is a pretty big change.
Its nice to see folks realize it isn't the software that is valuable, its the expertise to use it that has value. By open sourcing the C# compiler Microsoft greatly increases the number of people who will develop expertise in using it and that will most likely result in an increase of use.
[0] - http://roslyn.codeplex.com/SourceControl/list/changesets?page=7
Certainly Microsoft wouldn't mind just throwing some millions at them and buying them outright, so are we to deduce that any such offer was rejected?
But, I dunno. I'm extremely skeptical of Microsoft's ability to put long-term momentum into any of their non-core strategies. All these things are one re-org away from becoming basket cases.
Case in point: XNA
It's not an advertising company like Google. Google makes money when you use the Internet; Microsoft makes money when you pay for its software.
What does this mean for the future of C# on Linux?
It has actively been pushed by some of Microsoft's evangelists (Phil Haack (ex employee, works at github now i think) and Scott Hansselman to say the more popular names).
I believe they got some playfield to do things and now the community has more and more impact (eg. Nuget and software like myget which is based on Nuget (Nuget for Enterprise))
Also, the CEO isn't Balmer anymore, that probably helps to.
http://roslyn.codeplex.com/SourceControl/latest#Src/Compilers/CSharp/Source/Parser/Lexer.cs
Something I've just learned from looking at the code is you can jump between cases in a switch statement :
switch (a) {
case '1':
...
case '2':
goto case '1';
}
Never realised you could do that.Although there is no reason why they wouldn't use goto. The oft-cited "goto statement considered harmful" was in a very different context and basically just ranted against using goto when there are control structures that make intent clearer.
Also, I read a lot of comments saying this way good for mono ... how is this ? Wouldn't an open source CLR be more useful ?
http://roslyn.codeplex.com/SourceControl/latest#License.txt