<p>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". </p>

<p>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.</p>

<p>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.</p>

CC BY-SA 3.0
2011-04-18T17:50:29.413Z
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.
David LeBauer
CC BY-SA 3.0
2011-04-19T04:48:12.257Z
@David, you can accept this answer by clicking on the check box outline to the left of the answer.
Kaveh
CC BY-SA 3.0
2011-04-17T07:34:37.130Z
2011-04-17T07:34:37.130Z
Massimo Cafaro
<p>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.</p>

<p>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.</p>

<p>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. </p>

<p>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?</p>

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

CC BY-SA 3.0
2011-04-18T17:45:00.547Z
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.
David LeBauer
CC BY-SA 3.0
2011-04-17T10:15:29.003Z
2011-04-17T10:15:29.003Z
Dave Clarke
<p>My policy includes the following rules: </p>

<ol>
<li>if you remove everything that the person has done, is the paper/work still the same? 
<ul>
<li>no authorship: the paper/work is the same </li>
<li>authorship: if the paper/work is not the same</li>
</ul></li>
<li>Is the software part of the publciation? 
<ul>
<li>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.</li>
<li>no authorship if the software is released separately</li>
</ul></li>
</ol>

CC BY-SA 3.0
2011-04-18T17:46:13.950Z
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.
David LeBauer
CC BY-SA 3.0
2011-04-17T12:18:45.403Z
2012-02-10T20:12:56.727Z
2012-02-10T20:12:56.727Z
Sylvain Peyronnet
<p>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. </p>

<p>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. </p>

CC BY-SA 3.0
2011-04-17T05:42:19.207Z
2011-04-17T05:42:19.207Z
Suresh Venkat
<p>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.</p>

CC BY-SA 3.0
2011-04-17T22:09:13.653Z
2011-04-17T22:09:13.653Z
Janne H. Korhonen
<p><strong>Background</strong></p>

<p>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.</p>

<p>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.</p>

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

<p>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. </p>

<p>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.</p>

<p><strong>Question</strong></p>

<p>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 <a href="http://publicationethics.org/files/u2/2003pdf12.pdf" rel="nofollow">Committee on publication ethics</a>):</p>

<ol>
<li><p>substantial contribution to conception and design, or acquisition of data, or analysis and interpretation of data;</p></li>
<li><p>drafting the article or revising it critically for important intellectual content;</p></li>
</ol>

<p>?</p>

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

CC BY-SA 3.0
2011-04-17T07:55:33.467Z
a somewhat related blog post by Michael Mitzenmacher: http://mybiasedcoin.blogspot.com/2010/04/60-40-papers.html
Kaveh
CC BY-SA 3.0
2011-04-17T11:19:38.983Z
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.
Jukka Suomela
CC BY-SA 3.0
2011-04-17T12:13:50.837Z
@Jukka: on the other hand, this is a concern of theoretical computer scientists who develop software to help obtain or validate their results.
Dave Clarke
CC BY-SA 3.0
2011-04-18T18:03:00.690Z
@Jukka: I misinterpreted the scope of theoretical CS based on some of the posts in Meta, (e.g. ['Where to ask too basic questions'](http://meta.cstheory.stackexchange.com/q/1093/4705)) and  [wikipedia](http://en.wikipedia.org/wiki/Theoretical_computer_science). 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.
David LeBauer
<soft-question><research-practice><writing><authorship>
What is a substantial contribution to software design, with respect to authorship?
David LeBauer
# What is a substantial contribution to software design, with respect to authorship?

(Asked by: username_0 on 2011-04-17)

**Background**

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.

**Question**

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](http://publicationethics.org/files/u2/2003pdf12.pdf)):

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.

**Tags:** soft-question, research-practice, writing, authorship
> **Comments:**
> **username_1**: a somewhat related blog post by Michael Mitzenmacher: http://mybiasedcoin.blogspot.com/2010/04/60-40-papers.html  
> **username_2**: 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.  
> **username_3**: @Jukka: on the other hand, this is a concern of theoretical computer scientists who develop software to help obtain or validate their results.  
> **username_0**: @Jukka: I misinterpreted the scope of theoretical CS based on some of the posts in Meta, (e.g. ['Where to ask too basic questions'](http://meta.cstheory.stackexchange.com/q/1093/4705)) and  [wikipedia](http://en.wikipedia.org/wiki/Theoretical_computer_science). 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.  

---

## 5 answers

### Answer by username_4 on 2011-04-17. Score: 5 | Accepted answer

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.

> **Comments:**
> **username_0**: 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.  
> **username_1**: @David, you can accept this answer by clicking on the check box outline to the left of the answer.  

---

### Answer by username_3 on 2011-04-17. Score: 12

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.

> **Comments:**
> **username_0**: 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.  

---

### Answer by username_5 on 2011-04-17. Score: 10

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

> **Comments:**
> **username_0**: 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.  

---

### Answer by username_6 on 2011-04-17. Score: 4

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.


---

### Answer by username_7 on 2011-04-17. Score: 3

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.


---

