I would encourage #2, because (please forgive the massive simplifications): If option 1 succedes, only users in the OS space benefit. If option 1 fails[*], none benefit. If option 2 succedes, everyone benefits. If option 2 fails[**], everyone benefits. *: A generally useful CAD system will have at least 1,000,000 lines of code. A single developer hits a wall at maintaining less than 100,000 lines of code. So, you'd need at least 10 active developers with serious hyper-activity issues just to maintain the code. Imagine how many more you'd need to make forward progress. **: There is no such thing as a failed conversation. Not in this case anyway.