Source: We rely on OpenGL to render video in mpv, and we are currently switching from using a WGL context by default to using ANGLE. Maybe this could be a third option?
It's actually pretty interesting that Microsoft maintain a fork of ANGLE for this purpose when they have their own GLES implementation in Edge. I guess (before now) it was easier for them to modify ANGLE than to open-source their own work.
While I'm not entirely sure what the strategy is with this, I'm fairly surprised by the move. This is something that would have been unheard of from Microsoft even a decade ago. They've made a bunch of really huge strides in FLOSS, but they've all been centered around developer mindshare. I totally get open-sourcing your developer tooling, especially in consideration of their Azure ambitions, which isn't bad.
I really like VS Code, which has become my daily editor of choice, I keep meaning to try the integrated debugging, but haven't. The .Net core releases have me looking at C# again, in a fairly new light. The Linux Subsystem for Windows is impressive.
All of that said, this move still surprises me. I'm not sure if/how much it will benefit the larger developer community, but it is really nice to see a much more open MS. All I can say is that the next half decade will be particularly interesting in terms of software improvements as hardware has started to level off.
As a 3rd party it's very easy to think "oh they should just release the source for X and if they don't it's because they don't want to", but if X is big and it didn't start out public, it usually takes a pretty herculean effort to get it released, often meaning someone burnt a lot of capital (of whatever sort) to make it happen.
Microsoft knows how important developers are for a platform company, both inside and outside of the company (as evidenced by very good salaries, real offices, etc.). I just think it took them a few years to notice that one of the things good developers value is community. Now that they've figured it out, they've begun making changes. If you'd asked me 10-20 years ago, "Hey, would you ever consider working for Microsoft", I would have laughed. Today, I'd probably still say no, but I wouldn't laugh, and I'd probably even think about it for a minute or two.
Okay, but note that that's not at all what my comment was about. Contributing new code to an open project isn't a hard problem, in any company I'm familiar with, but taking a large closed project that your company wholly owns, and getting it released as MIT is a different matter.
Even if the project was begun under the assumption it would be opened someday (as I imagine may have been the case here), momentum is against it and it tends not to happen unless someone is passionate about making sure it does.
With respect I don't think that the gist of your post is solid, you seem to forget that Microsoft has no problem whatsoever to attract good developers. They could even afford to turn down someone as talented as the creator of Mono.
What developers - like other employees - look at is the corporate package, and - sometimes - the company's mission. This is why Oracle still has employees.
That's not a very high bar, is it? "Has employees"...well, so does Walmart. Does Oracle have the kind of engineering talent and passion that will see them through future decades as a market leader?
I believe we've seen a shift that won't revert. And, I believe Oracle has only a long slow decline ahead of them. Microsoft, on the other hand, may have averted that fate.
This is not to say that Open Source is magic (companies still have to ring the cash register), or that engineers are in charge of the ship now (though that, too, has been happening). I just think we live in a different world from the one where Microsoft and Oracle rose to dominant positions.
Would you want to work at Oracle? More importantly, would you prefer to work at Oracle over, say, Google or Github? Oracle has always been, and remains, anti-OSS. They sue over Java APIs, they close Solaris development after Sun had opened it, they piss off MySQL developers so much that they leave the company and fork MariaDB, they piss of Hudson developers leading to Jenkins fork, OpenOffice forked into Libre Office, etc. The best developers hate working with Oracle. The same was once true of Microsoft; at least it applied to many Microsoft products.
I think that means something. It's not a simple equation, but if I were betting on companies that will stand the test of time, I'd bet on the ones that have deep company loyalty (both inside and outside) and have passionate people who want to be involved in what the company is doing.
When I joined back in 2009, I certainly didn't expect to end up shipping newly written code under GPL, of all things. And yet, here we are.
Relicensing oss is difficult because you might need consent from all contributors, but I imagine that is easy for in-house code.
You have to pass legal review, which can take months, possibly rewrite parts of the code that cannot be opened.
Fundamentally, big corps are inertia accumulators. Noone wants to change the status quo, and as a low-rank engineer you have to fight every step of your way.
...which at the same time are collecting huge amounts of data ("telemetry") on and locking down their OS against users, as well as blatantly advertising to them within that OS. The openness is just a facade to entice people away from seeing that other side. IMHO they're basically saying "we're open-sourcing our IP because it's not worth much anymore --- monetising our users is worth much more, and they might trust us more if they think we're friendly and open."
Google and Facebook are other examples of companies doing a similar thing --- they contribute to and maintain lots of open-source projects, but that's not where their profit comes from.
From that perspective, I'd rather have the old MS back. Windows was sufficiently open to develop applications for (I've been programming in Win32 since the Win95 days), a little RE ala Russinovich went a long way towards "opening" the darker parts, and Microsoft wasn't hell-bent on tracking users and turning their PCs into advertising platform that MS controls.
Excuse my language but I don't know a better or more direct way to say this but horseshit. You have no idea that's true. That's a pretty slanderous claim. I _hated_ the old Microsoft but I'd never let that hate distort my judgement the way it obviously has distorted yours.
> "we're open-sourcing our IP because it's not worth much anymore ---
> Google and Facebook are other examples of companies doing a similar thing ---
Again, horseshit. My feeling is that devs have seen the success of Linux and come to the correct conclusion which is that open-source is pragmatically a better engineering practise than not.
> From that perspective, I'd rather have the old MS bac
Are you out of your mind? I can link to comments of people quipping about flying porcine objects and chilly days in hades when Microsoft started open-sourcing .Net. The new Microsoft was literally unimaginable even six years ago. I think it's incredible and Microsoft is to be encouraged. Guess what, they're not a monolithic malignant entity. They can be giving with one hand while taking with the other without there being a causal relationship.
Commoditizing your complement is not a new concept - open sourcing your complement is just a recent twist. Without passing judgement, I can safely say Google will not open source its search algorithms in the foreseeable future.
So it may be possible that the teams releasing OSS have relatively good motives while the people running Windows have relatively misguided ones. Different verticals have different-- possibly conflicting-- aims.
Personally, I think we can encourage the right behaviors and discourage the wrong ones. Use their OSS stuff, don't use their closed source/adware stuff. I don't think I'll be using Windows again (unless something drastic changes), but I do use VSCode, and I'd love to use Visual Studio again, if it ever arrives on Mac/Linux.
Windows releases OSS projects as well, it's not only the dev div team that values open development.
They've only begun catching up with Google and Apple in this regard, though.
Except they haven't changed that much. Windows is now malware and they are bullying Android and Linux device makers with their patents, so they aren't really that different from the Microsoft that funded the SCO lawsuit.
Did you know the president of the Apache Software Foundation is also an employee at Microsoft?
It turns out that the code is offered under the (very permissive) MIT license. Cool.
We've recently produced a WebGL implementation on top of V8 (passing calls through to OpenGL ES) - we needed it for a specific use case where a bundling a complete browser wouldn't do. We're interested in open sourcing if it's helpful to others - I'm curious to know if anyone else has a use case for an embeddable WebGL implementation? (Ours was to run three.js on the GearVR)
The conformance tests have been available for years and yet they haven't bothered to pass them
This makes devs have write nasty workarounds if they want WebGL apps to work on Edge
For someone speaking of ethics you really can't just leave this here without any support...
That's proprietary too, so sure. But why are you mentioning Apple in a thread about Windows? I never said Apple was good either...
> customized Android versions
Android is mostly proprietary as well. Replicant is as close as you can get to a free fork of Android.
> every other commercial OSes
Darwin doesn't count, because it isn't the full stack, nor can we be 100% sure that even that part of the code is shipped like that.
As soon as they're back on the horse, we'll see the same behavior we used to see from them. That's my opinion of course. Fool me once...
One could see it as a move to make HLSL incorporated in to other web-browsers.
I don't necessarily agree with that, and I do think that MS today is very different from the MS of yore, but I can see how some people might be concerned.
We all understand ms is a proprietary software producing company, and many in the tech community have been veering away from them in increasing numbers. They have sought to regain this leaking market share by doing some open source initiatives, with the intended purpose of getting people locked in in other areas! This is exactly what we mean in the modern context when we say eee. Embrace (the pro open source community), extend (the oss into other platforms, pulling devs back into the proprietary platform), and extinguish (pull back the open source to reveal the proprietary base it's founded on).
Half the problem is people see open source and think it's automatically good. What we need is FOSS (free open source software) and people need to learn the difference and why the F in front of FOSS is so important.
Please don't post drive-by smears to Hacker News, including of HN itself.
If you or anyone has a genuine concern about this, I addressed a similar comment in great detail a few days ago: https://news.ycombinator.com/item?id=11844253.
Off topic, but I am a happy customer of Office 365. I use the web versions of Word and Excel on my Linux laptops when people send me Office files. Works fine. The one terabyte of cloud storage for each family member is nice also.
The developer tools are nice, but I'd hardly say Microsoft's other work is "top notch across the board". I've had major problems with Windows, Xbox, Azure, and more...
> Their development tools are unequaled
Have you ever done any cross-platform C++ programming? That might change your opinion a bit.
And if you're working on a cross-platform project, it's probably using CMake or something similar. The development cycle of `cmake .. && make` is simple and easy. As far as I could tell, Windows builds were not as straightforward. It's been awhile so maybe they've improved it, but I would hardly call their developer tools "unequaled"
I just want to install Clang in a straightforward manner, call the above-mentioned `cmake .. && make`, and have an exe waiting for me. Is that possible now? It wasn't in the past which is why I'm highly suspicious of your "hands down developer friendly" comment. Windows always seems to be the platform that has to do things slightly different, and has offered the most friction when developing projects that run on OS X, Linux, and Windows.
EDIT: I would also like to add that most CI services offer at least G++ or Clang++. AppVeyor seems to support Windows builds with MSVC but isn't free. This is yet another hindrance to smooth cross-platform development.
So in that regard, yes their IDE is one of the best, but their platform sort of diminishes the developer-friendliness of the whole experience when developing on Windows.
I need to check out CLion again, haven't tried it since they released one of the first versions.
Have you ever used other ones? Some of them on the embedded space don't even support C++11!
Ever you ever tried cmake besides BSD, GNU/Linux, Windows?
There are lots of other platforms out there, have you evaluated the experience on those platforms against Windows?
I'm speaking mostly from a gamedev perspective, I don't write embedded C++. Same story with CMake, only used it on platforms where someone would/could play a game.
Does Windows offer a superior development platform when doing embedded work compared to BSD/Linux/OS X?
I prefer to work in a general text editor alongside simple command line build tools, which probably explains my dislike of most Windows dev tools.
Except there are quite a few commercial compilers to choose from, not only those three.
> I'm speaking mostly from a gamedev perspective, I don't write embedded C++. Same story with CMake, only used it on platforms where someone would/could play a game.
Sony and Nintendo SDKs are Windows based.
> Does Windows offer a superior development platform when doing embedded work compared to BSD/Linux/OS X?
The majority of the embedded vendors SDKs are Windows based and they have their own compilers. Not everyone is doing gcc and clang forks.
Additionally, we're shipping a number of versions of Clang in VS (targeting Windows, targeting Linux/IOT, targeting Android/iOS) and contributing to the community. We're looking seriously into CMake support and contributing back to the community. And the VS Code editor runs on Unix-based OS with IntelliSense, debugging, etc.
So yes, VS has improved a lot, but we still have work to do.
I'd love to chat with you if you have questions. My email is firstname.lastname@example.org. My full name is on the blog that I linked to but I'm really not that hard to find online.
And I've got questions for you if you use Clang and have any interest in Windows. Send me mail and we can maybe set up time for a phone/Skype call.
However, C++ is one of my favourite languages (minus C parts), that I still reach for private projects and when I need to step out of .NET and JVM.
Not sure if I am the one you want to talk to, as I do find Visual C++ has actually one of the best supports for C++98/11/14 among commercial C++ compilers.
I do spend most of my developer time on Windows actually.
cmake .. && cmake --build . --config RelWithDebInfo works for me.
cmake -G Ninja
It'll speed up your build by a lot in most cases.
Particularly when it comes to integrated debugging, what we have on other platforms pales in comparison imo.
It is all wonders when your view of cross-platform C++ programming means only using only gcc or clang across BSD, GNU/Linux or Mac OS X.
However things aren't so rosy when cross-platform C++ programming means the official OS C and C++ SDK, with their own view of what POSIX APIs they are supposed to offer specially the ones that leave the implementations some freedom about undefined behaviors.
If they offer POSIX APIs at all.
This is something Microsoft would never have done in the past, and I think we should applaud the efforts that are being made.
Lastly; they are doing this to improve interoperability; give them some credit for the effort.
worst sex partner of all times.
// Function: GetDefaultInitValue
// Synopsis: Returns a string that contains the default HLSL value for
// the component of this type. Should not be called on sampler
// or void types, as there are no values to init with.
Much better than the crap comments I see on a lot of projects such as "# does this even work ? lol"