Technology transfer: from research to production software
I am currently in the process of retrieving the code of a research software prototype, so I’ve come up with a list of things to keep an eye on when aiming at commercialisation:
Generalisation to target use cases:
- Can I reproduce the results reported in the research paper presenting the prototype? Any surprises along the way? Often times papers don’t tell the whole story but mainly the good bits. If working in computer graphics for instance, nothing beats experiencing the software first-hand and looking at the visual output.
- Does the quality of results rely on manual tweaks of the software? How much automation is there in the system?
- Performance on the problems I care about, are the results still of the same quality? These problems may differ in nature or in size from the original ones treated by the research paper.
- What is the execution time, CPU load, memory footprint, bandwidth usage on my target use cases?
- Will the software work and perform well on the end-user target platforms? (CPU, memory, bandwidth constraints)
- Dependency on proprietary software (e.g. SDK or runtime), plugins (e.g. Flash), etc.
- Quality of code will have an impact on portability, stability, maintainability, reusability. Is there documentation? Unit+functional tests?
- Look for any potential license issues if use of 3rd party Open Source components.
- Can I package the software into a single installer?
This list is probably not exhaustive. What would you add? What do you think is most important? Let me know in the comments!