Introduction
Share is an experiment to design a programming environment that supports 'loosely bound cooperation' between members of a community of practice. The term 'loosely bound cooperation' refers to a form of cooperation where the participating individuals are not heavily constrained to work for each other, but rather are free to pursue their own particular goals while at the same time supporting the activity of the larger community to which they belong. The main mode of cooperation share support is the open sharing of code, it attempts to model an environment for 'open source style' development of distinct, divergent yet somewhat overlapping projects. Allowing for the benefits of working within a large community of creative individuals while being sensitive to the agency of the individual.
To contrast this with tools for coordinating development within an open source project (collaboration), share aims to develop tools for cooperative development across individual projects, that are typically not forks or versions of a single project.
Given the different motivational factors when we think of contributions across individual projects and the varying goals of the participants, share is also an experiment in understanding how to best encourage this type of cooperation. In particular we hypothesize that making attribution visible and providing a better understanding of how one's contributions are used by others may provide motivation to contribute in the first place, as well as ease the of discovery of possibly relevant resources within the community.
We are also very interested in how new tools and ways of working such as those in this project affect creative practice. As we observe the (not so new) modes of cultural production that explicitly incorporate and build on the work of others, and the increasing tensions as these modes are ever better enabled by large scale networked communication technologies. We are interested in the dialogue internal to and amongst creative individuals as to how they approach these practices and relate to their own work.
Share is certainly alpha software (or a prototype if you prefer) but one we think is quite usable.
Overview of the Environment
The share development environment provides a simple coding environment with a number of additional features to support programming within the context of a community. In terms of features it aims to be more like the processing PDE (Processing Development Environment) than more advanced environments like eclipse.
As one writes code in share the software periodically syncs with an online server to upload your projects as well as download other users projects to your hard drive. All code is executed on the local machine, so you should be able to write and run any code that you would normally execute from the pde. Cooperation in share is asynchronous
It also provides means for browsing and searching other people's code and encourages borrowing elements that you think may be helpful to your project. Share tracks the copy-pasting of code, allowing individuals to see where code they contributed went and how it is used, this also provides an alternate way for you to browse the repository of code based on the relationships between code and the people who wrote it. Share also provides ways of manually making publicly visible links for forms of attribution that do not involve any actual movement of code, which can be just as important as those that do.