Great question. The answer is best considered in stages:
- The earliest versions were basically dotProject with a new theme, some performance improvements due to some database fixes, and a permissions caching layer.
- By the time version 1.0 rolled around (June 2009), we had removed old/irrelevant code, added dozens of new features, added a module to core, and closed more issues than we care to consider.
- By the time we reached version 1.2 (December 2009), the differences were more obvious: We had removed 35% of the codebase (~65,000 lines of code), added extensive Unit Testing, improved performance by 20-50x on many screens, and began a complete refactoring of the core API to make it uniform and more easily extensible.
- More recently with the version 2.0 release (June 2010), the differences have grown further: Adding user-based timezone support, detailed subprojects functionality with data roll-ups, and extensive audit logging and security checking.
- By the version 2.4 release (August 2011), task dependencies – including subprojects – auto-update as task end dates shift. Further, less than 10% of the web2project code is carried from dotProject.
- In the coming version 3.0 release (est: early 2013), we have a full event-driven hook system to allow for modules to use pre/post- (create, update, load, and delete) actions. More importantly, we will support task/costcode-based budgeting and reporting. Finally, our GPL -> BSD license change will be complete.
So, is web2project just dotProject with a new theme?
We were… but now we’re something else entirely.