In the world of software development, maintenance mode refers to a point in a computer program's life when it has reached all of its goals and is generally considered to be "complete" and bug-free. The term can also refer to the point in a software product's evolution when it is no longer competitive with other products or current with regard to the technology environment it operates within. In both cases, continued development is deemed unnecessary or ill-advised, but occasional bug fixes and security patches are still issued, hence the term maintenance mode. Maintenance mode often transitions to abandonware. Sometimes, when a popular free software project undergoes a major overhaul, the pre-overhaul version is kept active and put into maintenance mode because it will still be widely used in production for the foreseeable future. Project forks can also spawn from programs that go into maintenance mode too soon or have enough developer support for a more advanced version. A good example of this is the vi editor, which was in maintenance mode and forked into Vi IMproved. The Vim fork has many useful features that vi does not, such as syntax highlighting and the ability to have multiple open buffers. See also Steady state Software maintenance