It was a major week for programming languages as a couple of big things happened. There was the PHP 7 release, and Swift’s anticipated release as an open source project happened. Additionally, Let’s Encrypt came out of beta.
PHP milestone
While I’m moving away from the language1, it was a big week in PHP land I can’t let it go without a mention. PHP 7 was released! This is a highly anticipated release and while it will probably take a while before it becomes standard, it has some very good new features. Personally, the ones I like the most and wanted to see for a long time are scalar type declarations and return type declarations. These features should make it a lot easier to build robust code, and especially when building things like APIs or reusable libraries that should have a good impact.
No doubt some of the improvements in PHP 7 were inspired or triggered by Hack. I have similarly no doubt that some of these ideas have been around longer than Hack, so I’m not saying this release wouldn’t have happened without Facebook introducing that language. That said, the fact that what is probably the biggest player using PHP was so fed up with how slow it was moving that they created their own version of it probably caused a shift in priorities.
As I remember sitting at EuroOSCON in 2005 hearing about PHP 6 that was going to be released any time now once a couple of small things were fixed2, I’m mostly just glad to see that they’ve finally gotten around to the next major release.
Open Swift
At WWDC in June, Apple announced that they would release the Swift language as open source and now this has come true. Apple’s contributions to open source software haven’t always been warmly received, one thing that comes to mind is how they used to supply changes they made to Webkit as a single big change, often containing a lot of big changes that had to be accepted as one. They’ve long since improved on that, but it still wasn’t clear how they were going to open up Swift. As it turns out, they exceeded at least my expectations.
First there are the things that were announced or pretty much implied. All the code (Swift itself, the tools and core frameworks) are released under the Apache 2.0 license. There is indeed a Linux compiler as well as other tools needed for this to work. They also provide pre-compiled binaries, although interestingly at this time that is only for Ubuntu3. This might be because of their general focus on consumer’s over enterprise, but regardless it wouldn’t surprise me if packages show up soon for RedHat/CentOS even if they’re not provided by Apple.
They also released a separate roadmap project that details where they want the language to go, and it seems like they’re going to be moving fast. Version numbers are going to go up quickly as well, with 3.0 already planned for next fall4. A major part of 3.0 seems to be based on stabilizing the language, so hopefully after 3.0 there will be less breaking changes5.
The source code itself is hosted on GitHub6, which is obviously a lot better than if they were to host it themselves. Even better though is how they will be using this repository. According to this interview with Craig Federighi7 all of the development on Swift will be done in that repository. So, they won’t just dump a completed version on GitHub but instead it will be possible to follow along with all the work they’re doing as they’re doing it. And, they allow pull requests, whether and how often these will be merged into the core remains to be seen of course. One interesting choice is that they’re bugtracking isn’t done using GitHub’s Issues, but instead uses JIRA. For now though, it seems like they’re running Swift the way an open source project should be run8.
Of course, the question here is why should this matter? While I like the fact by itself that this language is made open source, that might not be enough for everyone. However, this has the potential for making cross-platform development a lot easier. If someone has an iOS app, and they want the same logic to be available on their web server they would have to write all that logic in at least two languages before. Depending on the complexity, that can result in it either not happening or differences in how it’s implemented and what it will do. And of course, technically speaking Android is Linux as well. Whether it will be possible to write apps for that platform in Swift right now is not something I can say, but it wouldn’t surprise me at all if at some future date it will be.
Let’s Encrypt open beta
I mentioned it two weeks ago, but Let’s Encrypt is now in public beta, so you should check out if it works for you. All my comments about this free and automated SSL certificate service still stand, and are unlikely to change before the first release, but it’s still a great initiative and is very likely to work well for you. Go check it out and play with it.
-
While there are some things about the language I don’t like, I’m mostly moving away because I’ve been using it for so long and just want to try something new. Most likely I’ll be focusing on Golang and Swift, but I’m not planning to limit myself to any particular set of languages. ↩︎
-
Spoiler: this never happened, although to be fair a lot of the better parts ended up in the 5.x releases. ↩︎
-
Both for the latest 15.10 and the 14.04 LTS versions. ↩︎
-
Where fall of course means “fall for those living on the northern hemisphere”, not antipodeans like mysef. ↩︎
-
Not that breaking changes are necessarily bad if they fix big issues, but at the moment it’s likely that the code you wrote at the start of this year won’t compile without modernizing it. ↩︎
-
Funny how a decentralized tool like Git seems to mostly focus around two centralized services: GitHub and Bitbucket. ↩︎
-
Apple’s Senior Vice President of Software Engineering, aka the guy in charge of all this stuff. ↩︎
-
Should be seems to imply there is a rule for these things. That’s of course not the case as anyone can decide for themselves how to run their projects, but this follows in the footsteps of other open source languages such as Go. ↩︎