you can spend our money, write our code, upgrade your grey
matter(brizain), organize or incorporate us, document, port, design,
redesign;
userspace or kernel there is something in XOmB for Soulja Boy's best
friend: YOU!
Documentation)
- at a minimum, put this list online in an obvious place, so newcomers
who want to contribute know what they can do to help
- appoint website maintainer
- clean up xomb.org, wiki.xomb.org, ask appropriate ppl for
content/updates as needed
- document code
- document processes (or establish processes) for common tasks
- In-Our-Own-Words series, sum up what we know about a peice of
hardware (the APIC, geting to 64-bit long mode on an x64 chip) or
software (how to build a cross-compiler)
Reading!!!!!/Research/Writing)
- read about git and figure out a 'workflow' -- then write it up
- Device Driver models -- how do we manage the coming insanity?
- write an OS book
- read an OS book, and tell us what you learned, or how your vision of
XOmB changed
- read modern and classic OS papers in a particular area
- trawl the internets on a topic and present what you learned as a
teaching segment in a xomb meeting
- trawl and compare other ppl's code solving a given problem (e.g.
linux vs smaller OS like syllable, haiku, other systems you find on
osnews.com)
- read about tech businesses and pick an open source business model for XOmB inc
XOmB the .org)
- figure out what we need to incorporate XOmB (I can call in some
lawyers, mebbe for free, for the actual incorporation)
- figure out 'code assignment' so that ppl turn their code over to
XOmB org which administers the license terms
- how to get non-profit status
- do we need to be a non-profit to be part of 'google summer of code'?
- get us into summer of code
- non-profit to apply for grants?
- write grants
- what pgh-local orgs are there for tech startups -- Pittsburgh
Digital Greenhouse, Alphaworks, Northside Community Development,
incubators, etc.
XOmB the .com)
- can nonprofits do alphaworks? 20 week, $25k incubator of pgh tech startups
- can has business model?
Profiling and tradeoff analysis)
- how long does a context switch take? a system call? interrupt
overhead? IPIs versus standard interrupts?
- pick an app you care about and an existing OS, figure out where it
spends most of its time and how the OS is impeding it
D lang)
- gdc is dead, D 2.0 is coming
- port XOmB to D 2.0 and D-style inline x64 asm in prep for switching
to ldc (or any open source, maintained compiler)
Kernel)
- I/O buffer manager (in prep for FS, and maybe network)
- market/bidding mechanisms for RAM and Quantum allocation
- security model
- implement a full ACPI runtime for device detection -- standards
compilance is always a selling point and this would help the device
push
- (multicore) Virtual memory manager -- read about VMMs and figure out
what we need to do
- multicore cache coherence foo -- figure out what x86 'invalidation'
instructions we must execute when updating page tables, use IPIs to
invalidate cache/TLB on other processors
new kernel)
- port XOmB to ARM, Sun's Niagra, Itanium, PowerPC etc.
- port XOmB to EFI bios replacement (unless you have an Apple, you get
to buy an EFI dongle or two to turn 'normal pc' into 'EFI pc' )
Kernel-side? Devices)
- ne2000 network card driver (this is the psuedo-device from Xen)
- SATA/AHCI driver
- USB driver
- pick a GPU for us to buy and then port it to XOmB
- pick a NIC (preferably with built in support of virtualization) for
us to buy and then port it to XOmB
Userspace devices)
- Intel-VT + intel VMQD? virtualization for intel network cards
- can GPUs be virtualized?
- pick an accelerator, GPU, FPGA, Creative's Zii reconfigurable 'stem
cell' computing, or Intel's upcoming Larrabee and write a userspace
library exposing it to Applications
- also, find a task that we care about accelerating :)
Userspace pseudodevice)
- super-ultra userspace memory management -- malloc, garbage
collector, multicore slab allocator, Virtual Memory Managment, etc.
Applications and Demos)
- german ruler demo
- use xomb for distributed computing (P2P, heterogeneous hardware,
high chance of node failure)
- javaVM -- it'll be fast as hell with no 'host OS' and modern
compiler techniques
- start designing a clustered webserver with accomanying server
scripting language (miniD?) and database (initially, I'd just assume
SQL goes to a 3rd party Database, let oracle do oracle)
- use a port of Wine or ReactOS to build a remote-desktop windows
App-farm (this is Citrix' business model, they also do virtualization)
- write optimized/clustered network fileserver (this is netapp's
model, they sell commodity hardware with software profit margins)
Userspace executable foo) -- write OR port
- executable loader with general ELF support (and llvm bytecode, and
java bytecode :)
- when do we zero BSS, how do we find _start, other fun executable philosophy
- 'runtime linker' dynamic library support
Userspace Compat) - we are bring UNIX along with us, so we won't be
condemned to repeat it
- port libc & standard C++ library
- port UNIX languages and tools of your choice
- determine what is necessary for wider POSIX support (e.g. networking)
Userspace D)
- port tango
- appoint port maintainer, as tango is definitely a quick-moving target
Userspace XOmB)
- write RAMFS libos, patch into libc and tango
- do we want D libOSes to be based solely on tango, on a subset, or on
our own homegrown libd?
Userspace Windows)
- port wine or reactOS as a libOS for Windows support
- port Mono / .NET CLR virtual-machine
Kernel-userspace interface)
- method for issuing batches of system calls for maximum win, along
with wrapper code on both sides to manage it
Virtual machines)
- (reiterate: port javaVM or ,NET CLR applcation virtual machines)
- port xen to XOmB
- implement xen paravirtualization API or VMware API to support VMs
natively as 'applications'
- use Intel-VT to fully virtualize a client OS (in this case it is
unaware that it is a VM client)
===a good independent study===
- in a similar vein, implement a "dynamic binary translator" -- more a
'generic framework & custom plugin' approach to allowing apps for
different OSes and even completely different CPUs to run on XOmB
- port Dr. Childer's "Strata" dynamic binary translator to XOmB ,
which can probably then be used for Application virtual machines,
running foreign binaries, AND xen/vmware emulation
Get Famous)
- implement Apple's OpenCL standard for parallelization and
acceleration (you'd be the first :)
- port/implement other popular or up-and-coming specs and if-possible
participate in the working group in charge of the spec
Toolchain)
- get ldc working for x64
- maintain a separate git package of everything one needs to build
xomb, with scripts to automate the process
- appoint a maintainer to keep tools synced with upstream releases
- script testing of new compilers so maintainer knows if new releases
break stuff
Testing & Committers)
- pick some committers
- have things to commit
- kernel unit tests?
- userspace unit test support
- start scripting (or borrow) a harness for regression testing
- consider the addition of 'contracts' to our D programming for
greater testing and fault detection