I switched from FreeBSD as my desktop to OSX about four years ago because:
a) I needed a unix based desktop
b) I needed end user components (browser, printing, etc.) that just worked
Circa 2008, everything in Safari "just worked" - every site, every player, every piece of embedded bullshit on every little web 2.0 site blah blah blah.
But now I need to manually futz around with flash every two weeks to keep it working ... and now java as well ?
I think OSX still has an edge for me, in terms of getting things done, due to printing and ... ? It's getting awfully close to even, though.
Since I was the lone developer using windows at my workplace, I decided to give Apple/OSX a fair shake. The fact OSX was unix based seemed awesome to me (some of my projects are in C).
Then began the hell of trying to do anything "unixy" on OSX. Custom libraries just for the mac (custom libev??), needing to install XCode Dev Tools to get gcc compiler(???). Sigh.
In the end I just ended up running a CentOS VM in virtualbox, and I do my development there. The ONLY benefit I currently gain from a Mac is creating iOS apps.
OS X is indeed a rather nasty Unix platform right now because Apple in the midst of a long drawn out transition away from GCC. They are shipping a completely outdated GCC and an obsolete libstdc++, yet most libraries are still compiled with that ancient libstdc++.
I tried to use LLVM's libc++ instead but I had to recompile so many libraries and make sure the dynamic linker actually picks them up that it was just too big of a hassle. I don't see light at the end of that tunnel right now.
I'm thinking of giving Linux another try as a development platform.
Apple really follows the tradition of commercial UNIX: An ugly thrown together pile of shit as userland and third party libraries. It's worse now with their fear of GPLv3. But even before GPLv3 there were issues. Sometimes you had to wonder where Apple even got the source for such ancient tools. There were security bugs that had been fixed in *BSD or GNU 10 years earlier.
They are shipping a heavily modified GCC that originally was forked in 2008. The version of GCC they ship is entirely based on LLVM via Clang and is intended to be a hold-over for everything to transition to Clang over LLVM.
If you were on Windows you'd need to install Visual Studio just to get a compiler. XCode is similar. You haven't seen hell until you try and use Cygwin on Windows to get anything "unixy" done.
It sounds like you weren't using MacPorts or Homebrew to build your libraries. They're a lot closer to the distributions you see on Linux and BSD.
I didn't know Microsoft had a stand-alone compiler, but I'm not even sure what such a thing would be used for other than to be embedded in some other software.
How is cygwin any better than a package manager like MacPorts or Homebrew?
If you're having this much trouble with shared libraries, you're doing something quite odd. They're usually less obnoxious than their equivalent .DLL files.
Apple has gone to great lengths to get fully POSIX certified. As far as the libraries go, they're nearly identical to their Linux or BSD counterparts. The number of platform-specific issues you'll have to deal with when using standard versions of the libraries are usually small.
In looking through open source, I always see a lot more of `#ifdef WINDOWS` than I do for anything OS X specific, especially in the networking and threading departments.
There's no need to install XCode in order to have GCC/LLVM and satellite programs. Go to connect.apple.com, authenticate and download the "Command Line Tools (OS X version) for XCode."
For developer tools, check out the command-line developer tools: https://developer.apple.com/downloads/index.action?=command%... Kenneth Reitz worked with someone at Apple to get a small (~100MB) package containing what you need for opensource work without the full XCode.
You should be using homebrew: it's been a LONG time since I've needed to do anything unusual to get most OSS web & media apps built. "brew install libev" and get on with life.
OSX is not "unix based". OS X is unix. And it comes with php, ruby, python installed.
I remember having to get gcc toolchain on linux too, maybe it has changed since.
A thousand times this. I used OSX at one job where everyone else was too and was appalled at how bad it is for getting work done. It's pretty and shiny but broken by design in terms of usability. Switching windows is a pain in the ass (different shortcuts to 'alt-tab' between windows of the same application), maximizing a window doesn't work properly, no way to change the window manager. Those are just my gripes with the GUI. As parent pointed out, the best way to do *nix-based work on OSX is to run linux on a VM. This throws the 'is unix-like' argument out the window.
So a crap GUI, crippled CLI, very questionable company policies and politics and to top it off it costs twice as much as everything else. You have to be out of your mind to buy into this.
> Switching windows is a pain in the ass (different shortcuts to 'alt-tab' between windows of the same application)
This has been standard for many years: Command-Tab switches applications, Command-` switches windows within an app. If that doesn't work, it's because an application vendor has taken specific measures to break it - something which is possible on any platform and should be reported as a bug.
As for doing Unix work, again, this is just griping: you're blaming OS X for things which you either didn't learn or where the upstream vendor has hard-coded Linux-isms, which is increasingly rare. The combination of the command-line developer tools and homebrew means that for most people running linux in a VM useful only for final validation testing.
Mostly the window switching is weird for people as the metaphor nearly everyone is used to is 'command + tab switches window' whereas OS X is 'command + tab switches application'. I actually prefer it that way, but it's not for everyone.
It's funny when people complain that Apple's GUI isn't like the OSes that copied them... When in fact that's because they copied them wrong... :\
I agree there are crippled parts to OSX's CLI, but would be curious to know which bits you think are crippled? As from your other assertions, I suspect they are shallow.
I'm with you. Switched from Linux in about 2003, but lately I've been trying to get back into Linux (Ubuntu, as if that matters). I feel like the walls are closing in and I don't like it.
> But now I need to manually futz around with flash every two weeks to keep it working ... and now java as well ?
I don't understand how the java plugin is an issue. It's been disabled on all my machines for the last 4 years, and I don't remember any instance where I'd have whished to enable that thing.
Same in Germany if you want to file your taxes online.
However, using a java applet to login is slow and painful. Maybe this move my Apple will increase support costs and encourage these govt agencies to drop the java requirement.
I found out yesterday that songkick's itunes importer is an applet.
I think for some things applets may still be the best solution, though of course it's a shrinking market.
You won't find Java/Applets on your usual flyby website hoping to capture you in your procrastination time, nor in one the usual tech sites.
However, it's used in many more specialized areas.
Here's a few areas I've used it recently:
* HP integrated Lights Out (i.e. your server appears dead, you fire up a browser, gets a java applet with direct access to the server/bios)
* My bank. Seems most online banking here in Europe use java applets. This is a common case. There's millions of people, non-tech people, that wants online access to their bank.
* Provisioning a point to point radio link (the management app was a Java webapp - started with java web start, not an applet though)
Some banks rely on Java. Also, I guess a lot of browser-based management of enterprise computing "stuff" runs as a Java applets as well. I've used server and SAN managers that require Java.
Really? If you want these plugins, just do the one-time install when you first encounter the Missing Plug-In message, and then everything will "just work" again. (Well, perhaps you'll have worse battery life and maybe a less secure system.) There's a reason why that error message has a button next to it that makes it really easy to install the missing piece, as opposed to hunting for the right software on the Internet.
Can you be more specific about needing to "manually futz around with flash every two weeks"? I'm guessing you mean software updates, but I have a hard time believing that Flash stops working unless you update it. If you don't value the added security of having Flash updates decoupled from OS X releases, then you can just tell Flash to stop prompting you to update (or better, just tell it to do so automatically).
I'm curious what you're using that requires flash. as far as i can tell, it's pretty much dead. youtube and vimeo both support HTML5, and other than that it's just ads and games.
Youtube HTML5 is experimental and not production quality. Many (most?) videos pop up a "Flash player is required" error when you try to access them even after turning on html5 on.
Probably something to do with ads, random joe videos have
a high success rate and videos from the youtube front page low.
Predominately the ones that won't play in HTML5 are the ones with advertising support on, seems YouTube hasn't gotten the ad overlays working properly (or something) and they've not gone full HTML5 yet.
They'll happily serve h264 versions of those to mobile devices, however, so if you enable debugging in safari you can switch the user agent to 'iPad' from the 'develop' menu and the page will reload and work just fine. You don't get the high def options though.
I wouldn't say 'many', a while ago that was more true, but recently all the ones I've tried work fine with this trick, whereas only about half the videos play in 'desktop' safari sans flash.
Also, there is more video on the internet than youtube and vimeo, there is decent software done in flash (such as balsamiq mockups) and sometimes it's the only way to get to some content.
I have flash disabled with click2play and I end up starting it _at least_ once a day.
Gaming is a front where Flash still ahead of HTML5. HTML5 is getting there but at the moment Flash provides a more integrated solution for developers who want to build web games.
Loads of websites here in Taiwan. While the rest of the world you could say "moved on", that's just not true, other places keep making the same crappy websites like it's 1997...
The biggest users nowadays are probably porn websites, but you still find it every where on little things. Our national weather observatory, for example, uses a Flash based map to show animated forecasts.
OSX still just works, Chrome and Firefox are easy browsers to keep working, there's not really any maintenance required.
That said these are not really reasons to switch operating systems, there's nothing particularly difficult about using chrome or Firefox on Linux, or for that matter, printing.
> But now I need to manually futz around with flash every two weeks to keep it working ... and now java as well ?
Just disable Flash in Safari until Adobe has a Chrome-level automatic update mechanism. I use Chrome for precisely that reason - I haven't had to think about Flash since they started packaging it. I've had Flash disabled in Safari for a long time and almost everything works without it - the only thing I notice regularly missing are the copy/paste convenience helpers on sites like bit.ly.
As for Java, I have exactly one site where I need to run it - the Web100 NDT testers - and that's both a niche case and hardly compelling versus the security considerations of using a product from a recklessly inattentive maintainer.
Of course, they were already installing the Java plugin but disabling it by default; not sure why they needed to take the extra step of removing the plugin completely.
Neither Flash nor Java has the best security track record. Java lately has been embarrassingly bad
People say this sort of thing a lot, and obviously with some justification.
However, it's not as if the browsers themselves have a great track record on security either. Firefox had to yank their last update shortly after making it available because of a severe problem, and the update was itself intended to fix quite a few serious security vulnerabilities. Every month we get around to update day for Windows and there are typically a handful of security fixes for IE pushed out. And so on.
It seems fairly clear by now that no-one actually makes a really secure browser yet, with or without plug-ins. It's just a problem that we haven't yet learned to solve, at least not without sacrificing some other benefit that the teams making mainstream browsers value more and choose to prioritise.
If we need independent security tools to keep browsing safe anyway, is avoiding plug-ins any more than a modest improvement?
(And I write this as someone who did once get hit by an undisclosed and unpatched exploit in Java, resulting in a complete reinstall. It wasn't fun. But I don't suppose it would have been any more fun if it had been a zero-day vulnerability in the browser itself.)
IIRC, the last non-Java security update I installed updated a bunch of image format libraries to fix exploitable vulnerabilities. We can't even safely decode static image files! I'm not sure how we expect to safely sandbox executable code, whether it's Flash, Java, Javascript, or anything else.
Even so, if Java's currently being exploited on a wide scale and Oracle's not having the greatest luck fixing the problems letting malware in, it seems prudent to direct people away from it unless they really, really need it.
Any well may be poisoned, but if you know this one is you'd avoid it and warn others, wouldn't you?
For me, the odd thing here is that they were already disabling running Java by default, which does a lot to defeat the drive-by download problem. Given that such a mechanism is in place, we already seem to have achieved the main goal you mentioned before: exploits don't "just work".
At that point, making Java "just work as long as you click somewhere to confirm you want it to" seems a reasonable policy to me. As many here have pointed out, reports of the death of Java applets serving useful purposes have been greatly exaggerated.
a) I needed a unix based desktop
b) I needed end user components (browser, printing, etc.) that just worked
Circa 2008, everything in Safari "just worked" - every site, every player, every piece of embedded bullshit on every little web 2.0 site blah blah blah.
But now I need to manually futz around with flash every two weeks to keep it working ... and now java as well ?
I think OSX still has an edge for me, in terms of getting things done, due to printing and ... ? It's getting awfully close to even, though.