“The transition from Basecamp 1 to Basecamp 2, and from Basecamp 2 to 3, involved complete rewrites of the software from scratch.”