Emerging component-based software development architectures promise better re-use of software components, greater flexibility, scalability and higher quality of services. But like any other piece of software too, software components are hardly perfect, when being created. Problems and bugs have to be fixed and new features need to be added. This paper analyzes the problem of component evolution and the incompatibilities which result during component upgrades. We present the state of the art in component versioning and compare the different methods in component models, frameworks and programming languages. Special attention is put on the automation of processes and tool support in this area. The concluding section sketches a possible solution of these problems we are currently working on.1. Does the system have the ability to distinguish different versions of the same component at all?2. How are syntactical and semantic changes detected and how are these changes reflected in the version information?3. How is the compatibility and incompatibility between different component versions detected and how is that reflected in the version information? January 2005 Volume 30 Number 1