4

I recently made some changes to a piece of (proprietary) code that my group uses which has made it two orders of magnitude faster. The code I updated wasn't mine and the original algorithm IP was published a few decades ago so I can't claim I did anything other than some clever refactoring/parallelizing (which somehow everyone else said wasn't possible). The impact of this update is such that work that would have taken months can now, in principle, be done in under a week (or from hours to minutes).

Unfortunately academia doesn't really reward 'enablers' for improving software so I'm not really sure what I can gain from this beyond some ideas in my own PhD that were not possible previously.

The critical point, compared to other questions I've seen on this topic, is that the code is now commercially viable. Understandably my supervisor is very happy and wants to keep things under wraps for the time being.

I'm aware that the university probably owns every line of code I just wrote. Do I have any ground to request compensation if the software starts being licensed? I don't want to sour the relationship I have with my supervisor which has up until now been very good (and I've just earned a lot of respect for this work).

If I was working in industry this is about the time I'd be going to my line manager and at asking for a salary bump or a promotion. In academia it seems like this sort of work is relegated to a pat on the back and a footnote. I suspect I'm being sour, but is this just the way it goes?

Am I allowed to ask that people cite the software even if it's not a publication (not that we have a website!)? For instance one can cite R, Numpy, etc.

4
  • 7
    "I'm aware that the university probably owns every line of code I just wrote": The university will have an IP policy that will explain explicitly whether this is true. You should probably read it. Jan 17, 2015 at 3:02
  • The copyright vests in the university for software. It gets tricky because the original code was funded through a grant pot several years ago and as mentioned - the stuff I haven't re-written is clearly not mine. I'm building (however significant the changes are) on old code. Either way, I don't think I have much ownership rights to it. Not so fussed about that, I'm more concerned about recognition for the work.
    – Sam
    Jan 17, 2015 at 3:13
  • 2
    "Unfortunately academia doesn't really reward 'enablers' for improving software" [Citation required]. I could pull a bunch of papers that are just reimplementations of previously published software. Not to speak of the new capabilities it enables (you could publish a paper dealing with a problem that would had taken years).
    – Davidmh
    Jan 17, 2015 at 16:07
  • Earning "a lot of respect" has certainly some non-trivial value. And it is possible for sure that it indirectly leads to monetary value too. Dec 23, 2017 at 3:33

2 Answers 2

2

As a software developer it is hard to believe that improving a piece of (proprietary) code can made it two orders of magnitude faster. Although parallelization can make it 2-5 times faster on a modern workstation of 6-8 cores, unless the original code was notoriously bad it is hard to imagine that it can really be faster by two orders of magnitude (~100 times faster) just by improvement, without changing the original algorithm. So, are you 100% sure that the acceleration you get is legit? Sometimes (especially with parallelization) when things are too good to be true, there is some subtle condition which usually breaks by parallelization. So, first make 100% sure (compare results produced for a wide range of input data) by the two versions of the software (the old and your version). I assume you use some version of version control system (who does not?), so you still have the old version somewhere. It does not matter if this experiment takes a few days - 1-2 weeks it has to be done to be 100% sure that something did not break and you do get identical results between the two versions of the software for a wide range of input data and not just by a small test case.

If you are 100% sure that you really improved the software without breaking anything, the main question is did you actually improved the original algorithm or not. Simply adding an OpenMP directive and parallelizing a code which was parallelizable all along, is not a publishable result. In this case, your improvements do not merit a publication and therefore no publication => no citation, since you did not create the original software. On the other hand, if you did more than refactoring / parallelizing the software and your contribution is significant you must publish these results on a technical-focused CS conference. Then everyone using your version of the software could cite this work and additionally could cite the online version of the software if it is publicly available.

On the legal version of your story, I really do not have the expertise to answer. In this case, I would search the IP policy of the university as @NateEldredge suggests and ask an experienced lawyer who knows about software patents. I do not think anyone of us here are really entitled here to give legal advice. Of course if your version of the software starts getting money for the university, you are probably entitled to a share and you must protect your rights as good as you can. It is just that right now, we do not know if this software is going to actually become a product for sale.

Also about your paragraph:

If I was working in industry this is about the time I'd be going to my line manager and at asking for a salary bump or a promotion. In academia it seems like this sort of work is relegated to a pat on the back and a footnote. I suspect I'm being sour, but is this just the way it goes?

I do not know how much experience you have in the software industry, but be rest assured that you do not get a raise everytime you do a good job. After all, this is expected from you and it is a prerequisite for you keeping your job for a long time. You can always ask for a raise, but that does not mean you will get one.

On the other hand as I mentioned earlier, either you changed the software's algorithm and implementation so much that you deserve a separate publication or you bug-fixed a crappy code (which you will use on your PHD) which does not really say that much. Either case, this is probably the only credit you will get.

4
  • Yes. I improved single threaded performance by around 20x (overall), changed a few sections which were incredibly inefficient and then got linear speedup by threading it. It was a classic case of poor academic code, and yes, I version controlled it and checked repeatedly against the original to make sure the results were still valid. And yes, the speedup is 'legit'. Sure, I wouldn't go asking for a raise now, but when my performance review came up I would certainly mention that I saved the company potentially thousands of hours...
    – Sam
    Jan 17, 2015 at 16:56
  • To expand a little. Everything is versioned with git. Each revision is checked against the original on a variety of different test cases. The runtime is directly proportional to the input size and I have plenty of results using the original software to check. But thanks for clearing it up, I figured it probably wouldn't be citable but I think it would be foolish not to check.
    – Sam
    Jan 17, 2015 at 17:00
  • 2
    I suspect my best bet would be to attempt to make a novel modification to the code that wasn't testable before (due to the amount of time needed to test/iterate) and publish that.
    – Sam
    Jan 17, 2015 at 17:01
  • Adapting software for GPU can definitely get several orders of magnitude while not being completely obvious.
    – Davidmh
    Jan 18, 2015 at 11:10
0

The most simple solution is to publish these new results. The question to this answer can be found here: In which journals should I publish my software?. This is the most appropriate thing to do. Some journals also have something like the ``OUP Bioinformatics Application Notes''. Check, together with your advisor, if you can find something like this.

The possibility of monetary compensation of some form is probably low. Not only because you are in academia, also because you most likely work as some form of public servant. Details are different for all countries and work places, however.

1
  • I mentioned compensation because I also work in industry. We've had several projects where we've had to offer clients alternative software because the code I refactored was too slow to be practical (even though the results are normally superior). I doubt it'll come to that, but as I mentioned in another comment - I'd rather find out my options and get nothing than never ask and never know.
    – Sam
    Jan 17, 2015 at 17:17

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .