Site Home Page
The UML Wiki
UML Community Site
The UML roadmap
What it's good for
Case Studies
Kernel Capabilities
Downloading it
Running it
Compiling
Installation
Skas Mode
Incremental Patches
Test Suite
Host memory use
Building filesystems
Troubles
User Contributions
Related Links
Projects
Diary
Thanks
Contacts
Tutorials
The HOWTO (html)
The HOWTO (text)
Host file access
Device inputs
Sharing filesystems
Creating filesystems
Resizing filesystems
Virtual Networking
Management Console
Kernel Debugging
UML Honeypots
gprof and gcov
Running X
Diagnosing problems
Configuration
Installing Slackware
Porting UML
IO memory emulation
UML on 2G/2G hosts
Adding a UML system call
Running nested UMLs
How you can help
Overview
Documentation
Utilities
Kernel projects
Screenshots
A virtual network
An X session
Transcripts
A login session
A debugging session
Slackware installation
Reference
Kernel switches
Slackware README
Papers
ALS 2000 paper (html)
ALS 2000 paper (TeX)
ALS 2000 slides
LCA 2001 slides
OLS 2001 paper (html)
OLS 2001 paper (TeX)
ALS 2001 paper (html)
ALS 2001 paper (TeX)
UML security (html)
LCA 2002 (html)
WVU 2002 (html)
Security Roundtable (html)
OLS 2002 slides
LWE 2005 slides
Fun and Games
Kernel Hangman
Disaster of the Month
No matter who you are, what you do, or what level of programming ability you have, there are ways that you can help out with UML.
Non-programmers
If you don't program at all, there are a number of things that you can do. The main one is to just use UML. Report any bugs, problems, or rough spots that you encounter. If you find workarounds, tell us about them, too. There are a large number of different kinds of environments out there, and there may be assumptions accidentally built in to UML that cause it not to work, or not to work well, in some of them. The more people we have using UML, and the wider the variety of situations it's used in, the more robust it will become.

You can check the documentation - you probably will do so in the course of learning what you can use UML for. The main thing that you can do is report any problems you find.

If you want to help in a more systematic way, you can

  • proofread it - I try to be grammatical and spell things correctly, but sometimes mistakes slip through.
  • fact-check it - in particular, make sure that the step-by-step procedures actually work. They occasionaly get out-of-date, describing methods of doing things that no longer work because new ways have been introduced and the old ways removed. They may not work in all environments. They are mostly written up after I've got them working on my laptop. Your machines may differ, and they may differ enough that my procedures don't work for you. Also, I may have found a overly-complicated way of doing something. If you know a simpler way, you should let us know about it.
  • style-check it - it may be that a way of doing something is correct, but poorly worded or confusing. If you get lost trying to do something, you should complain about it. If you persevere and figure out how to make it work, it would be very useful for you to go back over the documentation and see where you got lost. Then, figure out what it could have said that would have prevented you getting lost, and send that in.
Documentation fixes will be accepted in any usable form, including a general description of something that needs doing, suggested text as just text, or fix to the XML source for the documentation.

If you want to get more involved in the documentation, it is described here.

User-space programmers
If you want to contribute code to UML, but you aren't a kernel hacker, there are a number of areas that need work. There are a number of tools that come with UML that aren't strictly part of it, but which make using it easier in some way (such as the uml_net networking helper) or which provide access to UML functionality (such as the mconsole client). There are a variety of enhancements that can be made to these.

Various applications of UML are going to require tools which don't currently exist. For example, for UML to be most useful for virtual hosting, there need to be tools which can configure and run a virtual machine for a new customer. People who are doing networking of clustering experimentation with UML need something similar, except that it needs to be able to construct a specific network of UML virtual machines.

The UML packaging is somewhat ad-hoc at the moment. I've learned enough about both RPM and Debian packaging to be able to put together defensible UML packages in both formats. However, I'm sure that they would not be considered 100% kosher by either camp. So, there is a need for packaging experts to have a look at the UML packaging procedures, find the mistakes, and fix them.

Contributing code to UML itself is not completely out of the question if you're not a kernel hacker. Since UML is a port of the Linux kernel to Linux, the lowest levels of the code, which in other ports, are hard-core hardware-specific code, are generally fairly straightforward userspace code. That code does stuff like read files, talk to pseudo-terminals, communicate over the net, etc. It's perfectly possibly for people who don't know about kernel programming to contribute useful stuff here.

Kernel hackers
If you're a kernel hacker, you can find and fix bugs in UML. I've listed the bugs (and some features) that I want to fix before UML V1.0 here.

There are also a number of longer-term projects described here. These are the post-V1 things I want to do, but I certainly have no objection to people starting work on them now. They include things like adding SMP support, implementing clusters of various types (first DSM-based clusters, moving to more standard RPC-based clusters), making Linux a better host for UML, ports of UML to more architectures and to other operating systems, and a variety of other things.

Other contributions
There are some things that you can do to help out UML, no matter who you are:
  • New applications - I have a number of applications of UML listed here. I am but one person and my imagination is limited. If you find UML useful for something and it's not listed there, let me know.
  • Propaganda ... err, spreading the word - If you find UML useful for something, chances are you know other people who are doing the same thing who don't know about UML. Tell them about it. Recommend most strongly that they start using it. If you know of web sites or publications that would be interested in UML, suggest that they write about it.
  • Donations - Other sorts of things will be cheerfully accepted
    • Hardware - A good rule is that anything that gives me faster kernel builds is good. SMP kit is also good, since UML has displayed races on SMP machines that aren't seen on UP machines. Non-x86 hardware is good, particularly if it comes with an interesting vendor OS (i.e. VMS or OS/400). This will help out the UML porting situation.
    • Money - It can be exchanged for the aforementioned toys, so it's good too.
    • Anything else - Get in touch and we can discuss it.
Hosted at SourceForge Logo