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 -

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:

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: (<i>404 - File not found! Try . -- 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): . (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.

You can also find this paper at .

Content is merely -> "Describe the new page here" 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 : ,

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.


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

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


Extended Words used to represent:






















-- Donald Noyes 20100714 20120523

# See also