Companies like Apple, Google and Microsoft want you to work with their platform, their tools, their languages so that they may control and profit from your output. They want you to feel a part of the elite best who get all the newest capabilities and best support. This limitation allows them to make sure they stay competitive with their peers while pushing the limits of their own technology aggressively and without accountability.
Although this competition does promote faster development, the undocumented methods of this exploration and closed nature of the results encourages consumers and open source developers to have to conduct our own experiments to solve the same problems and yields redundancy and slower overall development. This pattern of individualism is visible in many natural systems and is not unique to software. Companies like Apple, while driven towards innovation by competition, ultimately fail to contribute to a better understanding of technology and a more informed developer on a macro level. Their own ecosystem is bettered at the cost of others, which wouldnt be a problem for Apple if it werent that there ecosystem is sustained by the macro open-source community. Individualism, without regard to the other, is poison to evolution.
Apple, in particular, has created a very advanced and engaging platform for developing programs for the Macintosh and iOS platforms. If youve read this far than you are probably familiar with Xcode and their accompanying World Wide Developers Conference. These efforts, while staggering in their depth and beauty, are ultimately undermining to the open source software community and encourage developers to adopt an us-vs-them attitude which encourages people to take sides in a false fight. For maximum development and advancement, every developer needs to publish open source, well documented software on platforms managed by a community built of users and contributors alike.
A perfect example of a successful open-source ecosystem is the international scientific research community. Many people, working on many problems, with some overlap and some discourse with well documented results and methodologies yields faster, higher quality knowledge, more availability and rewards exploration of the unknown. In open source communities, people who explore the new and create the bold are rewarded the highest. In closed source marketplaces, people who recreate the successful, have the most resources and play by the rules, are rewarded the most.
Which do you want to be a part of?
Im not trying to say that these companies have sinister intentions. I do believe that they have many noble engineers working to try to make the very best tools for developers. The issue I take is that those engineers brilliance could be put to use developing open source software for everyone, regardless of what platform the consumer wants to create for. In some cases these companies do make open source contributions, such as WebKit, but even these efforts cause rifts in the open source community! We see this every time we try to make a web application that works on all browsers and it is the global bane of every web developer on earth. Mozilla, Chromium and WebKit all claim to be the leaders in open source web development, yet step on each others toes when they try to support each other.
Rich open source communities encourage rapid experimentation, faster development, better testing and encourage the sharing of information. I think closed-source communities like iOS are rogue ecosystems, working against the host population (intentionally or unintentionally) and will eventually be shed as extreneous to the purpose of innovation for all.
The browser that runs that remarkable tool youve created is already available on every device you own. Although in 2014, there are massive performance variances between individual devices, your web site is developed with one codebase, is published in one place and works reasonably well on all devices. Extra effort is required to create an excellent performing and responsive app or site, but for all intents and purposes, an app developed on a stable version of Chrome, Safari or Firefox will run on every other browser.
How can this not be the future? Why would we continue to have to have specialized developers working on ports of the same application for every different platform? Its totally redundant and a waste of our energy.
This pattern distracts developers from focussing on supporting the right platforms, the ones that are committed to cross-platform compatibility and open-source practices.
Companies like Apple closely watch the software you create, not because theyre interested in hearing what improvements you may want to make to iOS, but because they want to make sure they stay on top of the latest trends and uses. Software developers role in innovation is so quickly forgotten. I remember a time when Apple didnt make as much of its own software as it does now, when mac developers were making real money making innovative solutions for the Macintosh platform.
But Apple has eroded this in recent years having been found guilty time and time again for honouring its most innovative developers with the silent absorption of their products without reward. Because you developed your software with their tools, your product is ultimately theirs if they wish to profit from it. Im going to be as bold as to say that this is wrong and will be a nail in the closed-source development communities coffin.
You can modify, change or delete your app at any time on the web. You can rapidly iterate your product and engage in fast feedback loops. You can measure response to new ideas in real time and listen to the feedback of your users in much more human ways. This creates a one to one relationship with the user and developer which is missing from app marketplaces like Apples. I expect that companies like Apple are working on creating faster approval processes and better feedback systems, but ultimately this is one advantage that the web offers that other marketplaces dont. It is a powerful difference that should not be underestimated by developers torn between developing with open and closed source tools.
The products that a browser runs on and your connection to the internet will probably never be free, but your ability to write whatever software you want will be! If you choose to use free and open source tools, your overhead is minimized which will give you more time to make better apps. I think this is one of a few key factors in the explosion of interest in software development over the last couple of years. There is an immense and rapidly growing trove of resources on the internet for web development which is becoming more and more accessible to anyone who wants to learn. It is also much easier in 2014 to make a digital product than a physical product, although this gap is rapidly closing with the advancement of consumer 3d manufacturing (printing) technology (another example of a radical open source community!).
The web is a perfect, beautiful expression of the freedom that is needed to sustain information. Its messy, no doubt, but it is a representation of how chaos is a key to the success of natural systems. We need individuals trying all kinds of crazy and new things all the time to find what works and what doesnt.
The human races successful evolution is a product of the immense diversity of our planet. An ecosystem that encourages sameness will always be vulnerable to stagnation. We see this in the history of our planet on every scale and will indeed see it again in times to come. In software terms, this means that an ecosystem that encourages developers to use one tool, in one way, to create on one platform is unusually vulnerable to missing out on the developments and advancements of the other. This causes competition between platforms (companies) and encourages the waste of energy.
I dont believe in dogmatism. I dont want you to read what Ive written and get the impression that I am a closed minded person or that I havent considered the benefits of closed-source community development. Im still very new to web development and I dont want to come across as a self-proclaimed expert.
I am always learning and remain open to criticism and discourse. Please do comment on this and start a conversation with me. I believe strongly in what Ive written and I apply these paradigms to many facets of my life, outside of software creation. I love what I do and I want to see it get better and these are just my thoughts thus far in what I am sure will be a long, changing, path in the pursuit of excellence on the web.
My startup Volley is a web application and has a new version coming down the pipe which is an example of a site that takes advantage of the web as a platform for app distribution. We use rich gestures and a responsive design to create a native-like app experience that I am excited to show off to all who are interested. Leave a comment here for access to the beta version of volleyit.co
Thank you for listening