Tonight I fore-went (is this a legal word?) my Cocoa coding time to write this very article about a topic that has begun to burn in my heart and I just have to get it out into cyberspace to get a diskussion going.
You and me and lots of other iPhone developers have strenghts and weeknesses. Some of us can code really well, others are great at design and there are also some people who excel at marketing iPhone apps. There are some commonalities amongst us as well, besides of 99% having a physical iPhone and 66% using twitter to build their network. We all have Internet, as benign as this may sound. We all have websites that have some information on the apps we have in the app store. We are advertising ourselves to the world. Hoping to get noticed. Looking for help. Or simply looking to make as much money as possible with the jewels they have polished in endless hours.
Static, non-machine-readable HTML. Sometimes even worse: Flash! Looking great, but achieving nothing except a good feeling for the person who created it. But that’s just Web 1.0.
A few of us took the next evolutionary step and started to write in forums (the official one as well as the largest non-official one) and get business-centric profiles on facebook or Xing. That’s Web 2.0.
But still those are information silos, you don’t own your posts, you don’t own your content on “social networks”. I say “That’s passé!” Here I am proposing Web 3.0 and all participating iPhone developers will benefit.
The fundamental need that I am trying to address with this proposal is to create a way for iPhone developers to find their peers. Find someone who talks their language, or is close enough geographically to meet and discuss ideas with over coffee.Starbucks, anyone?
My first thought was to create an online DB with a web form to allow people to enter their details, but then it hit me: that’s < 3.0 and I have sworn an oath to my coding god to never touch anything that does not adhere to the fundamental law of web 3.0: “RAW DATA NOW”. I would have created yet another silo and you would not have owned the data you had entered there.
They say that web 2.0 is about user-generated content, but you can claim content as being your own only if it is on your own blog and you can modify or even erase it at a whim. I believe that the benefits of web 2.0 can only be truly realized when you make your properties machine-readable. The same goes for any other information about your apps. There are countless websites out there which scour the iTunes XML data for information about apps. But just as countless they are useless. Very few add value, most use this as free content that is their substrate on which they plant their tradedouble links. That’s the modern form of spam: repurpose other people’s content with your own pay-per-clickthrough links and make 5% on every app sale.
I propose to wholeheartedly step into Web 3.0 by creating an XML schema or protocol that allows every developer or development company to publish meta information about themselves on their web site root. This schema would be similar to RSS or FOAF in that it would be present as link rel=”alternate” in your HTML pages. So I might have an XML file on my blog like this: http://www.cocoanetics.com/iphonedev.xml for example.
The schema of such an XML file would have to be defined reusing as many previously defined xml modules as possible. For example I would put in ICBM information into the file so that you could find developers who are close to you.
I think it’s best to think of developer and app entities as objects non unsimilar to Cocoa classes. Only difference would be that URLs are the pointers, the class definition would be an XML schema and class methods would be endpoints of XML-RPC, SOAP or REST based scripts.
Off the top of my head this is the information that I think would be useful:
- A permalink to the master Xml. If somebody makes a copy he should preserve this link and treat is as the primary key. This link will also be the source from which to refresh the data from.
- Name or Nickname of the developer
- if this is a developer or corporate entity
- Link to the developer’s blog rss feed
- A .profile or .project where the developer can write in freeform text what he is currently working on
- Several ways of contact: e-mail, twitter, etc.
- Artist ID of the developer to be able to directly link to all his apps on the store
- Languages understood
- App IDs, Names and Icon.png of all your apps on the store. This could be used to automatically construct a signature that has your apps’s icons with links to the store. Maybe even more meta information if it’s useful to trade it, like the release notes for the latest versions. Thinking about it, maybe in the developer XML there should only be links to XML files that would represent the individual apps the URL of those XML files again will be the permalink.
- if the dev is interested in: partnering, specific resources, training, providing training, etc.
- and then links to other such XML files of other developers. If a process is retrieving this developers XML file it should also provide him with at least another developers key URL. Also there should be sort of an approval or ranking scheme to such outgoing URLs so that I can say e.g. developer A I have successfully partnered with or developer B I know personally or developer C I don’t know
- You should also have a possibility to specify if you purchased another developer’s app and how you liked it. The app information would contain a link back to your review or rating which is still on your web server, so every dev could validate that a statement about your app is really coming from the person you say it does. If you write up your reviews in your blog, then the review’s permalink should be present here.
Having a basic XML structure will enable most people without web development capabilities to participate in the network and their information will get seeded. I expect for people to start spidering these XML files to create searchable databases of developers which could also be searched for local peers.
Developers on a higher level will also be able to create or use open-source solutions to provide instance methods for their online objects. For example to aggregate links that are presented to other XML iphonedev files. So one web server should be able to ping a certain number of known developers to inform them when there is a new peer. Also if there are significant changes this peer-to-peer network should pass on such information.
I absolutely invite your ideas or expertise in web apis so that we can collaborate on establishing the best, most useful spec. Who thinks this is a good idea? I invite you to share your thoughts.
Can this benefit a great number of iPhone developers who currently struggle to get their solo-projects done? Or do you think that this would only increase the number of people sticking around and preventing the self-cleansing process of the iPhone developer community?
Categories: Peer Review
I would take a look at the diso-project (http://diso-project.org), specifically Microformats & XFN.