Swift open source – let the revolution begin
jessesquires.com
jessesquires.com
I was afraid they would just toss a snapshot over the wall and leave the community to struggle with maintaining it (if anyone cared to). At best, I thought we might get some regular snapshots and discussion.
Instead, everything is out in the open, the team at Apple is apparently pushing to the same repository we get to see, they have an open bug tracker, they're actively soliciting and discussing proposals from the community, accepting patches from the community, etc.
This is business as usual for most open source projects, of course, but to see it coming from Apple blows my mind a bit. It's really great to see.
See for example: http://www.opensource.apple.com/release/os-x-1011/
LGPL is quite friendly to proprietary code.
And indeed, they _do_ do this, I think; a lot of WebKit is BSD license.
I'm really happy that Apple open-sourced Swift in this way. However, most of the ~400 pull requests are fixes for single typos. I hope that managing the GitHub issues won't become too much of a burden for the main developers (those with write access to the repository).
The people contributing those fixes are doing so because they want to contribute, and typo fixes are very easy to be certain about that it's an improvement (without a chance of introducing regressions, etc.).
Of course, as the easy-to-fix problems are eliminated, focus will shift to finding more meaningful ways to make improvements, or just using the language which has fewer problems as a result.
How to tell if something is a "real" contributor rather than someone who sends the occasional spelling fix. I imagine recruiters would be interested in some way to easily tell this.
Although I've seen that a lot of the basic Swift types are written in Swift, so that would be an area to improve too - that is, if anyone can spot one.
Is there a task list for the project? I don't see an 'issues' page.
My initial opinion was swift does a lot of things much better, (no header files, new operators, etc.) but learning a new language takes a long time + it appears a majority of code is still in objC
It's not clear from your post if you're trying to make money as an iOS dev but failing, or if you're making money writing for a different platform, but happen to know Obj-C. If the former, you should learn Swift - but you don't need to "drop everything" to do so, it's just a language. If the latter, whatever, doesn't matter either way.
[1] Unlike in Obj-C where they were relegated mostly to delegates/data sources and a few obscure framework classes (remember IKImageBrowserView?), in Swift they're practically the base of the language - almost every type you write should probably be based on a protocol.
I can see you wrote that post in an auto-completing IDE.
ymmv, of course. i'm new to iOS land and i write objective-c exclusively during my day job. that being said, the difficulty in iOS development (in my experience) is not in the language, but the APIs, abstractions, and patterns - and they are the same regardless of whether you're using swift or objective-c
“Objective-C is not going away. We still love Objective-C as a language; we still very much depend on Objective-C and do a tremendous amount of work in Objective-C here internally at Apple,” Federighi told Ars. “We’ll be supporting Objective-C and continuing to evolve it as necessary to fit into this evolving world. We do think that Swift is the language that we recommend for new developers to our platform who are investing for the future and building new apps. We think Swift is absolutely the right place to start. But we’ll continue to maintain, advance, and support Objective-C for as far as we can see.”
From http://arstechnica.com/apple/2015/12/craig-federighi-talks-o...
extension MyViewController {
func fooAction(sender:AnyObject) {
}
}You need a bridging header to call back to ObjC
Very few people are blogging or writing books with ObjC. It's mostly Swift, and has been since June 2014:
At WWDC 2015, the only talks that used Objective-C were related to the new language features. I don't remember any other still using the language.
So you can already see in which direction Apple bis steering the boat.
It's definitely a much better improvement of Obj C and I would have never built 3 apps in the app store without it, but I don't see it going out of the iOS dev environment anytime soon.
Swift is doing something similar now that it's open source there is a huge community of iOS (and to a smaller extent Mac) developers who are excited that they can code on other platforms (or will be able to in the near future) using a language they already know and love.
Is Swift different in this regard? Is more of the standard library open in Swift vs. in Obj-C? Any reason to expect it's non-Apple uptake will be better than Obj-C?
Swift, on the other hand, will now have full Apple support on Linux, and is a much nicer, and potentially more useful language. I think that with some effort on the community's part, it could become a serious contender for server side development.
Also, OSX isn't used as a server OS for good reason. Swift on Linux means that you can run that shared code in an environment designed around servers.
Is there a swifter option?
Thank socialism for that.
Technically, either Rust, Python, or Go is superior to Swift in every usecase it has. It doesn't fill a niche, its just Apple would rather reinvent the book than use an alternative on iOS, and they wanted clean compatibility with their other NIH language Obj-C. Its a nice compromise language for applications, but it is currently an app language without a framework outside Apple operating systems.
Besides that ecosystem compatibility its just worse than the alternatives besides the whole Apple is behind it so everyone is developing in it because they dream of working at / for / with Apple for some reason. Are Mozilla, Google, and and Guido just not sexy enough anymore?
How so, exactly? The only one on that list I'd say maybe to is Rust.
With swift, designers chose not to choose. Which means you'll resort to using libraries ( basic threads with gcd or C libraries such as libmill, or libuv), which means future incompatibilities between codebases that chose different models.
The programmer gets to choose the level of abstraction appropriate to the task in hand.
At the minimum, i would say it's much more flexible but also much less opinionated.