Navigation 
Home » Projects » Software Art

Much TODO

Vaporware at its finest. For this project I have been collecting and assembling unwritten software code. While this code remains to be written, its construction in thought has at least begun. The ideas, dreams, and procrastinations of software developers from around the world are manifested in this project by their 'TODO' comments which were left behind in code as little reminders. I have algorithmically collected nearly 100,000 of these comments from the Internet, giving precedence to quick 'one line' TODOs. The resulting conceptual software program contains instructions of thoughts only - no actions. It does everything, and nothing. It does just what I need, which is plenty.

A TODO tag is not necessarily a formal software coding element, but placing them in code is common practice among many developers. When found in code, it is assumed that the TODO thought/task has not yet been realized (it's also assumed that the task may not be absolutely necessary). When software code is finally compiled down into a program, the compiler recognizes and processes the comments by ignoring them.

There is still much todo on this project!
TODO: make fancy visualizations with the data
TODO: harvest even more todo comments
TODO: add multi-line todos to the archive
TODO: convince people this is good art
TODO: convince people this is good software

Here is a free, downloadable, runnable program created from 100,000 lines of TODO code:
MuchTODO.exe (DOS/Windows version)

Here is a small section of TODO code randomly pulled from the collection:

/**********************************************************************
* TODO: It turns out this may be a hole in the spec. See PXML(60)[]:
**********************************************************************/

/**********************
* TODO: replace with
**********************/

/**************************
* TODO: complete the FSM
**************************/

/***************************************
* TODO: Bisher noch nicht vernderbar.
***************************************/

/**********************************************
* TODO: A lot of this should be configurable
**********************************************/

/**************************************************
* TODO: Check, if num has to be converted too ?!
**************************************************/

/********************************************************
* TODO: properly handle the case when the hovered peer
********************************************************/

/*******************
* TODO: Write me.
*******************/

/*******************************************************
* TODO: Arrange the structure for performance on x86.
*******************************************************/

/******************************
* TODO: s/size()/maxsize()/g
******************************/

/**************************************************************************
* TODO: remove this refresh. cause database load and make beans creation
**************************************************************************/

/****************************
* TODO: close this channel
****************************/

/***************************************************************************
* TODO: else (flag in connection for redirect, redirect button redirects)
***************************************************************************/

/**************************************
* TODO: throw new ArgumentException(
**************************************/

/******************************************************************
* TODO: this right because spaces that were embedded in a single
******************************************************************/

/*********************************
* TODO: What should we do here?
*********************************/

/***********************************************
* TODO: How do we pass Tcl errors to Java ???
***********************************************/

/************************************************************
* TODO: check if the bodyValue qname is the one we expect!
************************************************************/

/*************************************************
* TODO: Change instantaneous energy calculation
*************************************************/

/*******************************************************
* TODO: this is a bug, but it matches a bug in torque
*******************************************************/

/*******************************************
* TODO: change into a thread-safe lock???
*******************************************/

/********************************************************************************
* TODO: Describe how and when listeners get notified about the delayed change.
********************************************************************************/

/*****************************************
* TODO: do more flexible time format ?
*****************************************/

/***************************************************************************
* TODO: fixa en lista med enbart windgenerators kanske blir lite snabbare
***************************************************************************/

/**********************************************
* TODO: Use regex to make this more complete
**********************************************/

/**********************************************************************************
* TODO: expiring a source should not cause it to be marked unusable, but it does
**********************************************************************************/

/***********************************************************
* TODO: make setup of chip select lines contingent on how
***********************************************************/

/************************************************************
* TODO: report progress, not parsing result or css error.#
************************************************************/

/*******************************
* TODO: change this if needed
*******************************/

/**************************************
* TODO: Move core code to framework.
**************************************/

/***************************
* TODO: format timestamps
***************************/

/*************
* TODO: MBE
*************/

/**********************************
* TODO: make &addHostMask() CMD?
**********************************/

/*****************************************************************************
* TODO: Error handling and Exceptions in here and also in the whole design.
*****************************************************************************/

/******************************************
* TODO: or when a class is accessed ? ).
******************************************/

/***************************************
* TODO: change this to IMacroExpander
***************************************/

/**************************
* TODO: Support thumbnai
**************************/

/*****************************************************************
* TODO: complete this (friends, uploadspeed, amuleuser etc etc)
*****************************************************************/

/******************************
* TODO: dplacer dans DBInfo.
******************************/

/****************************************
* TODO: ajeitar ou remover essa fun?ao
****************************************/

/***************************************
* TODO: include modifiers, exceptions
***************************************/

/**********************
* TODO: more testing
**********************/

/*****************************************
* TODO: this should not remain this way
*****************************************/

/*********************************************************
* TODO: if logfile doesn't exist, set some decent perms
*********************************************************/

/*************************************************************
* TODO: we should parse the value in case its an Expression
*************************************************************/

/**********************************
* TODO: z-Koordinate einbeziehen
**********************************/

/***********************
* TODO: maintain pool
***********************/

/***********************************
* TODO: raw, rss and html formats
***********************************/

/******************************************************
* TODO: This actually closes the connection I think,
******************************************************/

/**************************************************************************
* TODO: make this part of an implementation of UserAgentCallback instead
**************************************************************************/

/*********************************
* TODO: Check for read-only bit
*********************************/

/*****************************
* TODO: more error-handling
*****************************/

/*********************************************************************************
* TODO: Implement the easy case (if entries_maxselected == -1) in an easier way
*********************************************************************************/

/*************************************************************
* TODO: keep displaying the line with 'done' and some stats
*************************************************************/

/************************************************************************
* TODO: str = _("The task could not be deleted due to a corba error");
************************************************************************/

/*********************************************
* TODO: check if can be changed to String[]
*********************************************/

/*****************************
* TODO: setting by triggers
*****************************/

/****************
* TODO: a lot!
****************/

/***************************************
* TODO: implement it in asm for Win32
***************************************/

/****************************************
* TODO: Insert proper gpl notice here.
****************************************/

/**************************
* TODO: Load the handler
**************************/

/*********************************************
* TODO: make it work again after disconnect
*********************************************/

/*****************************************************************************
* TODO: have some way to remove Throttles, or make these use WeakReferences
*****************************************************************************/

/**************************************
* TODO: double-check this assumption
**************************************/

/***********************************************
* TODO: Try again with NFC, rather than NFKC.
***********************************************/

/*************************************
* TODO: output this to debug stream
*************************************/

/*********************************************************
* TODO: Check if is the same channel as the url specify
*********************************************************/

/**************************************************
* TODO: allow grouping by ranges of real numbers
**************************************************/

/***********************************************************
* TODO: add a cursor to scan the hash without semaphore ?
***********************************************************/

/*********************************************************
* TODO: on ne devrait pas checker les autorisations ici
*********************************************************/

/*************************************************************
* TODO: . options aren't checked at input time. problem eg.
*************************************************************/

/***************************************************************************************
* TODO: Implement this class. This class is currently a stub. Julien & Thomas Heute
***************************************************************************************/

/******************
* TODO: proxies?
******************/

/***********************************************
* TODO: we want --verbose/--silent in argv...
***********************************************/

/****************
* TODO: refine
****************/

/****************
* TODO: error.
****************/

/***************************
* TODO: fill in progname.
***************************/

/***************************************************************************
* TODO: Always check if parent is disposed when working in createControl.
***************************************************************************/

/****************************
* TODO: unsafe, so fix it.
****************************/

/****************************************
* TODO: Key appears pressed when done.
****************************************/

/**********************************
* TODO: 0=floor, 1=ceil, 2=round
**********************************/

/*************************************
* TODO: revert to Dide when unicode
*************************************/

/*********************************
* TODO: needs to be implemented
*********************************/

/**************************************************************************
* TODO: should we increment stickyness? Tim doesn't understand that
**************************************************************************/

/******************************
* TODO: use Global variables
******************************/

/***************************************************
* TODO: at the moment only a dummy implementation
***************************************************/

/***************************************************
* TODO: Figure out how this should actually work!
***************************************************/

/******************
* TODO: Verifier
******************/

/********************
* TODO: con_remove
********************/

/*******************
* TODO: set error
*******************/

/***************************************************
* TODO: history to be used by addRegisteringEvent
***************************************************/

/**************************************************
* TODO: this does not handle the horizontal case
**************************************************/

/*******************************************
* TODO: instantly forward wave in rtp_str
*******************************************/

/*******************************************
* TODO: switch cases to avoid instability
*******************************************/

/****************************
* TODO: Try to fast me up!
****************************/

/*****************************************
* TODO: check error checking / timeouts
*****************************************/

/*****************************************************************
* TODO: This doesn't support proxies or redirect responses.
*****************************************************************/

/*****************************************
* TODO: Remove sanity check exit's.
*****************************************/

/**************************************************************************
* TODO: For maximum re-usability references to the view could be removed
**************************************************************************/

/*********************************************
* TODO: that, we'll play some tricks...
*********************************************/