Buy a car and you would be lucky to have any original components other than the steering wheel and the stereo left after 200,000km, but software's digital nature lends it an air of immortality that leads many to believe it will last forever. Indeed there are BSD tools on my laptop that have been doing their job for 30 years. They will undoubtedly last another 30, but these tools are self contained, and unlike a great deal of modern software they don't interact with much less immortal third party APIs.
I considered this question when experimenting with cloud support for my iPad Clojure editor. Cloud evaluation of Clojure would improve the product, but I don't want to write and maintain the servers myself. Ideone offer superb, and free, cloud evaluation of Clojure. It would be the perfect solution right now. I could effortlessly add cloud evaluation to Lisping, but startups live fast and usually die young, so what happens if Ideone were to fail or to start charging? Customers would have paid me for an application with free cloud evaluation and they would no longer be getting it; I wouldn't be surprised if they demanded their money back.
Another example is Twitter's war with third party clients. Earlier this year, having built their service with the help of third party developers, they began to shut off access to their API. They have yet to use their nuclear option - an outright ban on third party clients - but it is not unlikely that they will do so one day. What then? Tweetbot and its competitors will no longer be fit for their advertised purpose. If a car failed like that you could get a new one.
In the case of a Twitter client you are paying for software to interact with Twitter's public API, so when that API ceases to exist, the developer cannot be held responsible, but it is a serious question with my Clojure editor. Ideone have a great service and they are doing well, but technology moves fast. It is almost inconceivable that any current 3rd party API will have survived in its current form in 10 years time, so if I were to base one of Lisping's core functionalities on a third party service then I am selling software with a built in expiry date.
There is plenty of precedent for "Best before" dates in the retail industry, but the difference between a cloud app that has lost its cloud and the mouldy block of Gouda in my fridge is that the Gouda came with a label clearly stating its expiry date. Software should come with the same guarantees. Please state how long you intend to support it for. Please state if you will update it when the
For me the solution was simple. I'm not a fan of the cloud, and I've always wanted to write an interpreter, so I've started writing an easily embeddable Clojure interpreter in C++. When it's mature I'll add it to Lisping. With a native interpreter, who knows, maybe Lisping will still be running on the 51st generation iPad. With luck I'll still be alive to add support for the lightsaber peripheral.
Posted on 10 November 2012
Slide to code blog is licensed under a Creative Commons Attribution 3.0 Unported License
Based on a work at http://slidetocode.com/blog