Apple and Independent Developers
Corleone writes "We've seen a realization recently that Microsoft isn't standing still with Longhorn, and countering Longhorn has been pushed to the forefront. That is why I found the concept of Apple being the larger danger in Rhapsody in Yellow so ironic. The author skirts the scary question: would Apple porting their frameworks to Linux give them undue influence over the direction of the free operating system movement? This is after recent reports saying missing programs are the biggest thing holding Linux back on the desktop. Macromedia has interest in their tools on Linux, surely many others are too. This would seem to allow thousands of companies a simple path to the Linux market but with Apple as the gateway. If not Apple, what of Microsoft porting their engine?"
Apple DOES help the open source community. Both Konqueror and FreeBSD are much improved thanks to Apple's contributions.
That CSS file that blocks ads
the important thing is the applications, not the underlying toolkits and frameworks
Applications are created using the underlying toolkits and frameworks. The higher the quality of these frameworks, the better the applications will be. The easier the frameworks are to develop with, more applications will be developed more quickly.
Its a chicken and egg sort of thing where the egg definately comes first.
-- Fighting mediocrity one bad post at a time.
Check out Qt (no not QuickTime). That toolkit provides an incredible amount of useful utilites and is very high quality. It runs on Linux, Mac OS X, and Windows. With a little bit of care, you can build applications that recompile to any of the aforementioned OSs.
As much as I respect Cocoa and Objective-C development on OS X, the one thing Apple really needs is a high quality C++ toolkit. Even though the benefits of Obj-C are worth it, it can be quite hard to convice developers to learn a completely different language to develop in (native language, so don't tell me Java). I'd really like to see Apple partner with Trolltech and include Qt by default in OS X and eliminate or reduce the fees for developers who target Qt/OS X.
-- Fighting mediocrity one bad post at a time.
Keep in mind that porting iTunes to win32 increased their potential userbase tenfold. Porting to linux? Pah. Yeah, they can add a number of users to their base that's even smaller than their native userbase. Sounds like a winning idea to me.
What it's missing is a few crucial pieces which are slowly starting to fall together
No. What is missing is the final (and most important) piece of the cross-platform idea - Windows. I'm a Mac guy, and I love Cocoa, and I've been a Linux user since 1994 and a Solaris user befor that, but I understand the realities of the world today. For a development platform like GNUStep to succeed, it has to be able to run on Windows and, and here's the kicker, act like a native Windows application.
If Apple were to throw their weight behind GNUstep ( a tough decision, but an interesting one which could potentially bode well for both Apple and the free software community ) we could have the outcome the author asks for... Apple pushing a disruptive technology based on their own frameworks into free software, and taking hold of the market.
I actually agree in this situation - the open source version, given the ability and cooperation from Apple, could flourish technically and allow cooperation between Apple and the free software community which extends past simply command line tools and support libraries, while Apple still eats its lunch on the interface and user experience side of things (in addition, just because Apple would allow third party developers to develop true cross-platform apps between itself and *nix (and, like I said earlier, Windows), there would not necessarily be a version of Final Cut Pro for Linux - you want the real Mac experience, for what Macs are really good for, you buy a Mac.
Wow, that's a long sentence.
That is indeed something that was pointed out in the article. Don't forget, however, Carbon is simply a stepping-stone API. It was created by Apple so their legacy developers wouldn't be caught out in the sands with a completely new OS and a completely new API. Apple knew that combination would be disastrous so they created a new API from scratch that was mostly source-compatible with the old one to allow for easy porting.
Carbon, however, will never be deployed on other platforms. It's a horrible, messy kludge composed of about 15 years of Macintosh API evolution plus the necessary changes to make it work on OS X. There's nothing about it that's appealing from a "beginning to code for" standpoint... it's just there for transition.
Cocoa has all that potential because it is a beautiful, clean API in a modern object-oriented language plus it already has cross-platform support in the form of GNUstep. The article decried the lack of interest in starting to code for Cocoa (and thus to create new Mac OS apps) by new developers precisely because it's only really supported on OS X and thus not attractive... I think GNUstep already proves that false to a degree and will do so further in the future.
Easier to use, yes. Easier to set up? No.
I have worked in a computer store as a tech before I moved on to becoming a consultant for small businesses. If someone made a linux distro that was easy to use for an average user (web browser, e-mail client, office suite), people could start using it.
I trained monkey, I mean, tech, can install linux just as easily as windows. The "average" user comes into the store or hires a consultant and pays $79+ to have windows reinstalled. The "average" user doesn't install windows at all. Or if they do, it is on a click once to restore your hard drive to factory settings sort of deal.
Sure, while a real linux power user is going to want an costumizable install, the average user needs a one-click install that is easy and intuitive to get started with.
Got Apathy?
i want 1 thing from linux, a standard config setup, and a way to access that in 3 ways...
1. gui. this should be windows like, checkboxes, textboxes, menu items... lickable guiness
2. command line, with flags, recompiling(if i have to), or sub commands of something to tweak an app.
3. text file config editting. just open it in vi or openoffice.org and change the 1 to a 0.
They all should work, on all apps, they should be able to switch from 1 to 3 to 2 seamlessly without hickups, and they should have clear documentation on what the hell each thing means.
Microsoft realized early on that in order for their platform to dominate, they MUST recruit as many third-party developers as possible. This is one of the main reasons, if not THE main reason, that Windows acquired its huge desktop market share. (make fun of Steve Ballmer for his "DEVELOPERS! DEVELOPERS! DEVELOPERS!" monkey dance if you want, but that's why he's a billionaire). Microsoft bends over backwards to help developers. They give away excellent development tools with excellent documentation and support, just so that you'll write Windows programs. They nearly kill themselves checking backwards compatibility with every Windows release, just to make sure your poorly-written Windows program doesn't break when Windows XP comes out.
.NET and Java are attracting developers, and Cocoa is not.
Apple seems to care about its users somewhat, but not at all about its developers. There just isn't the same level of outreach nor the same "developers come first" attitude as Microsoft. And not nearly as much care about compatibility. e.g. how many OSX programs broke with the OSX 1.2 and 1.3 updates?
Both companies offer excellent APIs that are specific to their platforms (e.g. DirectX on Windows and Cocoa on Mac). But Microsoft has an advantage here. If you write your program to use Windows-exclusive APIs, you still have 90% of the potential market. But if you use Apple-specific APIs, you cut yourself down to 10%. THAT is why
Any rational desktop software company will develop for Windows first, and then, if it seems worthwhile, they'll make a Mac port. There is a small market for Mac-only stuff but I don't think it's a reasonable business strategy to support ONLY the Mac. For one thing, Apple has a habit of shipping free products by surprise that demolish the market for an established Mac vendor. (how'd you like to be a Mac-only calendar/email application developer the day after iCal and Mail came out? or MetroWerks' Mac team after Xcode?). This is outright developer-hostile behavior.
...would like to have a Mac:
1. You open the box, plug it in, use it. End of story,
2. I know that it's built on *BSD,
3. It's not Windows.
Why I don't have a Mac:
1. Too expensive, can't afford it.
Why I would like to be using Linux:
1. It's free,
2. It's not MS Windows (therefore stable and secure).
Why I don't use Linux:
1. My must-have applications won't run on it (or at least not without some geek-tweak),
2. Experienced Linux users seem to be more interested in pissing-contests than helping new users.
Why I wish I didn't have to use MS Windows:
1. It sucks, it really does, no matter what MCSEs might shriek in its defence. I'm so sick of having to dance naked in the virus and spyware minefield every time I boot it up.
Why I use MS Windows:
1. What else am I gonna use? Refer previous sections.
When Apple drops their prices then I'll buy a Mac; or when Linux developers stop trying to be so damn 133t and focus on user-friendliness; and the must-use applications (or equivalents) I need become available for that OS, I'll give Linux another try.
You can sneer at me and all the others like me for being n00b luser whatevers (and most of you apparently think you have to), but not everybody has the free time necessary to learn all the arcane rules of the High Priest's OS.
I develop with Cocoa on OS X, and while it's is remarkably easy to program in once you're used to it, it's more than a little, shall we say, messy.
The classes contain endless numbers of "convenience" functions that don't really belong where they are. Witness that the STRING class has methods like stringByAppendingPathComponent, and similar other functions that should be in a separate class for paths. Meanwhile, Attributed strings do not respond to any of the standard string methods, although they do respond to methods to do things like load RTF files.
The problem is that Cocoa is not straightforward enough to be easy to program in without an intimate familiarity with the API. It's just too different from anything else out there. Now that I'm used to programming in it, I can develop an application faster than I ever could with windows APIs, but the learning curve makes it difficult.
The other thing about Cocoa, which the article doesn't quite get to saying explicitly, is that the design of the API itself actually makes it very difficult to get apps to the mac from other platforms.
Cocoa is designed to be easy for porting applications to other platforms. But you can't port applications to other platforms because Cocoa isn't available for other platforms. What Apple needs for their existing strategy to work is an API that is easy to port existing programs to. They sort of have this with carbon (hence why most applications that get ported from windows are written using carbon APIs), but they don't take advantage of a lot of features (like system services, and automatic spell checking) that only work with Cocoa programs.
It would be nice if Apple would port their APIs (or at least support something like GNUStep), but if they won't, then they need to make their "strong" API something that can easily be ported to. There are oddities in Cocoa that make incorporating code from anywhere else almost impossible.
In short, Apple's programming tools and their corporate strategy are incompatible. The article frames this as a problem with Apple's strategy, but it could just as easily be seen as the tools not fit for the job. Apple started out with Rhapsody to try and make the mac the premier program for development but somewhere in between changed their focus to getting existing software to the mac. Unfortunately, they didn't change the tools to match.
How exactly does Apple owe any of its success to Linux? Steve Jobs was in the Unix market before Linux was even a glimmer in Mr. Torvald's eye. Also , let's not forget Apple's previous Unix, AUX, or the fact that OSX IS BSD! The do however owe alot to the Opensource community. (Apache, FreeBSD, GNU, etc.)
Objective-C literally takes about 5 minutes to learn.
Well, I wouldn't go quite that far... When I've presented cocoa intro classes, I've generally covered the basics of Objective-C in a one-hour lecture.
My experience in learning Objective-C was that it took me about a day to be productive with it, and within a month I was an Obj-C language lawyer. Most people I've seen taking up Obj-C for the first time have a pretty good handle on it in about three days.
As for GNUStep, I'd say it's a commendable effort, but an unfunded volunteer project is always going to have difficulty tracking an API that a Fortune 500 company has under active development.
-jcr
The only title of honor that a tyrant can grant is "Enemy of the State."
Firstly, that blog was intense. Bordering, due to it's length, on the edge of unreadability, it was fascinating-not due to it's indepth-ness, but that it lightly touched on so many interrelated threads. (the wideness of the wide is the "depth" of the superficial)
He dared mention Rhapsody, for the love of gawd, HE DARED to MENTION it. Dazed,confused and oft bitterly disilussioned developers and dreamers bitten once by that dream never really have recovered- I loved her, she was so beautiful, but she was a....lie. Has enough time passed to heal the wounds of betrayal, could it be her beauty was just premature(ie. not 16 yet)
Rhapsody promised more than any other computing project worth mentioning in the last 20 years. It was friggin incredible. The entire landscape of desktop computing would be markedly different today if Rhapsody had ever materialized. But no. Apple killed it, killed the best project that they ever actually came up with.
The author of the blog appears to not have a clue about Linux-land. Neither did he mention GNUstep, nor did he acknowledge what is now being developed at X.org-ie.cairo+opengl+xdamages+xfixes+xcomposite. in other words the tech that will bring the GUI desktop of the Linux world into the 21st century-farther along that trajectory in fact than either Acqua or Longhorn.
If Apple would just open up their API's new apps could be developed for a combined market-Apple + Linux. Now is the time to overcome the desire for attaining windows compatibility-if app developers could count on a market of Apple and Linux users this would push both Apple and Linux beyond the effects of the chicken-egg dilemna which both have been struggling with
The propietary parts of Aqua are being realized now, in an opensource form, in cairo, which is in a state of very active development. If the GNUstep coders use cairo as the basis of their new developments they finally have an answer to the display postcript issues which have dogged them.There is already a great deal of convergence going on between the MACOSX and Linux world-if nothing more than the GNU utilities which compose our common toolkits.
Now is the time for Apple to heal wounds with the development community. They should open up their API's, provide exact documentation as to the point where cocoa and OpenStep meet and where the specific differences lie and they should support GNUstep as the basis for developing cross platform apps. With the developments at X.org ongoing GNUstep could be made very viable for such purposes in short order,ie GNUstep + cairo >= cocoa
I'm sure this is all just pipe-dream stuff, but combining the markets for Apple and desktop Linux just make sense for both Apple and Linux users....
Now someone with more of a clue about these issues-go ahead shoot this idea down...
It's also an up and coming userbase though. Linux is growing very quickly among the younger crowd and getting them interested in macintosh software is a good way to increase their userbase down the road.
It's also a "down-with-IP", "information wants to be free", "I don't want to pay for watching this movie", "I don't want to pay for this song", "down with even the most liberal forms of DRM" userbase.
I suspect Apple doesn't want to give *nix users a reason to not switch to Apple. They are forced to support QT on windows because if they don't, it won't stay relevent.
Plus, I believe several companies license QT from Apple for use on embedded systems running Linux, so porting it is not cost prohibitive.
But who gives a "flying fuck" anyway? I believe the Xine developers already reverse-engineered the codec and have a native version for Linux. Oh, right... Patents... *sigh*
Sticking feathers up your butt does not make you a chicken - Tyler Durden
Oddly enough, I reckon the disruptive technology on Mac OS X won't come from Apple - it will be C# and Mono... more specifically the PPC JIT. Give it another year and you'll start noticing quite a few .NET apps running on Mac OS X.
.NET framework blurs the boundary between client and server, or native app vs. sandboxed web app. vs ASP.NET web pages. Furthermore the C# developer base is growing rapidly.
Cocoa is a great technology, but it isn't agile enough. By that I mean that it's more monolithic application/client oriented, wheras the