I find when Apple employees leave something important out, like licensing, it's because others haven't yet made the decision -- in other words, it's not final. I personally would have expected that if Apple were not making the code open source, they would mention its exclusivity and emphasize it as a training program for schools, etc. Realistically, it's just time -- like LLVM improvements or past work on Objective-C, expect everything up to the REPL as open source, but playgrounds and docs under proprietary license or completely closed would be my guess. If not now, some time in the future as .NET further open sources or if they want to encourage Swift as a JS competitor.
Or the decision has been made but it's not ready to be announced yet, for whatever reason.
Apple is notoriously secretive. They hate saying anything ahead of time if they don't have to. They could have committed (internally) to open sourcing Swift when they started on it four years ago, but they still probably wouldn't say anything until they day it happens. If they thought they could get away with it, they'd have kept the very existence of Swift secret until the public release, but they need feedback from third-party developers at this point.
Does it really matter ? While I think Swift is an amazing language, it would be much less useful outside the closed ecosystem of Apple. The same thing happened to C#, it never really took off outside Windows.
It's true that C# is not as prevalent on non-Microsoft platforms as it is on Windows but there are a handful of mid-size to big multiplatform projects using C#.
e.g.
- Xamarin (multiplatform mobile apps)
- Unity3d (multiplatform games)
- Monogame (multiplatform games)
- Unreal Engine 4 (build system)
I guess Swift could fill the same gaps. I would especially love to be able to develop multiplatform mobile apps with swift since switching between ObjC and Java all the time is quite taxing.
I respectfully disagree. You can't downplay the massive indie game libraries or even AA games out there. They're not breaking records, but they make a large amount of sales.
There are several massive communities that use Monogame (even still use XNA) and Unity. It's huge in the indie community, and is basically how the XB1, PS4, and Vita expect you to make games for their systems. The Vita Tool Chain is mostly C#.
Sure, no one is writing AAA games that require maximum graphical capabilities in C#, those teams use C++ exclusively (often with a scripting language on top). At that point that is really the only language AAA games use if they are made from scratch, otherwise they are using an engine already made in C++.
Bastion, Magika, A.R.E.S., Dust, Fez, Rogue Legacy, Reus, and Terraria are just a few made in XNA/Mono. And looking at total sales amounts, some of those games definitely had revenues over a million dollars.
That's not including unity games like: Shadowrun Returns, Rust, Wasteland 2, and Hearth Stone. These games made very good amounts of money, again, not 100% AAA, but still industry veterans.
I suppose you're right, I shouldn't have downplayed them. I just think you need to segregate the two groups as they are almost completely different industries. To say that "C# is really popular in the video game industry" is misleading.
I can mostly see your argument. It makes sense. The indie and AAA industry are two different beasts, but they are the same industry.
It feels like one of those big business vs small business issues. If you have the man power and the resources, you can go much farther much faster. But not every starting company can afford the overhead of going full C++ and Engine heavy.
So C# being 'really' popular in the AAA side of the industry is a tad misleading (though can be used as a language on top of the engine, for tools (where it is probably most used), and for tool-chain), to discount it only due to the top 33% of companies usage, is a bit unfair to the quite large and growing indie and AA crowd.
If there is a standard available then it doesn't matter so much. With the a spec anyone may write their own implementation. Of course, will they becomes the question then, and whether or not people will adopt it on non-Apple platforms.
That is a nice view in theory, but doesn't mean much in reality, even if they release a spec who is going to be able to build an implementation to compare. It will end up like GNUStep. Even languages that are open like Python have trouble maintaining language compatibility across multiple versions. Written specs are also riddled with ambiguities and implicit assumptions which make the creation of a "perfect" clone very hard.
They were in much the same boat as I was back then: whatever you could install out of the box was simply too slow. Inefficiency would have caused us to die on hosting costs so we had to build our own webserver and so on. It's gotten a lot easier over the last decade and a half to build a performant website.
If Ok-Cupid were started today I highly doubt they would do that the same way. But given when they did start it I figure they literally did not have a choice.
They did a blog post on it that I can't find right now. Essentially, they made it quite a while ago (2002? I don't recall exactly), and all other options were too slow. Their backend apparently has to do a lot of work calculating match scores when users search.
C++ can be just fine. It can also be used to write software bad enough to quit over, that dozens of people will maintain for decades. And they talk about it. I don't think Objective C has that problem.
Yes, that is my point but I didn't make it very well. If Objective C were routinely subjected to these sorts of projects, I think its over-all reputation would be a lot worse.
And Swift would be equally terrible for a high performance 3D game. (It's not because the guy from Apple said it that it's true.)
There's a reason why every single AAA studio uses C++ for their engines and titles. And that's the same reason why it is terrible for social media applications.
Every single AAA studio uses C++ to write the smallest portion of their game they can in C++.
Then they put a sane, modern language on top of it many places, Actionscript at EA, Python at many other places, LUA at others, C# at others, and write in a high level language that doesn't leak abstractions like a nut milk bag.
"I can build anything with Swift... from a social media application, all the way up to a high-performance, 3D game using Metal."
https://www.youtube.com/watch?v=nKMAV6owYh4#t=6436
He wrote this chapter (entitled LLVM) in the book, "The Architecture of Open Source Applications":
http://aosabook.org/en/llvm.html
* * *
On the general topic, I wrote this [1] a little earlier in another thread; I'm just impressed with how Apple is becoming a gaming powerhouse.
[1] https://news.ycombinator.com/item?id=7841744