By now, almost everyone who has an iPhone and who have downloaded apps from the App Store, will most likely know what 3rd-party software means, and by natural extension, who the 3rd-party software developers are. And everyone also most likely know that 3rd-party apps and 3rd-party developers are a good thing. This part of the equation extends the functionality as well as heightens the entertainment value of the iPhone. They turn the iPhone into a much more versatile mobile platform.
But has anyone heard of a 4th-party developer? Or a 4th-party app? Or is there even, and could there ever be, such a thing? I am not a developer and I don't know a thing about it. But by 4th-party developers, what I mean to say is that these are people who does not actually cobble the software in its entirety but who simply code a functional (4th-party) unit or units that 3rd-party developers can mesh into their applications, much like blocks of Legos.
In essence, 4th-party developers are intellectual suppliers, who are either independent or work with teams or groups of other people, who does not code complete programs, but only codes portions or units that can be welded, and maybe licensed, into complete applications. These specific pieces, other than the ones already provided for by Apple, provide additional functionalities to applications to make them better and more useful, which, in the end, will benefit end-users.
As an avid iPhone user, I am in that "second stage" where, instead of losing interest in 3rd-party apps, I continue to look and add better apps while discarding and replacing previously installed apps that I may no longer find useful. In the process, I feel I am becoming more and more selective and discriminating (as most iPhone users probably are) in my choices (and party because I know I can only install so many number of apps in the iPhone at any one time). There has been instances when I encounter apps that provide specific functions I want or need, but then I would go and use another app to take it to the next step in order to complete whatever it is I actually want to do and complete, and I thought, maybe, it would be great if two or more functions can be combined into a single app that will allow me to complete what I wanted to do from start to finish. If 3rd-party apps can use, access, add or connect to existing and standardized functional components such as the address book, email, camera, and browser, is it possible for 3rd-party apps to connect, access, and use or pass on the process to another 3rd-party application in a seamlessly integrated fashion?
For instance, one of the iPhone apps I have come to love is AirMe (AirMe). Once configured (which is easy to do), I find it so convenient to just snap a photo with the iPhone's camera from within AirMe and post it straight to Facebook also from within AirMe. I am amazed at the fact that AirMe can do this very, very well. (Except, of course, for the fact that I can't figure out why I need to go to Facebook to give it permission to actually show the uploaded photos. Or, maybe, I just don't know how to configure this thing.) But then again, there are instances when I would have wanted to at least tweak the images before sharing it. AirMe allows me to do two things, but not another thing: touch up an image.
Which is why, one other software I have grown to love, which I feel have so much potential, is CameraBag (Nevercenter). I can also take pictures from within CameraBag. And, with its built-in preset image enhancers, fix my photos to make them look so much better. But then, with the current version, I have no way of sending or sharing the photos within CameraBag. I can't email it or send it to any of the popular photo-sharing and online networking sites such as Flickr, Tumblr or Facebook. I can only save it, and then, using a different application, either email it or upload it online.
Perhaps, in time, many 3rd-party applications will eventually add or combine discreet tasks into a single application so that users won't have to resort to opening 3 to 4 different applications in succession just to be able to complete what may essentially be viewed as an singular, integrated activity. Perhaps 3rd party developers can also add units or building blocks that will connect one 3rd-party app to the others. Maybe, within the framework of Apple's development kit, these 3rd-party jumpers, will be possible (or perhaps, it may even be already possible).
With the lifting of the NDA, developers can now talk to each other, and can collaborate. And the good that it can do is to foster meaningful collaboration. Maybe we will now see one developer doing one interesting thing collaborating with another who is doing another interesting thing, and so on and so on. In this collaborative processes, they can fuse their work together into a single software or seamlessly connect to each other so that the sequence of naturally integrated tasks can be done. Or, maybe, if at all possible, some would chooose to become 4th-party software developers that can perform discrete functions or serve as connectors, where they can create, develop and license their work to be added into 3rd-party apps.
"4th-party" developers are known as component vendors, and have been around for about as long as commercial software itself. At their simplest, component vendors supply source code libraries; at their most complex, they provide pre-built, "black box" binaries that can easily be linked into an application. The .VBX (and later .OCX) binary component specification, including both process and visual libraries, are arguably *the* reason for the widespread adoption and popularity of Microsoft's pre-.Net Visual Basic language. Software components can provide huge increases in productivity -- in some cases, reducing the time required to implement a specific feature from a couple of weeks to a few hours. I'm sure there's some component development work going on in the iPhone arena, but the only thing I'm currently aware of is an advertisement display system.
You talk of common shared components and the advantages they could bring. You're theoretically right, but there is a downside to this: Windows developers call it "DLL Hell". It's when multiple, slightly incompatible versions of a component are required by different applications. Imagine ACME Corp releases version 1.0 of iWidget. Two programs, "FooTracker" and "BarMaster" each use this component to share information. After a short time, ACME releases version 1.1 of iWidget. This version adds a couple of things, but changes the behavior of one of the existing commands to return an error when data is not available (the original, erroneously, failed without error). The programmers behind FooTracker update their software to use the new features of version 1.1, and add the additional code to trap the data not available error. The BarMaster folks haven't done so yet -- they're busy adding new features to their app. Or maybe they have updated the current version, but the update is awaiting approval.
At this point, we have two programs, each expecting a different version (and different behavior) of the component. If this is truly a shared component, installed on the phone only once, one of these two programs is going to break. If each version maintains its own copy of iWidget, the iWidget itself may have difficulties sharing information or capabilities.
I'm not an iPhone developer. I don't know exactly how iPhone apps are packaged, nor am I aware of the degree of cross-application sharing possible (remember, there are security issues, too). What I do know is that as you add complexity to a system, which is what you're getting at with shared components, you increase the brittleness of that system, and up the odds that something will break. Beware of what you wish for -- you might just get it.
Once again, this looks like complete jumbled ass in RSS.
What you are talking about are components. When a component conforms to an interface (plug) defined by a specific application framework it is called a plug-in. Plug-ins are specifically denied under Apple iPhone developer agreements as they bring up additional security issues. In fact there is currently no supported way, under the iPhone security framework, for applications from different vendors to interact in any way whatsoever. Apple considers the iPhone OS the framework, and the 3rd party apps the plug-ins. I would not expect that Apple will allow any third-party to take that role. As such we will be relying on Apple to officially develope an enhanced OS framework that supports defined interaction between third party componenents through the OS. Don't hold your breath!
RE: RSS Reader, thanks for letting us know about this. I've fixed this entry and will take a look at what we can do to make all entries display correctly.
I'm sure VOIP applications will someday come out for the ipod touch and the bluetooth chip in the ipod touch will be activated.
I just wish there was a small programming package 'within' the iphone, like squeak or basic on the apple IIs
@stang:
Excellent commentary. I've seen "DLL Hell" in playing World of Warcraft. There's an incredible variety of mods out there, and most of them require you to also have other mods. And they're all being updated on different schedules. It's an incredible pain.