I am a biologist. I wrote and am about to submit a manuscript that describes a statistical analysis of computer model; it is a statistical methods and modeling paper.

After my manuscript was written, a collaborator with a background in CS started to develop the code for their own project. In the process, they substantially improved the code, making it more logical, more readable, more adaptable. However, it still reproduces my original analysis unchanged and the manuscript itself has not changed.

The collaborator has not asked for, and I have not offered, authorship, but another co-author asked me to consider it.

I am uncertain about whether his contributions merit authorship, and my primary concern is that authorship reflects intellectual contribution. On the one hand, the manuscript itself has not changed. On the other, the software that was described by and will be released with the paper has changed.

I would like to collaborate with this and other computer scientists more in the future, but I would like to better appreciate what constitutes an intellectual contribution.


Both with respect to this case, and more generally, how can I determine when a collaborator's contribution meet both of the two following criteria of authorship (from the Committee on publication ethics):

  1. substantial contribution to conception and design, or acquisition of data, or analysis and interpretation of data;

  2. drafting the article or revising it critically for important intellectual content;


update: it is clear from further consideration and the answers in below that the contribution justifies authorship, so I will offer it.

  • $\begingroup$ a somewhat related blog post by Michael Mitzenmacher: mybiasedcoin.blogspot.com/2010/04/60-40-papers.html $\endgroup$
    – Kaveh
    Commented Apr 17, 2011 at 7:55
  • 2
    $\begingroup$ This is a good question but I don't really see how this is related to theoretical computer science? It sounds to me more like a problem that often arises in more applied fields of CS. $\endgroup$ Commented Apr 17, 2011 at 11:19
  • 4
    $\begingroup$ @Jukka: on the other hand, this is a concern of theoretical computer scientists who develop software to help obtain or validate their results. $\endgroup$ Commented Apr 17, 2011 at 12:13
  • $\begingroup$ @Jukka: I misinterpreted the scope of theoretical CS based on some of the posts in Meta, (e.g. 'Where to ask too basic questions') and wikipedia. In addition, I couldn't find a more appropriate forum. I am happy with the advice that I have received and apologize for posting outside of the scope of the site. $\endgroup$ Commented Apr 18, 2011 at 18:03

5 Answers 5


To me, a substantial contribution to software design may be related to many different things. For instance, rethinking the whole architecture, rethinking algorithms and data structures used, augmenting modularity, making the code easier to maintain and, in particular, applying correctly what in Software Engineering is usually called "design for change".

According to your description, making the code more logical and adaptable may deserve authorship: it just depends on how much the overall code quality has changed, and it is up to you to judge this. I understand that, being a biologist, this is of course almost impossible to judge correctly on your side. You may ask a CS colleague about.

On the other hand, making the code more readable is not necessarily so important. Indeed, code written by seasoned professionals programmers (especially in C and C++) is usually more difficult to read (because it is more concise and the typical style adopts statements not immediately understood by the majority of the people) w.r.t. code written by junior programmers and students. Even though every Software Engineering textbook stresses that code readability is important, especially in connection to software maintenance, practice is quite different from theory, at least for professional grade and commercial software.

  • $\begingroup$ thank you for your advice. I chose yours as correct because you made clear distinctions about the different ways in which a collaborator could contribute. $\endgroup$ Commented Apr 18, 2011 at 17:50
  • $\begingroup$ @David, you can accept this answer by clicking on the check box outline to the left of the answer. $\endgroup$
    – Kaveh
    Commented Apr 19, 2011 at 4:48

My view on this particular case is that the CS colleague's name should not go on the paper for the simple reason that the research had been done and written up before his/her contribution was made. The CS colleague's work made no contribution to your results.

As you said, the CS colleague is going to use the code for his/her own research, so he/she already has something for free. One question you could be asking is whether you should be on his/her subsequent papers based on this software.

In general, people who do the development work do deserve some credit even if their work helps facilitate scientific output, rather than directly contributes to it. For example, if someone wrote a program based on some design that I made, which would then form the basis of my further work, I would definitely give them credit for it, at least on the first instance.

Of course a lot of factors will influence this decision. Whether the developer is a PhD student, post-doc, professor or a "just a" programmer. Whether the person depends crucially on the publication. Whether the project's evaluation depends on joint publications (to show, for example, interdisciplinary collaboration). Political reasons: will the joint publication create goodwill for future collaborations?

It's not a black/white issue and very hard to decide. In general, it's probably best to avoid any possible badwill, because that can really spoil a (possible) collaboration.

  • 1
    $\begingroup$ thank you for your answer. I intentionally left out the position of characters in my story because I would like to abide by standards of authorship that only consider contribution; in the end, I am learning to accept that these considerations, as well as team-building, motivation, and education do come in to play when the answer is unclear. In this case, I am a post-doc and the collaborator is a first year grad student. $\endgroup$ Commented Apr 18, 2011 at 17:45

My policy includes the following rules:

  1. if you remove everything that the person has done, is the paper/work still the same?
    • no authorship: the paper/work is the same
    • authorship: if the paper/work is not the same
  2. Is the software part of the publciation?
    • authorship: If the paper+software are released together, and the paper largely describes the software. In this case, the software is just as much part of the publication as the text and figures.
    • no authorship if the software is released separately
  • 2
    $\begingroup$ I think that the most relevant realization to me was considering the software part of the publication rather than just the subject of the publication. $\endgroup$ Commented Apr 18, 2011 at 17:46

Different CS communities have different processes, and it's hard to make a clear determination with the information given. Based solely on your description of the improvement as "more logical, more readable, more adaptable", it wouldn't necessarily merit coauthorship in a theoretical paper.

It ultimately depends on how significant the improvements really were, and how nontrivial. I should add that at least in theoretical computer science, authorship tends to be handed out somewhat more liberally than in more experimental subdisciplines.


Is the code something that might be useful to other people in a more general sense? If so, then you might try a sort of "best of the both worlds" approach and write a joint application note -type paper with the CS person in addition to your theoretical paper. These are, in my experience, rather common in bioinformatics; see, e.g. the journal Bioinformatics.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.