Thursday, June 28, 2012

Parnas on Open Source Software

oHere is a link to a chapter that was co-authored by David Parnas on open source software. http://mitpress.mit.edu/books/chapters/0262562278chap6.pdf In it, he expresses some concerns about the ability of open source software projects to produce high-quality products.

There is also this link which I like... http://economics.mit.edu/files/1125. It has to do with qualitative research in economics

Wednesday, June 27, 2012

Does Marx offer any insight into FLOSS?

FLOSS (Free/libre open source software) has occasionally caused people to ask if it is communist over the past decade.  I'll ignore the trolling aspect that this question raises and jump right to the ways in which it can offer some frisson with FLOSS.

You cannot look at FLOSS for long before seeing the communal aspect of these projects. Most recently the question was posed on Quora and I posted a lengthy answer there. (http://www.quora.com/Is-free-open-source-software-communist/answer/Dale-Fletter). I also answered a different question that I see as closely related having to do with how FLOSS has impacted commercial software development (http://www.quora.com/Software-Engineering/What-is-the-impact-of-the-open-sourcing-philosophy-on-proprietary-closed-software/answer/Dale-Fletter). Since that forum does not reward deep intellectualism and since this journal is my primary data base of ideas, I will try to repeat or improve my answer there. 


A topic of discussion for the early economists was the tragedy of the commons. Since each person is naturally inclined to consume from the commons and make no contribution, this is a problem in a laissez-faire economy. (it is personally disturbing to me how little the current political parties that embrace libertarianism adequately deal with this fundamental problem). What I see in the current FLOSS market looks surprisingly like a reverse issue to the tragedy of the commons, let's call it the gift of the commons. In the FLOSS market consumption of the commons does not diminish it in any significant way. Yet because of the relationship people have with the commons, they are inclined to contribute to it leading to an increase in its value to everyone. This is clearly a way in which the assets are held in common for the good of everyone. It is also clear that many of these assets provide a means of production for many of the users of the commons. This forces the question, is this a form of communism?


To help me understand the question, I needed to put aside my own prejudices about communism and chose to educate myself on the source of much of its intellectual underpinnings in Karl Marx. The book I chose to read first is Karl Marx by Isaiah Berlin. I first tried to read The Capital/Das Kapital but abandoned it since his prose is painful and the progression of his ideas is glacial for a modern reader. The other advantage of Mr. Berlin's history is the cultural and intellectual context and the critical nature of his reporting. I highly recommend the book.


Marx had a deeply held point of view that has been largely debunked by the developments of the 20th century. Therefore his theory about class warfare and the inevitable fall of capitalism makes no sense any longer. However his early analysis of capitalism is surprisingly fresh and modern in its insight, if not always completely original. In my opinion, he was an empiricist, he believed that capitalism had inherent defects that were inimical to the inherent rewards of work and that without leavening, capitalism could not survive. I believe the history of the late 19th and all of the 20th century have proven this thesis to my satisfaction despite the current debate. What I find enthralling is how he seems to capture the spirit of many software engineers who contribute to FLOSS. There seem to be many motivations in their work and Marx, for me, seems to offer some insight into this emerging market. It is his intention to use a scientific method that includes economics and the other social sciences to observe, record, discuss, explain and theorize about what he saw as a model for the analysis of FLOSS.

Regarding qualitative analysis, Berlin observes, "This command to look for the most vivid expression of the universal in the particular, the concrete, the differentiated, the individual, to emulate the art and the realism of the biographer and the painter rather than the photographer and the statistician, is the peculiar legacy of German historicism." As I look at FLOSS, I intend to follow this command, at least for now.

While the broader concept of class means something very different today than it did at the time of Marx, let me first make some observations about class relative to FLOSS. Communication mediated by the software repositories created for FLOSS removed almost all traces of class that might intrude from outside. Many people involved do so anonymously and provide no meaningful picture of themselves outside of the project. This provides an opportunity for people to recreate themselves in this sphere. Coupled with the staunch support for meritocracy, someone with no power, status, or obvious class affiliation outside of the project could rise to the level of contributor. (it looks like anonymous contributors with commit rights don't exist in Apache but that needs more research). Beyond the hierarchy that exists due to this meritocracy, there does not seem to be any inherent class structure, at least within the confines of a project. Without a class structure, I don't see where any class friction can exist.

As I already observed, the commons is not diminished by the copying of the software. Also the project imposes no coercion for contribution. This is perhaps the most pure expression of the communist maxim of "from each according to their ability, to each according to their needs". (I note that the phrase, while popularized by Marx owes its origin to Louis Blanc).  Of the abilities that contribute to the projects, there are many. Some have very fundamental needs to fix the errors in these machines to keep them running for the enterprises that are important to them. There are visionaries who pursue new features with an artistic zeal. Some fall in love (eroticize) the product and take a proprietary interest in making it the best possible product in the same way that Pygmalion created his beauty. The lack of a centralized plan would seem to diminish the utility of the final product but that is difficult to see in many cases.

Much has been written about the alienating effect of monads slaving over keyboards. Perhaps a motivation for contributors is the sense of belonging that active participation in a project community brings.

One of the aspects of FLOSS that most strikes me is that the utility of the projects does not cover the universe of software uniformly. There is a decided bent toward tools and utilities versus consumer products and other products that do not have well trained individuals as their primary consumers. By this I am talking about the preponderance of languages, web development and web deployment tools, databases and other tools of the trade. From the operating system to the creation of an industrial grade online service, it is possible to avoid paying a corporation any licensing fees. I am not aware of any period of human history when the tools of production have been so freely available. This represents another basic Marxist maxim that the workers should own the means of production. We now have an entire generation of web developers who are created significant value using the tools from the commons. It is their enlightened self-interest which causes them to contribute so as to further rationalize or extend these tools. Some even find ways to tweak the tools to create new market opportunities for themselves and garner personal rewards by bringing this value to market before anyone else.

It is the interplay between the commons and the for-profit marketplace that causes many people to question the label of communism. They call it a "gift-economy" or some other such label. What distinctions are they trying to paint? I still have much research to do in the area of alternative economies, in particular those related to the gift economy. However I am going to indulge my going in positions. 

Wikipedia talks about how early file-sharing was a form of gift-exchange that fostered a sense of community. I'm not buying that. FLOSS has a very specific aspect that cannot be seen in music or most forms of art. When I buy a song, I now have a static object which will not change during the time it is of interest to me. Contrast that with a piece of complex software like an operating system. The utility of that download may last for a period of some years. However if it has become part of a larger system, I will not be inclined to abandon my investment of time in that larger system once that component is no longer completely compatible with the dynamic environment in which it exists. It is for this reason that large complex software has a value chain that includes periodic updates. And it is exactly this value chain that FLOSS most brilliantly fulfills. The collective work of the various parties who attach to that value chain ensure that the product is dynamic and continually adapting to its environment. As I become aware of new functionality that must be added to the version I have, I have some assurance that this project will have organically anticipated that need and already provided for it. Even if I am the first, there will be others who will benefit from what I may be forced to do as a matter of personal need. My contribution builds goodwill and community as I discuss my need with others who have the same or similar needs.

While I reject the idea of music file sharing as being similar to FLOSS as a form of gift economy, I completely agree that this community building is an inherent part of the FLOSS experience. Especially in their formative stages, FLOSS projects have a relatively small number of contributors. The inherent communication among these contributors creates a sense of personal intimacy that build community bonds. Trust grows. Shared context grows. Often new ideas sponaneously emerge from the discussion in one project that spawn another and a new project is born.

Another aspect of FLOSS that I find in Marx's writing has to do with the basic notion of work. In the traditional Theory X of work, an organization must provide incentives to work. Without them, people will be inclined to not produce. Both Marx and then later Theory Y suggest that work has intrinsic fulfillment. Taken with Maslow's hierarchy of needs, it appears that FLOSS attracts people who gain significant rewards from the support they give to FLOSS. What must be explored is to what extent this interacts with other forces to enable that. For example, if software developers who are most active in FLOSS are being paid by their employers to contribute, can we be assured that this has achieved some form of market stability? Software engineering salaries are still relatively high but they have begun to show some signs of market volatility as foreign countries have shown their ability to compete for this labor. There can be no doubt that some aspects of software engineering will become less financially rewarding in the future. Will this lead to a downturn in the FLOSS contribution?

Another interplay with FLOSS is those developers who were fortunate enough to have a financial success with an earlier product and now use FLOSS as an incubator for a new idea. Clearly anyone who has become independently wealthy does not represent a stable vision for the future of FLOSS.

FLOSS may become a proving ground for young talent. People in school or recently out who are still supported can afford to invest significant time contributing to a project of their choice. Is it possible FLOSS will become a form of Peace Corps where the young become apprenticed and learn their trade while simultaneously provide some societal good?

Modern economic thought does not see the world in the kind of binary fashion that was prevalent in the 1950s. Modern western economies are mixed with elements of both capitalism and socialism mixed. I cannot see any reason why there cannot be stable islands of communism that coexist in our economy. There are many utopian communities that have existed side-by-side for many years. Both models of economies seem flexible enough to allow for mutual coexistence.

The final point I see in FLOSS is the force of idealism and youthful optimism. Virtually all valley jobs involve a certain amount of kool-aid drinking. The most pure forms of capitalism involve a quasi-warfare mentality of competition in the marketplace. But just as effectively, you see many young people (and some older folks too) who become committed to an idealistic path that stands in stark opposition to the free-market capitalism. FLOSS seems to draw from this pool of talent as well. Perhaps it even offers some solace from the brutality of an unbridled capitalist environment and a place where people can go to mentally recuperate and plan their next phase.

Software is nothing like the commodities that Marx focused on. It seems reasonable that any expression of Marx's ideology that grows out of an economy based on software will differ. Perhaps it does it a disservice to call it communism. I'll need to look at these alternative economies to see what I think.

***

One of the thinkers who inspired Marx was Pierre-Joseph Proudhon who is best know by his saying that property is theft. In his essay "What is Property?" he makes a distinction between property owned but fallow versus property that is in productive use which he calls possession. That distinction reminds me of a problem that Google is facing in trying to digitize books. There are a great many books that are long out of print but still have active copyrights. The owner of that right can block the publication in any form. There is something that strikes me as inherently wrong to own something for the sole purpose of preventing anyone else from benefiting from it. If it is frictional in the sense that it is under current negotiation, then it is merely a strategy and a short-term dislocation. But if the owner is unknown or beyond negotiation, then the information is available in the limited number of books that exist but not readily available. The inevitable consequence of this is rampant copyright infringement for a popular item and the complete loss of the information from sources that no longer exist. This becomes a form of information rot. I rather admire Google for continuing to scan the books that fall into this category since they are actually performing a public good by ensuring the information will never be lost to theft or fire even while the owner may block the distribution.

Thursday, June 14, 2012

What is a computational object?


In this sense, externalizing ideas is not a matter of emptying out the mind but of actively reconstructing
it, forming new associations, and expressing concepts in external representations while lessening
the cognitive load required for remembering them: “Externalization produces a record of our mental
efforts, one that is ‘outside us’ rather than vaguely ‘in memory’. ... It relieves us in some measure from the always difficult task of ‘thinking about our own thoughts’ while often accomplishing the same end. It embodies our thoughts and intentions in a form more accessible to reflective efforts.” ((Bruner, 1996), p. 23)

http://l3d.cs.colorado.edu/~gerhard/papers/fi_ost-final.pdf


The computational viewpoint is directly concerned with the distribution of processing but not with the interaction mechanisms that enable distribution to occur. The computational specification decomposes the system into computational objects performing individual functions and interacting at interfaces. It thus provides the basis for decisions on how to distribute the jobs to be done, because objects can be located independently assuming communications mechanisms can be defined in the engineering specification to support the behaviour at the interfaces to those objects.


The heart of the computational language is the computational object model, which constrains the computational specification by defining:

  • the form of interface an object can have;
  • the way that interfaces can be bound and the forms of interaction that can take place at them;
  • the actions an object can perform, in particular the creation of new objects and interfaces, and the establishment of bindings.

The computational object model provides the basis for ensuring consistency between different engineering and technology specifications (including programming languages and communication mechanisms) since they must be consistent with the same computational object model. This consistency allows open interworking and portability of components in the resulting implementation.

The computational language enables the specifier to model constraints on the distribution of an application (in terms of environment contracts associated with individual interfaces and interface bindings of computational objects) without specifying the actual degree of distribution in the computational specification; this latter is specified in the engineering and technology specifications. This ensures that the computational specification of an application is not based on any unstated assumptions affecting the distribution of engineering and technology objects. Because of this, the configuration and degree of distribution of the hardware on which ODP applications are run can easily be altered, subject to the stated environment constraints, without having a major impact on the application software.

http://www.rm-odp.net/



Computational objects in object-oriented data models, Authors: Jianhua Zhu, David Maier


Computational object recognition: a biologically motivated approach, Authors: Tim C. Kietzmann, Sascha Lange, Martin Riedmiller

Heekyoung Jung, Youngsuk L. Altieri, and Jeffrey Bardzell. 2010. Computational objects and expressive forms: a design exploration. In Proceedings of the 28th of the international conference extended abstracts on Human factors in computing systems (CHI EA '10). ACM, New York, NY, USA, 3433-3438. DOI=10.1145/1753846.1753997 http://doi.acm.org/10.1145/1753846.1753997


Form and the computational object, by Ramia Mazé, Johan Redström




Temporal Computational Objects: A Process for Dynamic Surface Generation, Authors: Kurt W. Swanson, Kenneth A. Brakke and David E. Breen


Simulating an Economy with Smithian Production: Division of Labor as a Computational Object
By Roger A. McCain, http://faculty.lebow.drexel.edu/McCainR/top/eco/wps/RAMcCEastern.pdf


The Distributed Interactive Object Substrate (DIOS) forms the back-end of DISCOVER and is composed of two major components: (1) Interaction Objects that are co-located with computational objects and encapsulate sensors and actuators, and (2) A hierarchical control network that connects these objects with different interaction agents. http://nsfcac.rutgers.edu/TASSL/Projects/DISCOVER/DIOS/DIOS.html