A Vision for java.net
The Oxford English Dictionary was produced through a community effort, with thousands of people sending in slips of paper noting the first occurrences of words in books; these references formed the basis for the OED's historical definitions.
We think of creativity as an individual talent, but communities can be creative, too. And the sorts of things a community can build are considerably larger than those an individual can. There are many examples. Cathedrals in the Middle Ages were built by a long-lived community of builders, artisans, carpenters, sculptors, stone cutters, woodcutters, ceramics makers, glass makers, painters, and ordinary people working as laborers, based on a model created by an architect perhaps decades earlier, but inspired by a common vision of what that cathedral will be.
Programming languages have been defined by widely dispersed communities using email and similar tools. Linux -- itself a cathedral-like project -- has spawned tens of thousands of other projects, some adding well-known pieces to Linux and others stretching the imagination or bringing to Linux functionality once found only elsewhere. The software patterns community was self-created without any support whatsoever from funding agencies or corporations; similar stories are true of the Agile and eXtreme Programming communities. These are all highly influential and widespread communities now.
The vision of java.net is to build a self-creating and self-governed web place where communities can join together -- either loosely through federation or tightly by living on java.net -- to build something like a diverse city of diverse communities, individuals, and companies who are engaged in using the Java language and technology in both routine and innovative ways. The purpose is to bring people together to increase the density of triggers so that new markets and resources are created.
My conception of java.net was influenced by the book The Rise of the Creative Class, by Richard Florida. In it, he talks about what makes a city a center of innovation and creativity. In essence, it's a place diverse with people engaged in creative activities and imbued with tolerance for that diversity:
Creative people ... cluster in places that are centers of creativity and also where they like to live. From classical Athens and Rome, to the Florence of the Medici and Elizabethan London, to Greenwich Village and the San Francisco Bay Area, creativity has always gravitated to specific locations. As the great urbanist Jane Jacobs pointed out a long time ago, successful places are multidimensional and diverse -- they don't just cater to a single industry or a single demographic group; they are full of stimulation and creative interplay. -- The Rise of the Creative Class, Richard Florida
We can build a community around using, doing research on, learning about, and teaching a language -- a community built for the purpose of stimulating innovation and creativity. Companies sponsor conferences and workshops, computing societies such as ACM and IEEE hold scientific and technical conferences, and there are user groups, courses, FAQs, and other sources of information for people trying to solve problems. But for most languages and platforms, there isn't a single, easily located place to visit to answer all of one's questions. This is an experiment that has never been done, as far as I know.
The Java language is a pretty good language, and as its use spreads and libraries are added for it, it has the possibility of providing a uniform platform powerful enough to accommodate most of the computing and information work we need to do over the next decade or so. To do this, we need to have an extensive portfolio of "stuff" for people to work with -- frameworks, libraries, course materials, documents, tutorials, applications, source code, tools, lists of consultants, methodologies, and support forums. These will all appear in their own good time based on the needs of the overall community, a community somewhat scattered across separate companies and projects or isolated as individuals. How much faster would these resources be created if there were the equivalent of a great city dedicated to the Java language and platform?
The poet Richard Hugo, talking about how poets go about writing poems, suggests that the key to poetic creativity is a thing he calls a trigger, a stimulus from the outside that, when combined with other triggers and a person's own knowledge and background, produces new material. Another way to look at it is that a person surrounded by a diversity of triggers will be highly creative. This is certainly true of emerging and thriving markets where the presence of competitors and strong customer interest spawn new products, improvements, and innovations.
Java.net will eventually have the best community-related and artifact-building tools available: wikis, weblogs, all of the open source tools, mail lists, forums, reputation, web publishing, and news feeds. People will be able to come to java.net to work on things, find things, ask questions, and participate.
To me, the most important ingredients for a great community, aside from diversity, is self-determination and self-governance. Communities joining java.net will be able to keep their existing governance structures, and the overarching java.net governance is lightweight, with its evolution under the control of the java.net community. The tools at java.net will grow with the needs of the community. Initially, the infrastructure will be limited by the toolsets that have been chosen, but the goal is to choose how to move forward based on the evolutionary path the community chooses.
News is important to a great city -- news both about global events and about itself. Java.net will have a newspaper and perhaps a magazine edited by a neutral editorial staff, providing news from each java.net community and the rest of the Java technology world. I hope that java.net will become a place so thriving that news of what's going on there will be syndicated in other venues. There will be an Editorial Advisory Board consisting of respected individuals that will oversee the creation and neutrality of editorial content and make recommendations about how the editorial portions of the site should evolve and what directions the editors should consider. The nice thing about the virtual world is that the laws of physics (and common sense) don't apply. Though many cities around the world would love to have part of a special Arrondissement transported to their city limits -- I like the 4eme, though the 5eme and 18eme are classic favorites I appreciate -- it's not going to happen. But in the virtual world, it's entirely feasible for a community already thriving somewhere on the Web to join java.net, bringing its own unique complexion and texture while taking back something from java.net. Ideas like steel and flint striking each other spark off new ideas that need only a patch of char and some tinder to take off.
Although not part of the design or mission, Java.net allows the engineers who create the components that make up and enable Java programming to observe those who use their creations. By watching folks making a go of it using Java technology and talking about their experiences on java.net, the designers of Java tools and framework, standard libraries, and even the language and platform itself can learn what is needed to move things forward. Reports from the front don't take too long to arrive because the front is nearby -- well, it's just a click away. Maybe those designers will learn something and turn the experiences of the people in the trenches into good changes, and just as they once opened up the magic technology bag that held things like automatic memory management, they will open it up once more or several times more to help make the task of software development a joyful one, as it should be.