Open source has flourished because software is "infinitely-reproducible".
Physical objects are not so easily reproduced but the information for making them is.
ProtoForge.org
Competition vs. Open Collaboration
From time to time I like to check in and see what's going on in the world of crowd sourcing. I make sure to visit pioneering sites like Kluster and Innocentive when I do. A few days ago, I discovered a drastic change to the Kluster site along with a video from founder Ben Kaufman explaining that Kluster is going to try something different, a new business model of some kind. Implying, I suppose, that the old one was not working out.
ProtoForge, fortunately, is not subject in any way to investors, cash flow, or anything of the sort. To this date, not a penny has been spent or made on the site and the site is hosted on well supported hardware and software with very stable, fast internet connections. Because of this ProtoForge is not going away any time soon.
So after seeing Ben's video, I got to thinking... Open Collaboration is not about business models. Much to its credit, capitalism is based on the idea of personal property (including intellectual property). By far this is the most effective way for providing for every day things: automobiles, candy bars, houses, deodorant... Kluster was competing with an industry that already has many paths for fostering innovation with the possibility of great reward. The incentive to develop ideas in the existing framework of angel investors, corporate investment, venture capitalists, and so on... is quite a bit higher than the incentive that can be offered on a website, where, by its very nature, intellectual property becomes immediately public.
So one must ask, where is it that massive, public collaboration can be most useful in an already efficient market economy? The answer lies in those things that are very high risk with seemingly low return on investment and perhaps also in those things that are dominated by monopoly or entrenched traditional practices. Things where no one is willing to do the work for fear of failure, financial loss or public embarrassment. This is why many of the very big things you find in a capitalist society are usually supported in some way or another by big government, in order to reduce the risk to investors (baseball stadiums, highways, museums, public transportation, space programs, etc...). These are things which are high effort with poor or intangible financial returns on investment and yet we feel they are important enough, sometimes in unexplainable and complicated ways, such that we all pitch in to make them happen anyway.
A word should be said here about the nature of competition and open collaboration. Competition is very resource intensive. Many companies spending similar amounts of money in attempts to develop similar products in order to gain as much market share as possible. Many of those companies losing their entire investment along the way. This is a very expensive way to achieve a goal and therefore only goals with very high returns get pursued and only companies with large, existing resource pools tend to pursue them. For efforts with low tangible return on investment it becomes desirable to minimize the expenditure of time and resources consumed in obtaining the goal since the return is not likely going to make up for the investment. The implementation of volunteer time and donated resources encourages minimum expenditure and maximizes the usefulness of open collaboration. The absence of competition in high risk, low return endeavors means that the speed of development is not important to the overall success of the project. We now see that neither collaboration nor competition is always the most desirable path for achieving a goal but that it depends in large part on the perceived return on investment.
The volunteer-time, donated-resource, zero-profit, absolutely-open model is the only way to overcome the cultural barriers to massive, open, online collaboration. People are so used to competitive enterprise in their every day lives that anything less than purely zero-profit and completely-open gives rise to suspicion. When the donation mechanism gets developed for ProtoForge it will be completely open with all financial transactions being available for public browsing. The only exception to transparent finances will be that monetary donations can be made anonymously but the amount and recipient of those donations will still be public.
All of this being said, the zero-profit model for massive, organized, collaborative decision making and prototype system development is not meant to replace or compete with any existing systems of human interaction (read as "don't quit your day job, we still need deodorant"). It is instead meant to provide an additional way that people can organize in order to attempt to tackle very high risk, low return ventures that might not get tackled otherwise. In the same way that governments invest pooled resources to advance the common good in often intangible and unmeasurable ways, online and open collaboration can act in a similar fashion while providing a creative outlet and enjoyable hobby for everyone involved.
Posted at 10:26PM May 20, 2008 by Aaron Schultz in General | Comments[2]
Opening the Source
The source code for protoforge is now available at the sourceforge.net project page.[Read More]
Posted at 03:34AM Feb 09, 2008 by Aaron Schultz in General |
The Problem of Open Hardware (Part 2)
In Part 1 we compared some intrinsic aspects of software and hardware development. We began to think about what is needed in order for opendesign hardware projects to be as successful and useful as opensource software projects.
It became clear that the success of opensource derived from the fact that software only requires a developer's or group of developers' time to produce an infinitely reproducible product that benefited the common good. Whereas in the case of hardware development it became clear that more than just time was going to be needed. Opendesign hardware also requires money to cover non-recurring costs in order to be successful.
Because money is a necessary factor in producing physical systems the process for managing the division of labor becomes more complex than the process needed for opensource software. With the additional need for managing money our process must provide a mechanism for tracking the accountability of monetary donations and expenditures. To do this we must have a clear understanding of what is going to be done and who is going to do it. In industry this is done by writing requirement specifications that are an important part of a contract between the customer and the supplier. Contracts also include more organizational aspects of what the customer expects of the supplier.
Because requirements define what the system will do or how the system will do something they become important for several reasons.
Requirements can be used to
In the case of opendesign hardware, only the information needed to reproduce the system is infinitely reproducible. Therefore it is important to minimize the recurring manufacturing costs of the system. It is also very important to assure someone who is going to invest their own money in the manufacture of an opendesign system that the design is good and works as documented. This leads to the distinction between an "opendesign" system and a "verified opendesign" system. To verify an opendesign a prototype must be built precisely to the specifications of that design and tested under all expected conditions specified in that design.
Posted at 05:48PM Jan 30, 2008 by Aaron Schultz in General |
The Problem of Open Hardware (Part 1)
A few intrinsic aspects of software development have been key to the success of opensource software:
In the case of open software it is only necessary for an individual or group of individuals to donate their time to a project in order for it to be successful and useful to others. Often the payment for these individuals' time is simply a sense of contribution to the common good whereas some institutions have opened their sourcecode in the hopes of increasing the usage and the quality of the software according to point 3.
Also, in the case of software development the division of labor can be easily managed with a simple versioning system such as CVS or its younger brother, Subversion. The fact that software has no recurring manufacturing costs makes it unimportant for the developers to come to a clear agreement on what the software is to do before development begins. It is sufficient to have some general consensus on the purpose and desired functionality and allow the software to evolve throughout the development process. If the software ends up with much more functionality than what was originally intended it is irrelevant because there is no extra cost for downloading those extra features.
Hardware development on the other hand differs greatly in points 1 and 2 and point 3 becomes a great deal more important for the success of a project.
With hardware it becomes clear that more than just the developer's time is going to be needed in order for a project to be successful. This is "the problem of open hardware". What is it that we need in order for open hardware projects to be successful? How can we establish a well managed process for the division of labor?
Stay tuned for the answer in Part 2.
Posted at 02:57AM Jan 24, 2008 by Aaron Schultz in General | Comments[2]
Protoforge updates
Documents have received an upgrade and some bug fixes. The look and feel is better now and the open all and close all function is now dynamic.
Verification voting has been implemented and is working well now.
Icons for documents and requirements have been added. Now you will always have two options for navigating to a requirement, to view it in the requirement tree or to go directly to the detail page.
Many other minor modifications throughout the site have been made.
The site should be fully operational (yes think star wars :) and support all aspects of the Protoforge requirement process by the end of the year for a version 1.0 official release (It's very close now). Next year I will focus on attracting new projects and building the financial management (donations/advertisements) side of the tool.
Posted at 12:26PM Nov 04, 2007 by Aaron Schultz in General |
Project Activity
Two new updates to Protoforge have allowed for better visibility of project activity. You will now see a "Recent Activity" list on the main project page.[Read More]
Posted at 11:34PM Oct 25, 2007 by Aaron Schultz in General |
Lines and lines
Today I decided to do a detailed investigation of just how big the code for Protoforge has become. Protoforge primarily uses 4 different coding languages: PHP/HTML, Javascript, Java, and SQL.
The PHP/HTML code drives the dynamic web pages that you see when using the site. The Javascript is downloaded and executed in your browser and is mainly for AJAX functions and the dynamic text editor and calendar (both 3rd party applications). The Java code is used for server side applications and helper applications such as sending email notifications and automating PHP/HTML code generation. The SQL code is what defines the database structure which currently stands at 134 tables and a couple dozen triggers and procedures.
And the envelope please....
In House Code
64931 lines of PHP/HTML with an average of 32.2 characters per line
417 lines of Javascript with an average of 36.2 characters per line
5403 lines of Java with an average of 34.8 characters per line
3159 lines of SQL with an average of 45.1 characters per line
totaling 73910 lines of code
3rd Party Code
1772 lines of PHP/HTML with an average of 28.8 characters per line
46544 lines of Javascript with an average of 41.3 characters per line
9441 lines of Java with an average of 31.5 characters per line
totaling 57757 lines of code
for a grand total of 131667 lines of code that make the site tick
Posted at 10:24PM Sep 28, 2007 by Aaron Schultz in General |
PF Update
I have been making A LOT of little changes to the PF site along with cleaning things up and fixing the occasional bug that peaks it's head out now and again. Off the top of my head (not a complete list)
Users can now edit their profiles.
Document editing is now dynamic which is pretty cool. I have disabled automatic renumbering though. Turned out to be a little buggy and is awaiting my fly swatter as soon as I get around to it. :)
The "Showing" menu (for a lack of better name) on the requirements tree action menu has a few more options in it for viewing recently discussed and edited requirements and solutions. You can also show requirement owners in the tree now.
Object history, which was really only partially done before, is now very well developed.
Discussions were added to verification and change objects.
Requirements can be moved around in the tree.
I renamed "Senior" and "Owner" project members to "Moderator" and "Manager" project members.
The "Getting Started" help document now has screen shots to point out what the different menus are.
The process diagram has been upgraded to make it easier to understand. (the old one I did a long time ago)
I have added a "User Help" page in the help documents but havn't written too much in there.
Oh and maybe a half a dozen other things.... One of these days I'll start hiding easter eggs in there :)
Posted at 10:36PM Mar 11, 2007 by Aaron Schultz in General | Comments[3]
Update
Well, after some time off due to moving to a new state and starting a new job on Orion I finally got back to hammering out some good code on Protoforge. A few bugs have been fixed and some new functionality added (like Meetings). I'm trying to clean it up to make it look a little better as well. I had not spent much thought on that when developing because the most important thing is to have it work right and that's starting to settle down nicely. Some obvious lack of needed functionality has been identified by some of the SEDSat-2 members and I really appreciate all the feedback I've been getting. Thank You!
The need for moving requirements around in the tree is a fairly pressing issue that is high on my to-do list. Right now, when you suggest a requirement it gets added to the top of the list (under the parent requiremeent) and that is where it stays. If you want to move it to a different parent you have to delete it and re-suggest it. Which is a serious pain. I am using Preorder Tree Traversal to keep track of the tree and I'll need to dig into the code a bit to come up with a good scheme for adding Cut/Copy/Paste functions to the Options drop down menu for the requirements. So it is on the way and you will be able to move even Baselined requirements once it is set up. Another issue high on the list is more of a nuissance than a bug. When renumbering document sections to lower level section numbers an error pops up and doesn't allow you to do it. Not such a big deal but definitely annoying.
Other things that are coming soon:
Editing your user profile page so you can add text and html and images there.
Requirement Tagging:
Create a tag (any bit of text you want) and a description for the tag and then tag your requirements.
This will be useful for assigning requirements to subsystems and probably a whole bunch of other things.
Requirement search based on keywords, tags, baseline status, and whatever else I can think of :)
Thanks for joining me on this journey, I will try to post to this blog more often with details of the PF saga.
Posted at 11:29PM Feb 07, 2007 by Aaron Schultz in General | Comments[2]
Launching a beast
Protoforge slowly comes online.[Read More]
Posted at 10:17PM Oct 16, 2006 by Aaron Schultz in General |
Collaborative Open Design and Prototyping of Hardware Systems?
The first post in what most likely will be a very long saga
[Read More]Posted at 12:47PM Aug 15, 2006 by Aaron Schultz in General |