What Is A Clean Room Implementation?
Bryan Brunton asks: "I am writing an open source game called Merchant Empires For now, it is almost completely based on a closed source game called Space Merchant. IMO, Space Merchant is slow, ugly, and bug-filled. I am getting Space Merchant users who log into my game, spew some profanity and claim that I will be sued. I have no access to Space Merchant source code. Can I be sued? If so, what do I need to do to make my game qualify as a clean room implementation?"
The team that develops the product (ie the second team) has to have some way of showing that they do not know about the original product. This is often not easy to do since you need to find skilled people to develop a product but in the course of them gaining skills they never came accross your product. These people are refered to as software vigins and demand a pretty hefty price for the knowledge and *lack* of experience in certain areas, since after completion of a project they now have experience in that area.
A famous example of virgins in action is the development of IBM PC clones. Sure you could buy an intel CPU chip off the shelf, and a video card from someone, but they key to an IBM clone was their ROM BIOS - something that IBM didn't want to sell to everyone. So people like compaq hired people (don't ask me where they found them) who had experience designing hardware, but had somehow never seen the IBM BIOS to develop a product based on team A (who are new dirty since they have intemately gotten to know the IBM BIOS)'s product design.
A very imporant key is the cleanlyness of the virgins - since if you lie about them, the vendor being copied can show that your hole development process was a charade.
An attempt to keep things from looking too obvious is to use sort of an OO approach wherein your dirty design team breaks the product down into so many sub components that the developer of each respective component has no clue of what the project is they are working on. This type of practice is common in governmnet positions where keeping lowly joe-coder from knowing if his sub-routine will be for a secretaries email cilent or for a missile pointed at Russia.
Wheeeee
O.k. the standard clean room process is used to re-implement projects through reverse-engineering.
First, one developer/team comes up with a detailed specification of what the program does. This person/team is the one who has complete access to the product being reverse engineered. The developer writes up a detailed specification, including file formats, interfaces, everything.
Once the specification is completed, the first team will go to a lawyer and hand off the specification. The lawyer then goes to the implementation team and gives them the specification for implementation. There can be no communication except through the specification between the two teams, and the specification cannot include any of the original source, etc. (in other words, cut/paste, screen shots don't count). I don't even think that you are allowed to ask questions back to the original team. Once the spec is handed off, the original team is finished with the project, never to be heard from again. The members of the implementation team should also have never seen the original product that they are re-implementing.
Then the implementation team implements the product according to the (hopefully very) detailed specification.
Once this is all done, you should have a clean room re-implementation of the original. Of course, you will then end up with having to fight all of the lawsuits based on trademark infringement and copyright (see pac-man).