Soji Yamakawa wrote:
Maybe I am old minded. I know I am. I still believe that computers must basically work stand alone. Network should enhance the capability, but the computer must function when cut off from the network. Purchased software or downloaded software should be usable as long as I take good care of the platform and backup media. I strongly believe that it is the users' right. Other than the code written for salary, programmers must be allowed to freely release code written for fun or for hobby. I strongly believe that it is the programmers' right.
But, what about online application stores like PlayStore and AppStore? Google and Apple can arbitrarily kill an application from their stores. In fact those cases have happened and been on the news. From the user point of view, an application suddenly disappears and becomes unusable. From the programmer's point of view, it is a violation of the right to release a code.
PlayStore and AppStore don't have to delete an application. Apple and Google casually modify or delete APIs, making old application unusable. (u2fly's note: this is not true; few Android developers already reported in last few month that their apps deleted from Google Play without any described reason)
When I was young, the API specifications were not taken lightly. It was the platform developers/vendors' responsibility to maintain those published APIs. Some of them became technological debt, in which case old API functions may have become implemented on a compatibility layer and slow down, but still at least were functional. Now Apple is threatening to drop support for OpenGL. I am not saying the operating system should keep supporting poorly-written programs, programs using undocumented APIs, or with wrong usage of APIs. If an application strictly adheres to the published API specification, it should be supported in the future versions. I also understand that when CPU changes, or bitness changes (like 32-bit to 64-bit), or substantial hardware change, I understand some APIs gets difficult to maintain. But, otherwise APIs must not be casually changed or dropped. It's a mass murder of applications, I think.
As long as you have a web server, you can release your web app freely, but that is as long as you keep paying for your web server. Actually, in my experience many of Web apps disappear when I visit the same URL again.
So, maybe I choose to write only for Windows, then unless I code-sign my binary, the user is presented with a threatening security warning discouraging the user from running my executable. Ok. I am not saying code-sign is evil. I 100% agree that it is important to make clear the origin of the program. What's evil is the code-sign used to cost prohibitingly pricy, now even if I decide to spend $$$, certificate authorities united and stopped selling code-signing certificate to individual programmers. A private company, with absolutely no legal obligation, can arbitrarily decide whose program can be trusted.
Only option left is full open source. I personally believe that the programmer must have a right to choose in what format the program is released. It is not right to be forced to open all source code when someone wants to make a program available to public.
It is outrageous that private companies have right to decide whether a certain application can be made available to public or not. It is outrageous that a platform developers/vendors can arbitrarily disable applications in the name of version-up or security. It is outrageous that private companies have right to decide to whom those code-signing certificate is issued. I think it is ok to run a business for selling and managing those certificates, but they shouldn't be given an authority to decide who can make code open to public. It has been said that the regulation is way behind the technology. I don't think the current circumstance of software industry is healthy at all. The private companies have too much right regarding the fundamental users' and programmers' rights.
Of course I do understand those tech companies were unregulated in order to accelerate the development. Indeed by un-regulation those tech giants made millions of billions of trillions of dollars. Those money were re-invested for further development. That was then. But, is the technology growing that much now? Computers are getting just faster. Nothing else. I haven't seen anything that I felt really new. Even in this Artificial Intelligence bubble, the technology is not new. It is from the research traced back to late 1980s. Now computers got faster, it became practical, and people are finding new applications of machine learning (Or deep learning if you want to call. They are just the same thing.) Machine learning itself is not growing much. The current technologies are pretty mature. I think it is the time to think about the users' and programmers' right seriously.
One of my friends who was working for an auto company was saying that the auto maker is held responsible for a car once it is sold as long as it is working. Why a computer company is allowed to define product life cycle arbitrarily and stop supporting perfectly healthy hardware at will?
Those thought came to me while I was reading articles praising Apple Arcade (after losing my save data for Dragon Quest 5 and 7). Probably we will see masterpieces in Apple Arcade that should be in the computer-game hall of fame. Those titles will be eventually unplayable when the developer moves on to the next title. Miraculously I still keep a PlayStation1 working condition. I brought my Fujitsu FM-7 and FM TOWNS from my home, keeping them in working condition. Also I am keeping FM77AV and FM77AV40 I bought from Yahoo! auction in working condition. Therefore, if I want to run a historic old title released for those platforms, I still can. But, a title released as a subscription for a modern platform probably won't run after 30+ years. It is a loss for the users and loss for the developers who worked on the masterpiece.
There may be real damage from this culture already. I have been feeling the quality of the software in general, is falling like a rock. I very often feel like, is this a program written by a poor project scientist working for a college who is given the least priority in classroom assignment every semester? Commercial software give that feeling to me. Not free ones. Since a program can randomly be killed by the platform, programmers may not be motivated to write a long-lasting program. I have a feeling that programmers are not even motivated to write a stable program. They may be thinking they just release and update when someone complains. It is acceptable for some kind of applications for sure. But in other applications it is too late to release a fix after something catastrophic happened. I am suspecting this toxic culture in software development might have been a contributing factor for the Boeing 737 Max 8's MCAS software break down. (u2fly's note: this also happen with YSFlight; opened by me issue still not fixed and has no response from Soji)
If you are believing what software vendors are saying: you will pay less money with subscription-based software services, think again. Software vendors do it because you end up paying more. Probably much more.
In pay-once software packages, you have a choice in how often you get a major upgrade version. You had control in how much money per year you spend for specific software package. You don't have that control in the subscription-based software.
Now software vendors may be keeping the monthly payment low for the time being in order to lure people into the subscription services. But once you cannot leave their services, they will raise the price.
There would be good software developers who would provide a good stable software for a reasonable price. But, I foresee users end up subscribing out-of-control number of services and paying hundreds dollars per month only to get a software never working stably.
On top of it, since the users do not own executable packages, an excellent software masterpieces may not survive to the next generation. Nothing is good about the subscription-based software services.
Minimum thing I demand those subscription-based services is I want to be able to export whatever data I create with those programs into a common data format. That can be JSON or CSV or any file format that an external program can recognize. If it is easy enough to write a reader in C++ or Python, I can do the rest. Theat way I can transfer to a different software when I don't like the one I use. I don't want to be locked in to a specific software environment.