
IBM says Swift is ready for the enterprise - okket
http://www.computerworld.com/article/3122994/apple-mac/ibm-says-swift-is-now-ready-for-the-enterprise.html
======
valarauca1
When I recently interviewed at Apple I was told my position would primarily be
coding in Java, but the team would be open to other languages as the project
progressed and needs changed. I asked if they would consider Swift. Then was
told that Swift wasn't production ready in their eyes.

(I didn't get the job)

I guess every team is different, but this attitude to dog fooding isn't great.

~~~
cableshaft
I interviewed at IBM for a position making Enterprise template apps for iPad
working directly with Apple, and the main reason they said they passed on me
was while I had a good amount of Objective-C experience, I had only dabbled
with Swift on my spare time and had difficulty answering a couple of the
questions they grilled me on in Swift.

They specifically said I should have had more professional Swift experience
when they rejected me. Of course all the companies I worked for were being
more conservative and hadn't yet made the leap to Swift yet, so getting that
professional experience was pretty much impossible. But I guess if anyone can
afford to be picky, it's IBM on a project working directly with Apple.

So yeah, IBM is definitely gung-ho about Swift. Apple itself, possibly less
so.

~~~
fail2fail2ban
IBM advertises jobs yet when qualified people show up, they are rejected.
Either it's a way to look like they are reaching out to the public to satisfy
the government so they can then go hire outside the US; or it's a way to let
insiders get those positions after the applying public are rejected, all IMO.
When I was in there, 99.999% of the people I met came in through acquisitions,
not applying for a job and getting hired.

~~~
cableshaft
A recruiter for IBM contacted me, actually. I didn't respond to an ad.

------
stuartaxelowen
Does this loosely translate to "We want to sell Swift consulting services to
the enterprise"?

~~~
pjmlp
Yes, preferably on top of IBM Cloud.

[http://www.ibm.com/cloud-computing/bluemix/swift/](http://www.ibm.com/cloud-
computing/bluemix/swift/)

~~~
gaius
After the Helion debacle, I have my doubts about "enterprise" clouds.

~~~
iheartmemcache
I don't have any clients which will use any cloud solution other than half on-
prem SAP and _maybe_ Azure are the only cloud solutions my clients will come
close to touching, so forgive my ignorance but which debacle is that?
(Genuinely curious from ignorance, not being flippant.)

~~~
gaius
Oh, HP launched a cloud, then shut it down again.

[http://uk.businessinsider.com/hp-shutting-down-hp-helion-
pub...](http://uk.businessinsider.com/hp-shutting-down-hp-helion-public-
cloud-2015-10?r=US&IR=T)

The last thing you'd want is to do a big migration then find the rug pulled
from under you.

------
cageface
Overall I like Swift and it's certainly a massive quality of life improvement
for Mac/iOS devs.

But I don't see as much upside for enterprise development. Server side tooling
and deployment is still TBD, reference counting adds non-negligible cognitive
overhead vs GC in an environment where the downsides of GC matter much less.
They will have to build a complete ecosystem of server-side libraries from
scratch. And unlike on iOS/OSX, there are already a lot of good and much more
mature alternatives.

I wouldn't be unhappy if Swift became a real contender on the server but it
seems unlikely to me that it will.

~~~
spotman
Can you elaborate on the cognitive overhead vs a GC language like golang or
java? (With regards to memory)

To me sure there is things you think about but generally memory performance is
less of a mental burden.

Also, swift 4 is supposed to support a rust like memory model. Not sure if
it's opt in or how it will work but my impression is that it's memory model is
about to support some new use cases to make it appropriate for more memory
critical tasks.

~~~
mikeash
Speaking only for myself, avoiding or breaking retain cycles is a noticeable
problem in Swift code that simply isn't there in languages with a proper
garbage collector. Among newer iOS programmers, it's a big point of confusion
to figure out when a callback closure should use [weak self] versus capturing
self strongly, for example. I've seen a lot of people struggle to understand,
completely fail, and end up dogmatically using [weak self] everywhere whether
it's needed or not (and sometimes where it's actually harmful).

~~~
pjmlp
It is much easier than in either C++ or Rust.

~~~
pcwalton
Technically true, but very misleading in Rust's case. In Rust you rarely have
to break retain cycles in the first place, simply because you don't use
reference counting much. Things like "weak self" are not a problem, because
closures aren't reference counted unless you explicitly make them so (and in
fact I don't think I've ever seen a reference counted closure in practice).

~~~
pjmlp
I agree.

I only mentioned Rust, because of ergonomics, since the compiler cannot guide
the user unless the types are known.

Or is already something in place to make use of intrisics for better error
messages in such cases, instead of just giving a type error?

------
jmacd
Hilarious that IBM still thinks of the enterprise as the arbiter of quality.
Consumer is now setting the defacto standards, including on things like
information security.

IBM's days of having a voice in that conversation are probably more limited
than they realize.

~~~
wiz21c
would you car to give some exampled ? My opinion is that the enterprise is a
somewhat separate ecosystem. Thus "enterprise-ready" -ready is not a mark of
quality, it's a mark of belonging to the enterprise ecosystem.

~~~
themihai
I'm wondering what makes swift ready for the enterprise ecosystem. It barely
seems to meet the requirements of the "enthusiastic consumer" outside of Apple
OS.

~~~
barkingcat
To be ready for the enterprise ecosystem basically means that you can sue
someone if things go wrong, and you can buy support packages for enormous sums
of money. IBM is saying that you can 1) buy bluemix swift from them, and 2)
sue them if anything goes wrong - but since they have a great legal team, they
probably got ironclad agreements ready to go.

~~~
erikpukinskis
It's not about having someone to sue it's about attracting blame.

Blame assignment isn't really about who made good decisions, or who worked
hard, or any of that, it's a combination of how bad it went and who made
uncommon choices:

common choice + failure = external blame (who could have seen it coming?)

uncommon choice + failure = it's your fault for doing it weird

common choice + success = great job!

uncommon choice + success = I don't trust you, but you might be a genius

Since hierarchical relationships function using blame ("responsibility"),
making predictable decisions becomes more important than making good decisions
at some depth of hierarchy.

~~~
iheartmemcache
This is probably the most important comment in this thread. Being able to
delegate blame out to $common-choice on project failures is the difference
between that CIO being able to say "hey, not my fault, I bought the Oracle
platinum integration package!" to satisfy the board rather than "sorry guys, I
really thought my node.js idea would work, it's all the rage with the kids!
Haven't you ever heard of Slack?!"

(If this sounds strange to you, just replace "node.js" with "Rails 2" and
you'll see why ASP.NET and Java's still king in any company with a market cap
> 100MM && age > 20 years. It's about continuity of support, and Windows 2016
servers can still run ASP Classic and .NET 2 WebForms apps just fine.)

"Responsibility" == risk mitigation for that purchasing authority.

~~~
l1ambda
Slack is PHP and Jquery, no nodejs AFAIK.

------
nnq
So... what's the "elevator pitch" for Swift?

It has _anything_ interesting over Elixir or Go (well, go's feature is "lack
of feature" but you know what I mean) or Scala or Kotlin?

I know that iOS and MacOS desperately needed a _modern_ language, and great
for them that they have it now, but does the rest of the world need it?

~~~
hellofunk
I think the pitch is that despite static typing, it offers a lot of multi-
paradigm high-level features while remaining elegant with fairly minimal
syntax compared to other native static languages like Rust or C++. It
automatically manages memory but without a stop-the-world garbage collector
and goes a long way to opening a lot of flexible design options to any
developer: it has great support for generic programming, object orientation,
and functional programming.

The downsides? Well, I find some of its syntax choices a bit odd and
inconsistent; I think the pursuit of elegance could have gone much further.
And, while I celebrate its pervasive use of closures/lambdas and functional
idioms in my many contexts, it lacks true functional data structures that
would be necessary to really write in a proper functional style with
confidence that the runtime wouldn't suffer.

Also, the implementation of its high-level features is somewhat magical and
hidden. You can't depend on performance when using them until you really study
them. So much so, that WWDC had a big talk about how to choose language
features depending on the type of performance you need, and none of it was
intuitive.

Additionally, at least on the Apple platforms, its Objective-C heritage can be
a bit annoying. In particular, you can't mix and match closures with
"selectors", which is a real shame and missed opportunity for flexibility and
elegance.

~~~
dcosson
One other downside is XCode. No refactoring support, and lots of errors that
give you little help. For instance, if you're trying to implement a protocol
which is itself a few layers of nested protocols, XCode will just tell you it
doesn't conform and not what method you're missing, so you have to dig through
and check every signature of every method carefully.

The swift 2 to 3 migration was absolutely insane, I'd estimate Xcode did maybe
25% of the work automatically and left me with hundreds of different errors to
convert manually (and often they were red herrings where the actual error was
not where Xcode said it was). And you have to rebuild all dependency
frameworks on swift 3 as well since the binaries are incompatible. If you use
Swift make sure you have 2-3 whole developer days per year to devote to just
migrating to the next version in a medium sized project.

~~~
emdowling
I would agree with this. The biggest issue with Swift right now is Xcode.
Multiple times each day, syntax highlighting and code completion will break,
even though the code is perfectly valid. The lack of refactor support after
three Xcode releases and major versions of Swift is inexcusable.

Using storyboards is super frustrating due to the load times. It seems no one
at Apple tests with more than one storyboard in a project.

I love going back to Ruby dev because VS Code is just such a joy to work in
compared with Xcode. Xcode really struggles on my top of the line MBP with
16GB RAM.

I still love the language compared to ObjC but the tooling is abysmal. Every
year we hold out hope that Xcode will magically get better but its the iTunes
of IDEs at this point.

~~~
dep_b
Well I don't know any experienced developer that would put more than three
populated scenes in a Storyboard. I would only add more if it was something
like a navigation setup (navcontroller, menu, etc) where I would simply nest a
lot of empty screens and link to the real screens with storyboard references.

You can always use AppCode if you don't like Xcode.

~~~
Oreb
AppCode has also become increasingly buggy over the last year or so, and is
now almost as unusable as Xcode (albeit in different ways).

On my computer, recent versions of AppCode _constantly_ use at least 100% CPU,
even when it's in the background doing nothing. I got this a few times in
earlier versions as well, but an "Invalidate caches and restart" usually fixed
the problem. No such luck with recent versions. It will always use at least
100% when it's running.

I often get 30 seconds of beachball when I switch back to AppCode from some
other app, despite having 16GB of RAM and not running any other remotely heavy
app. This will happen even if I just leave AppCode for half a minute in order
to check something on a web page. It's gotten so bad that I've developed the
habit of checking web pages on my iPad instead of on my Mac, in order to avoid
temporarily leaving AppCode.

There is a particularly infuriating bug that will sometimes cause AppCode to
freeze when I type the opening parenthesis of a function invocation. When this
happens, killing, restarting and typing again won't work, AppCode will freeze
at the same spot. The only workaround I have found when this happens is to
type my function invocation in some other editor and copy and paste to AppCode
(often after waiting the usual 30 seconds for AppCode to stop beachballing).

It is not just me – all my coworkers suffer from the same problems. AppCode is
by far the most annoying app I use on a daily basis. I hate it nearly – but
not quite – as much as Xcode.

------
mark_l_watson
This reminds me of the big announcement of IBM partnering with Apple for iPad
in the enterprise. I wonder how that worked out?

I am a little sceptical of IBM's business plan, all in on Watson, etc., but I
have used their Bluemix hosting services and it is fairly nice. BlueMix is has
a great free tier level' you can run one or two small web services or apps for
free. It is a good idea supporting Swift in the server.

~~~
iheartmemcache
There are plenty of enterprises silently chugging away with Cognos as their BI
platform. 'IBM MobileFirst' (i.e. some guys basically make a 'custom'
dashboard for your TM1 instance that C-levels can use on their iPhone)
probably broke a profit by doing what they do best. (I.e. severely
overcharging companies for functionality, in exchange for the purchasing
authority having the ability to say "hey I bought IBM"). Cognos still is
silently huge (TIBCO and Informatica levels of huge) and considering how the
corporate world went from BlackBerry to iPhone, it's a safe bet that it made a
profit.

Side-note: There was an article about the imminent demise of Oracle, but
residual support contracts and the need for CIOs to keep renewing those
contracts for a few hundred k a quarter is a cheap buy as insurance in the
same way you go to PricewaterCooper and not JoeSchmo to get your books
audited. (If/when PWC messes up, the board will overlook your failure.)

------
ruffrey
I cannot take this seriously. Even minor versions of Swift have breaking
language changes and depredations. That tells me precisely it is too early for
the enterprise.

~~~
acdha
That sounds like every enterprise application I've ever used – if you make
money selling support and consulting, churn is awesome!

~~~
mitchty
That explains "enterprise ready" then. :)

------
cdnsteve
I love all these zippy marketing keywords: "digital transformation" and
"digital experiences". IBM is trying hard to get developer attention. They
have a hard battle ahead of them to compete against AWS, Google Cloud and
Azure. That's what this really all comes down to, pushing their hosting
services.

------
superJimmy64
I literally just started to go back and re-learn some of the core concepts for
the latest version... wow is Swift ugly!

EDIT: I'm not attempting to discredit the greatness that can be had... Just
wanted to describe a feeling which I had while using it is all!

~~~
manmal
It's a systems language, and imo way more beautiful than c++.

~~~
superJimmy64
Absolutely. I'm not attempting to put it down as somehow not worthy of anyones
time, just thought I'd mention how "cushioned" it all felt :P

~~~
manmal
What language do you prefer over Swift? I'm curious.

~~~
snovv_crash
C++11 with review-enforced RAII. Boost if you need special stuff involving odd
data structures. gtest/gmock. Depending on what you're doing, add some Qt5,
OpenCV, OpenMP, RapidXML/RapidJSON, any C library ever written - and there are
BSD/LGPL libraries for pretty much anything. Make plugins with Lua. Run tests
in Valgrind.

------
heisenbit
In '95 I remember going to an excellent Smalltalk course. A year later that
lecturer was working for IBM on Java. IBM '96 also bought and then shifted an
excellent Software Configuration Management System by OTI towards Java (aka.
Eclipse). IBM contributed a huge part of Java networking code too.

Java seems to be leaving a gap for various technical reasons. Java also may be
seen by some as having strategic challenges under the Oracle stewardship. Go,
Swift, Node and others are currently trying to exploit it.

Java took off not the least due to IBM stepping into the SUN court. Now IBM
steps into the Apple court...

~~~
MyNameIsFred
That's a good point, but do you think that things have a chance of playing out
similarly this time around? I get the feeling that web tech was more of an
open question at that point, so people would look to a group like IBM to set
the standard. I'm not so sure that that's the case anymore (and I make my
living building within the IBM ecosystem, so I wish it were so).

------
iamleppert
What exactly do you need in a server-side language these days? Most of the
interaction is done on the client, in javascript. Your web service should just
be responsible for handling basic request/response, CRUD operations and
delegating to other more specialized systems when the need arises, which can
be written in the most appropriate language given the problem domain and
tools/libraries available. More often than not what dictates language choice
is supporting libraries that you'd rather not rewrite from scratch. How good
are they, how long have they been around? etc...

For that, its often just easiest to use anything non-blocking to serve as the
main handler that communicates to your other services. For me, I use node but
there are other choices if you don't like javascript.

Most of the time it's not worthwhile to switch to a language just because IBM
deems it suitable. I've picked up more than a few freelance gigs where IBM
have botched the job and grossly overcharged for something that could be done
simply. My clients appreciate my honesty, openness, and simplicity of work.

What they really mean when they say "Swift is ready for the enterprise" is
that THEY are ready --- they have developed all the sales materials, support
orgs, and hired the "correct" developers (in this case Swift ones) to run
their gambit on as big of fish as they can.

------
montyedwards
Swift is good for enterprises that standardized on Macs and ios devices, but
there aren't many of those (yet).

I'm pretty sure Swift isn't ready on Windows, which is a shame because most
"enterprises" standardized on Microsoft Windows and Active Directory.

Go (golang) has better support for a wider variety of platforms, but it has
serious bugs on non-Linux platforms (as of go 1.7.1) that make it unsuitable
for the enterprise. Basically, whatever customized Linux distro used at Google
will likely get the most time from superstars on the go team. Also, calling C
functions and callbacks from C can cause all sorts of issues, and the "cgo
isn't go" mantra scares me when considering Windows desktops, etc. as a target
platform.

C++ is making a comeback and I like C++14, but backwards compatibility and
other factors make it too complex compared to other languages. But at least it
supports all the major platforms and there's no worry it'll drop support for
one due to vendor politics.

Rust looks promising from a cross-platform perspective like C++, but Rust is
still way too new for the enterprise just like Swift. Perhaps in five years,
it'll stand a chance in the enterprise (as much as C++) and without the
complex baggage from inheriting decades of backward compatibility.

Who knows what'll happen by the time Swift or Rust is considered enterprise
ready and truly cross platform -- maybe in 5 years, there will be a cross-
platform native compiled F# that doesn't heavily favor one vendor's platform
or nim might skyrocket out of obscurity -- who knows, but its fun to imagine
and do some coding to make the future brighter.

------
mrweasel
Enterprises value stability over all else. Given the rather large changes to
Swift 3, I don't see Swift as being "Enterprise Ready" just yet. That would
require someone committing to maintain and patch Swift 3 for at least the next
five, but preferably ten years.

------
freewizard
It's probably just IBM luring attention for its cloud service. I can't read
anything other than that from this piece.

The real sign would be one day Apple telling us they are writing iCloud
service or at least some significant part of it in Swift for Linux.

------
melling
The article mentions IBM's web framework:

[https://developer.ibm.com/swift/kitura/](https://developer.ibm.com/swift/kitura/)

Has this one gained the most traction?

~~~
supster
I would say this one has the most traction so far:
[http://vapor.codes/](http://vapor.codes/)
[http://vapor.university/](http://vapor.university/)

------
Razengan
For those that missed it, IBM showed some promising stuff in the "Going
Server-side with Swift Open Source" talk this WWDC:

[https://developer.apple.com/videos/play/wwdc2016/415/](https://developer.apple.com/videos/play/wwdc2016/415/)

------
MrGando
Well, that's just not true IMHO. They need the ABI stability or I wouldn't do
anything for enterprise. Also, Foundation getting open sourced is a huge part
of this to avoid using third party libs for a huge amount of things (HTTP
requests for example).

------
cheriot
I see a bunch of stuff in their github ([https://github.com/ibm-
swift](https://github.com/ibm-swift)), but not the language implementation
itself. Does anyone know what its license is?

~~~
psuter
Do you mean [https://github.com/apple/swift](https://github.com/apple/swift) ?

~~~
hellofunk
The post is about IBM's Swift implementation.

~~~
supster
Swift, the language, is from Apple. IBM simply has built a bunch of tools for
Swift and would like to sell consulting services around them.

~~~
hellofunk
Yes, but I thought the question you replied to was about IBM's implementation,
and thus their github page for it.

~~~
stepanhruda
What? They don't have their own implementation...

~~~
euyyn
I've heard they ported GCD to Linux, though. Would love for that to be open-
source.

~~~
alblue
It already is, and IBM did do a lot of the work in porting it:

[https://github.com/apple/swift-corelibs-
libdispatch](https://github.com/apple/swift-corelibs-libdispatch)

------
geodel
I think IBM might be moving Java/Websphere technical staff to Swift.
Considering new versions Java/JavaEE are getting delayed so IBM would prefer
to use Swift increasingly instead of Java.

~~~
pjmlp
Not sure, but they are already making J9 modular and using its JIT and GC for
their own implementations of Python and Ruby.

So I would say IBM is scattering their eggs across multiple baskets.

~~~
geodel
Indeed. IBM is also investing a lot in Go by porting it to their hardware and
OS primarily for blockchain stuff.

I think it is more of thing that Swift has more interesting
Client/Server/Mobile story than Java. Given that I do not see why IBM would
not cut investments in Java.

------
protomyth
How is it going with Linux, Windows, BSD, etc. platforms? Anyone with
experience using Swift on something other than an Apple product have a story?

~~~
Sk1pp
I'm pretty sure I saw a port for Arch as well.

~~~
AsyncAwait
I wouldn't call it a "port", but basically the Ubuntu binaries are universal
enough that you can unpack the .deb, symlink a few things to match Ubuntu
naming and run the binaries on Arch.

------
Zelphyr
I have serious reservations about IBM's involvement in Swift. I spoke with
someone _very_ high up in the Sun organization once who said IBM was the worst
thing to happen to the JDK. Which is saying something since IBM wrote most of
the JDK.

IBM seems to make a mess of everything they touch. I really wish Apple had
taken a "Thanks but no thanks" stance when approached by IBM.

------
Apocryphon
So is this finally the result of the Apple/IBM partnership that was announced
a few years ago?

~~~
aaronbrager
No, this is one small piece of the partnership. The companies have been
partnering on iOS apps for specific industries since the announcement.

------
themihai
Which version (Swift 2, 3 or 4)?

~~~
melling
Swift 3 is the version with large source change. It required a lot of
refactoring. Fortunately, many of the fixes were handled automatically by
Xcode. I'm keeping a list of changes:

[https://h4labs.wordpress.com/2016/09/17/my-ios-10-and-
swift-...](https://h4labs.wordpress.com/2016/09/17/my-ios-10-and-
swift-3-refactor-list/)

Any breaking changes going forward should be much less. Of course, you might
be in the camp that wants zero breaking changes, then Swift probably isn't for
you.

~~~
themihai
Do you really think Swift 3 is ready for enterprise usage? They say the core
lib is not ready yet for production usage[0]. It's not about how may breaking
changes I'm willing to take but in the enterprise world there is little
incentive to rewrite large code bases. Even in the start-up environment the
more code you write the less excited you are about breaking changes. Also
Xcode doesn't run on Linux or windows and last time I've checked MacOS was not
the the OS of choice in the enterprise world so Xcode is not an option. Next
claim I'm expecting is that Swift is ready for the InSight Mars lander
mission.

[0] [https://swift.org/core-libraries/](https://swift.org/core-libraries/)

~~~
melling
I haven't used Swift on the server yet, so I can't honestly say. I'll give it
a try soon.

However, it's probably best for devs who are already using it for apps (code
reuse, experience, etc). For other dev, I might try Elixir, for example, for
web dev. It is gaining a lot of momentum. A critical mass in adoption means
better support, quicker answers to questions, etc. We all can't pay IBM to
worry about the details.

------
barpet
I have access to books for Swift 1.0/2.0 as some has given them to me for
free. How much of it is useful when it comes to breaking changes that came
with 3.0 ?

~~~
aaronbrager
If you don't already know Swift you'll be wasting your time. Swift 3 looks and
behaves very differently from Swift 1. Fortunately, the Apple Swift book is
free, up to date, and written well.

~~~
morenoh149
[https://itunes.apple.com/us/book/swift-programming-
language/...](https://itunes.apple.com/us/book/swift-programming-
language/id881256329?mt=11)

------
bryansum
"IBM says it's ready to receive its next Apple check"

