I'm an independent software consultant and I want to create a framework that lets me solve a wide variety of problems in a niche area. The purpose of the framework is to have existing building blocks that I can reuse and "configure" in order to implement custom solutions faster. For a client in the past I created a solution but the contract stated "work for hire" so I can't reuse parts of this code. I have a new client requesting a project of similar functionality but I want to "do it right" this time so that I can reuse this framework for other clients.
Any ideas on how to express this to the client both verbally and in the contract?
From what I've read in various resources it's either "work for hire" or you need to supply a license. Ideally I'd want to give the client full freedom to use and edit the code in perpetuity but also allow me to use this framework (and build some stuff on top of it optionally) for other clients. In other words do whatever you want with it but don't restrict me from reusing it with other clients.
I'm thinking of outsourcing this to some senior engineers that are better than me at executing this. The thing that's troubling me I don't want to take the full risk of paying for the development of the framework and then selling it to the client. Is there a way to develop this in the time that the client is paying (or as a fixed price) instead of developing it upfront?
Anyone has experience with a similar situation?