Philosophy : Software Architecture Specific Philosophy

From bitrary
Jump to: navigation, search

Philosophy

Software Architecture


Introduction

Every project has culture based set of requirements combined with the requirements of the individuals, who order the project, and the requirements of the individuals, who carry out the project. For example, the Chief Executive Officer (CEO) types, who do not mind ratting out everything that is going on at their royal hierarchy, their corporation, to some supermafia, generally called as "a government", do not mind that government spy-ware sits at every computer of their royal hierarchy. Therefore the CEO types do not have any incentive to invest to development work that makes sure that the super-mafia spy-ware can not be secretly installed there, because what's the point of preventing secret installation, if the same thing is installed totally publicly, with the blessing of the CEO.

That explains, why the security related projects that are financed by corporate money, are a joke, like the weak-but-computationally-cheap-to-execute cryptography algorithms for the banks, "penetration testing" to see, if something absolutely trivial, something that script-kiddies can utilize, is left unpatched, etc.

That also explains, why the best funded GUI libraries will NEVER BE SECURE. Those, who have the money to pay for their development, have no incentive to make them secure. Fancy features are quickly stacked without giving security much thought.


Popularity must not be Counted on(archival copy)

From popular acceptance point of view the party with the greatest amount of money can do whatever it is technically capable of doing, because the majority of people have very low ambitions and if a person with a low ambitions is given a choice, leave a few murderers roaming for the name of not repressing dissidents or have some mafia take care of the murderers and kill, imprison, otherwise repress a few dissidents along the way, then the fate of the dissidents are irrelevant to the person with the low ambitions. Add to the mix a requirement that the usefulness of the dissidents are expressed through some explanation that requires multiple thinking steps and the dissident is rendered to be a totally irrelevant insect. The fact that those thinking steps sometimes require some capability to understand technical aspects, may be Information Technology, just worsens the prospects for the dissidents.

If the livelihood of the people with low ambitions depends on the mafia, like it is the case with state officials, pensioners, military officials, owners of companies that serve mostly, if not only, the super-mafia, then they have even less incentive to change the situation, to change the status quo. In most cases the business owners, who do not depend on contracts from super-mafia, tend to be stupid enough not to stand for their personal independence and liberties, including privacy, even if they end up like Jews in Nazi Germany, but, hey, to stand for one's independence and liberties one has to do more than just have sex and enjoy nice cars and that is clearly too high of a price to pay for most business owners. They would rather end up like the Jews in Nazi Germany or the business owners of Estonia during Stalin repressions.


Only Projects that are Developed by Fanatics for Non-monetary Reasons and have a near-zero burn rate Survive Long-term

All immediate dependencies of software projects that take a long time to develop and have deployments that have long life spans, must be kept up to date, functional, during the whole life span of the software projects that depend on them. Projects that strive for technical excellence, often take long time to develop and are not abandoned quickly.


Actions of supermafia (generally called as the Government), wars, market increasement by lawyers, economic recessions, but most often, actions of marketing departments in a form of buzz-word popularity shifts, makes sure that even the best financed projects will be left to bitrot without any financing. The graveyard of once-well-financed corporate software technologies, usually at the business software technology side, id est at the marketing hype side, is huge and not all of them were technologically outdated or at a technically non-upgradable state at the time of dumping. (The Symbian operating system can be seen as one such example out of many.) Fortran and C++ and Pascal have had multiple upgrades and are still used in 2016 at niche markets like gaming, operating system development, speed-optimized applications.


The Pascal and the Ada failed to "take over the world" at the time of their introduction, because back then they lacked a proper, open, reliable, implementation. As of 2016 the Ada is a dead language, because it is still essentially a closed source language. In 2016 all parties, who develop closed source software, have to pay to the company that develops the Ada language, the AdaCore. As of 2016 the Pascal seems to thrive, because the Free Pascal and the Lazarus developers have created up-to-date, technically thoughtful, carefully implemented products without depending on project financing.


The mechanism described here for keeping a project alive through harsh economic times might not be the only mechanism, but the core of the presented idea is that the fanatics that do not get paid for doing the development work are able to keep the project alive only, if the project dependencies can be replaced and other upgrade work can be done without investing a lot of development time. When project financing vanishes (war, marketing people jumped to new buzz-words, patent lawyers were successful, etc.), then the number of developers and the number of developer work hours of the remaining developers decreases. The upgrades have to be completable within the remaining developer hours. To make the upgrade that cheap in terms of development time, the project must be divided to "small" components that can be independently developed and the number of components has to be minimized (read: the components must be very "orthogonal"). Financing speeds up development and is helpful, but to survive long-term, software projects must be able to be upgraded at times, when there is absolutely no financing, no savings from old financing, no promise/hope that the financing will return. Non-profits and academia that develop their projects only, if they have money, fail to keep their projects updated during the periods, when they lack money, and therefore they fail to deliver software projects that are continuously usable during longer time periods. One of the problems with the academia is that they pick their dependencies according to what ever allows them to complete their project faster, discarding all the concerns about the long-term usability of those dependencies. The academia gets paid for scientific novelty, not usable software.


Software projects that require expensive-to-run-servers, will die the moment the monetary budget of the project runs out, regardless of the availability of fanatical developers, who are willing to work for free. In the words of the Freenet developer Ian Clarke: the most critical resource is the resource that runs out first.


Parallels from Biology

Penguins should not depend on humans to be their critical hunting/fishing partner at their hunting/fishing trips, because humans, as attractively capable as they are, will suffocate under the water sooner than the penguins will. At first glance the penguins might have a temptation to argue that a human with air balloons is fine, because a human with air balloons can survive even longer under the water than the penguins can, but the problems will emerge, when the balloon re-filling equipment gets broken or otherwise stops working and the penguins still need something to eat.


Parallels from Military

Typical corporate software technology is like an aircraft carrier: it has a lot of features and it is very capable, but due to its running costs and huge number of people needed to run it the aircraft carrier is absolutely unusable even if it were given for free, as a gift, "freely downloadable" under some very liberal open source license.


Related Processes

Hardware Upgrades

The reason, why it is probabilistically not possible to keep on using the same immediate dependencies forever is that hardware does not last forever. Not even hardware that does not have any mechanically moving parts or Flash memory. There is an everlasting need for additional computational power and that gives those hardware vendors, who offer more computational power for the same amount of power and acquisition price an advantage. If hardware gets updated, operating systems get updated and the version change propagates to the user-space applications. Hardware upgrades probabilistically create a need to upgrade immediate dependencies. If existing hardware fails, hardware updates can not be deferred.


Examples of Failed Open Source Technologies that Depended too much on Financing

  • A project called "Firefox OS" was developed by a money dependent non-profit and it got dumped(archival copy).
  • The VRML was an open technology and there were multiple, independent, corporate backers. Later it returned in various different forms(WebGL, x3dom), but the VRML died and it took years after the death of the VRML for the VRML alternatives to emerge.


Examples of R&D Projects that Depended too much on Financing

In 2016 a lot of the truly expensive infrastructure(archival copy) of the Soviet space program, runways(archival copy), cranes, launch platforms, just lay around, unused and unmaintained(archival copy). Another example is the United States Fermilab partical accelerator, Tevatron, shutdown(archival copy). There's even a 20min movie about the Tevatron shutdown, titled "Who Killed America's Biggest Gadget?". For comparison, an example of a space related research program that is not perfect, because it still depends on considerable amount of financing in stead of automation, while being still much more feasible than the Cold War era supermafia financed projects are, is the series of experiments and production runs that the Burt Rutan runs. The United States Fermilab project was a failure partly because it needed a lot of money just pay for the electricity that it takes to run the accelerator. If the nuclear physicists at Fermilab had invested even a small fraction of their time on designing a small nuclear power plant for themselves, may be under the pretext of "nuclear research", the project would have been much more feasible.


Reliable Availability on main Development Operating System is Superior to Portability

A software project dependency that is not available on an operating system that is used as the main development platform for the project that has the dependency is useless. A software project that can not be delivered to clients in any form, even by wrapping it to a virtual appliance, is useless.


References

Historical Cases

  • a story(arcival copy) about how the Douglas Engelbart "lost the internet wars" by preferring people to learn how to be extra productive while commercial success was obtained by offering less productivity and a smaller learning curve. A citation from the article: "Nelson, who declined OZY’s request for comments because “time is far too short,” reached the emotional crescendo of his eulogy by noting that while most people have a career, Engelbart had a quest."


Quotes

Alan Kay

According to a wiki (archival copy) Alan Kay's definition of a successful technology is: "A successful technology creates problems that only it can solve." Supposedly his example of such a technology is the Lisp.