Programming In Wiki

Why shouldn't programming be as easy as wiki? Easy to navigate, easy to document, easy to share comments, easy to peer review, programming by gradual accretion ... massive re-use through linking to defining Wiki Words, can be programmed linearly, chaotically, rapidly - c2.com

Why shouldn't an Integrated Development Environment be like wiki?

Why shouldn't an IDE BE a wiki? (good question. See Wiki Ide.)

Why is programming harder than sketching algorithms and diagrams in a notebook?

Increasingly the Pain Of Programming comes from managing such rigid development environments. Think of the multiple files we manage, in different languages, in different file systems. The XML configuration files. The SQL scripts to build databases etc.

Now imagine all these different files replaced by Wiki Pages.

Imagine if we could

embed all code (Java, Perl, SQL, config data etc) in freeform text pages;

* could MarkupLanguageNine be used for this? ''Discussed below''. * is having multiple languages a GoodThing? ''Discussed below''.

allow free text annotations,

allow easy Wiki linking to related pieces of info: from code to config "file", from bug reports to code blocks, code blocks to programmer homepages (with contact details)

At the moment, WE do the hard job of arranging things for the environment. But a <i>make</i> script could easily crawl a wiki picking up various pieces of code, data in order to build source files, config files, etc.

The make script would itself be written on a wiki page for easy reference. It could save the various components in their traditional places before calling the compiler.

Are the Literate Programming people converging on something parallel to this?

<i>But I want something less structured. Code embedded in wiki rather than comments embedded in code.</i>

Literate Programming is supposed to be code embedded in documentation rather than comments embedded in code. Take a look at Tex The Program. Granted, we're accustomed to Barely Literate Programming (Java Doc etc.), but that doesn't mean all programming has to be like that.

I wonder if an existing Literate Programming tool could be adapted to crawl a wiki. Seems like a good way to handle collaborative projects. There might potentially be a problem with dependencies (look how long it takes pages to get Re Factored here) or in Concurrent Editing, but in does seem like the ultimate in Bazaar-style development.

Hyper Perl is an attempt to mix literate programming and wiki.

I <i>love</i> Literate Programming. Nonetheless, the biggest problem I have with Literate Programming, and the one thing that keeps me from using it beyond toy projects, is the difficulty of keeping the documentation and the code in sync. --Samuel Falvo

The first paragraph builds a vision far beyond just mixing code and documentation - it's programming in a collaborative environment: users and programmers changing code fragments or modules whenever needed. The WikiIDE will care for version control and data migration. In my opinion if Programming In Wiki becomes real this will change everything we knew about Software Development. Community Programmed Wiki could be a first step -- Mirko Blueming and the Pfomp Vision.

Sean Mc Grath on mixing code and data: www.itworld.com

I have taken the first steps down this path for a project which I have all but abandoned (attention deficit :) ). Over on my wiki, I have a utility called Wiki Extract. It crawls my wiki and pulls out specially-formatted PHP code. You can look at (but not run) the source code at:

www.llamacom.com (<i>404 - File not found! Try web.archive.org . -- 20060328</i>)

Note that it's tested only on my wiki, which runs under Php Wiki, and it only writes into my directory. Feel free to grab it and modify, though.

I have my own Unfinished Project here (a wiki with code generation): www.nooranch.com . (Broken Link 20070402) -- Phil Jones

Ned Gulley wrote an interesting article on a closed access wiki-like programming competition, really goes to show the speed benefits of such a system above a standard comparable OSS system; blowing away the (already pretty small) restrictions to editing placed on traditional OSS projects seems to make a huge difference. portal.acm.org

You can also find this paper at www.starchamber.com .

Content is merely -> "Describe the new page here"

jot.com is a wiki with structured forms and programmable pages. Jot's wiki markup includes search, if, etc.

IBM's QEDWiki looks in the right direction too : files.zend.com , services.alphaworks.ibm.com

Programming In Wiki - Multiple Independent Languages

This idea can be actuated, if it is organized and expressed so as to include required DefinitionAndImplementation and incorporates ReachableValues

It requires a new way of thinking about how one uses words, by considering different types of Words as having facets, where the name can have a DescriptiveAndStructuralFacet as well as a ProceduralAndActionableFacet

Incorporates the use of the different types of Words as representatives of components, functions, methods, containers and elaborations. Included must be the ability to add comments, reminders, ProgramInformation, DevelopmentSchedules, IndifiedActions, expressed as ExtendedWords within or linked from within the Source Code (making it ReachableComputableAndDisplayable via the Executable.

InformationIntersectionsAsIdentities

variables, constants, objects, structs, constructors, includes, etc

visualComponents used in the Gui: Controls, Containers, and RelationalDevices and locationalInformation displayable through the visualInterface

namingConventions

Extended Words used to represent:

functionNames

functions

routines

operations

processes

routings

elementIdentifiers

controlledElements

uncontrolledElements

Components

Definitions

InformationIntersections

Storage

Reference

temporarySpaces

verifiedSpaces

controlledInfoSpace

Procedures

uncontrolledExternalProcesses

controlledVerifiedProcesses

addIns

-- Donald Noyes 20100714 20120523

# See also