[first]
* Entering 'host' or 'p' works in /bin/sh, while it shouldn't.
* Our Logo! :-) As ASCII art image, in /bin/sh, and on the webpage!
* DokuWiki @ webpage!
* Add bin/prime for demonstration :-)
* Compilation on OpenBSD
* Some GCC's don't have -mno-stack-protector! Use SCons's "autoconf" for this :-)

[bugs]
* Directory::insertEntry() type argument isn't valid! Now we simply use FileType directly,
  but isn't correct. We should define FileType without looking at libposix. Libposix should then
  translate from FileType to S_IF* and DT_* values.
* llvm-gcc and gcc45 on FreeBSD fails --> problem in X86Process::execute() ?
    --> and linker needs to be updated aswell. See beastie vm.
* Compilation with -Wconversion and -Wextra turned on fails
* Some files in site_scons/ on the LiveCD seems to be clobbered, when
  reading them with cat. Most likely a problem in Ext2File::read() and friends.
* VMCtl() : maybe pass two Address pointers!!! Then write the actual used paddr + vaddr there!!!
* Problem with CCFLAGS and construction Variables not solved:
    --> cc1: error: invalid option argument '-O0 -g3 -nostdinc -Wall -Werror -fno-builtin -Wno-write-strings -Wno-stack-protector'
* Fix these warnings:
    --> site_scons/checksum.py:18: DeprecationWarning: the md5 module is deprecated; use hashlib instead
    --> site_scons/checksum.py:19: DeprecationWarning: the sha module is deprecated; use the hashlib module instead
* Some dependencies between source files are missing in the SCons scripts
* SCons causes a rebuild when we use Glob("*.cpp"): http://scons.tigris.org/issues/show_bug.cgi?id=2419
    --> we use a static list for now.
* Running 'ps' a couple of times, reveales a memory leak somewhere... (memstat shows this)
* MemoryServer::doGrow() allocated a whole page, if e.g. only 1 byte is requested...
* remove IRQ hooks in ~x86Process(). Also, cleanup pending messages?
    --> simply keep a list with the copy of InterruptHook in each Process...
    --> Maybe also output this in ProcessInfo! :)

[project]
* Compilation testings on more platforms, e.g. Solaris.
* Added site_scons/checksum.py to the SCons wiki! :-) Checksum.py should be improved first.
* Generate a ChangeLog-0.0.1 aswell, with svn2cl :-)
* boot.ext2desc should be generated (?)
* We want full sources on the ISO aswell! :-)
* Write a svn download tool (or use exiting ones), that use for example svnsync to
  download a copy of the full repository, including all revisions and history to the local disk :-)
* We need ftp{1,2,3}.FreeNOS.org!!!
    --> Define a layout for this aswell. See FreeBSD's FTP.
* We need a logo/mascotte aswell, for fun :-)
* Library depends in Prepare(). Whenver library X needs Library Y to work, and Program Z needs Library X, auto-link with Library Y.
    --> Just use lists for this :-) But look out for circular deps.
* SCons Configuration (interface)? perhaps we can adapt kconfig for scons...
* if we have the main() argc/argv thingies, we could do configure
  the boot modules to use /dev/serial0 as the system console! :)
* Implement exercises 1-2-3 from http://www.cs.vu.nl/~bs/ in FreeNOS! :-)

[libraries]
* libregex: parse pattern through libparse
    --> build support for []
    --> build support for the rest
* libposix: separate functions into different .c/.cpp files, like libc!
* libparse: generic parser library, usefull for the Shell too! :)
    --> CommandLine
    --> StringParser, CommandLineParser, URLParser, ConfigurationParser
	XMLParser, RegexParser, HTTPParser, HTMLParser, ...
    --> URLParser may replace FileSystemPath aswell! :)
* libc: %NUMs formats support
* libposix:
    --> try to fork()
    --> try to execl() a file in /img
    --> fixup all posix library function documentation!!!

[programs]
* /sbin/init: should open fd's 0,1,2 for servers and login shell's appropriately.
    --> /srv/filesystem/virtual should then inherit fd's from their parent on fork(exec)'s!
    --> use /etc/init.conf or something
* Let the user /sbin/init drop it's priviledges to the lowest (least priviledged) runlevel.
* Commandline argc/argv support; via libparse.
* Random stack, heap and program text!!!
* We DON'T want setuid/setgid bits! (and we really don't need them either).
* Implement kill(1) touch(1) and mkdir(1) and cd(1)

[servers]
* Can we share the UserProcess table between the ProcessServer and VirtualFileSystem??? (instead of copying)
* /srv/filesystem/iso to read the LiveCD itself maybe.
* Place in the BootImage a flag whether to start or not start a BootProgram via the kernel.
  A BootServer can then control the boot order of the servers... (idea from JariOS)
    --> why not let /sbin/init do this? :-)
* logging daemon: ALL logging goes through this one, including (u)tmp etc.
* Faults -> process manager must receive the Fault message! e.g. use faultPID or so???
* Implement the notion of "current directory" in VirtualFileSystem.
* Let the filesystem perform auth checks aswell ;D
* /srv/usb/hub
* /srv/usb/disk
* /srv/storage, with a ramdisk and scsi (lsi's)
    --> Test it using, e.g. a dosfs dump of the project root
* /srv/filesystem, simple dosfs first
* /srv/memory: per process virtual memory stats.
    --> PROCESS_FOOTPRINT on initialization
    --> Use modEnd-modStart to calculate addition number of pages for boot modules
    --> then, for each MemoryMessage, just add it to the counter! :)
* Login server: allocate a pseudo tty? 
* Reincarnation server, a la minix 3.
* Inet server: maybe a /net, like in plan 9! :)
* make a /dev/random! e.g. RDTSC, IRQ's etc.

[sources]
* Suggestion from flupzor: use __BEGIN_DECLS instead of extern C.
* libcommon
    --> fix include/ et all???
    --> maybe put all include/api/*.h include/arch/*.h files just in
	kernel/, and include/*.h in lib/libparse,libalgo(rithm),libcommon,libdata (find a good name).
* REGISTER() for target!!! (without __attribute__((constructor)))
    --> remove temporary line from libexec/ELF.cpp:
	--> INITCLASS(ELF,__register_ELFdetect, "999")
* __attribute__((constructor)) for the target aswell in Init.h?
* __attribute__((constructor)) priorities in INIT*() in Init.h.
* Programs do: printf() and cout <<, to stdin,stdout,stderr. Servers log() to the log server,
  but libraries may be used by both! --> should have a solution for this.
    --> use C++ <<, override the cout object? C programs then still use printf()
* turn on the le/be type warnings!!!
* fix Assert.h:
    --> we COULD map page tables + dirs READONLY in every proces.. this way, assertRead/Write is very
        efficient!!! (define inline/macros in arch/ for this)
	--> the same *COULD* be done for remotes, but be VERY carefull (NOT r/w too).
	--> /proc/maps!	
    --> perhaps, memory server can then do more management of virtual memory?

* use #define ArchXXX etc
* void Memory::releasePhysical(Address addr)  <--- include size here?
* FooMessage.doBar() wrapper functions?

[kernel]
* kernel messages/logging... simply use LogMessage now :-)
* userlevel processes should NOT be allowed to IPC asynchroneously; e.g. to the VFS server; use runlevels.
* We could merge the two mapVirtual() overloads into one, then check for p == this :)
* IPC via files in /proc? :)
* perhaps we should allow multiple messages to be fetched in IPCMessage()! (speed++)
* Improve scheduler: don't put a Process on the queue if it isn't Ready!
    --> Also, fix the timer interval to switch processes --> currently a bit too fast...?
    --> Can we actually put the scheduler in userspace? Maybe a task gate? Is this slow?
* how to IPC using CPU registers only?
* SMP support!
* Ports to ARM, MIPS, *
