11

In short:

I have ported a package in another programming environment, and I want to write a paper of my ported package. Would it be considered cheating?

In details:

I have implemented a package in Python, that is modeled after an R package, which means my package has the design and APIs similar to original's.

The authors of original R package has published an official paper about the package on Journal of Statistical Software. And now I want to write a paper about my python package.

The point is, since the design and APIs are similar, the structure and content of the my paper would be similar to that of the original package's paper. For example, in the original paper, the authors explained what Corpus class is, and in my paper, I would explain that my python-version Corpus has similar attributes.

The biggest differences are brought by the environments and dependence, and some language-specific details.

So, would it be considered cheating if I write the paper of ported software? Of course, the relative sections of my paper would include the comparisons between two packages and I would cite the original paper as appropriate as I can.

2
  • 26
    In which field would an implementation be worthy of scientific publication at all?
    – Raphael
    Commented May 4, 2014 at 9:18
  • 5
    A publication can be used to let other people know of your package. Probably not publishable in a research journal, but surely as a letter or on a specialised venue.
    – Davidmh
    Commented May 4, 2014 at 11:00

7 Answers 7

24

Your paper must clearly delineate what is your original contribution and what is the same as, or based on, the previous package. So if you write about your Corpus class, for example, you must say that it is modeled after the R package's Corpus class. Otherwise it is "cheating," as you put it.

(It's also not clear to me that a straightforward port of an existing package would be considered a novel research contribution by most venues for publication. But that's an entirely different question.)

8
  • I am citing tm paper, e.g., while talking about the design about Corpus class. So I am free from "cheating", "dishonest" or "academic misconduct", right? (PS: And I think the paper is not meaningless since some implementations and usages are more or less different in two packages, and the APIs are similar, but not the same.)
    – fyears
    Commented May 4, 2014 at 6:12
  • 12
    @fyears It's not enough to just add a reference to the tm paper, you also need to make it clear what is original and what is based on tm package.
    – ff524
    Commented May 4, 2014 at 6:16
  • 16
    The description of a straightforward port will probably be rejected by a research journal in my opinion, too. A paper is not a usage manual. A detailed comparison between the two packages is already a step forward, but probably still not enough in my view. Best would be if you added something of yours, such as a better algorithm, a nontrivial implementation detail, highly improved performance, or a more expressive syntax which is made possible by the features of Python. Commented May 4, 2014 at 8:09
  • 1
    @scaaahu I wanted to take your advice, but then reconsidered. First of all, I am not confident enough to be sure that it is sound advice -- there are journals devoted specifically to software, and the criteria may be more nuanced than what I get as someone in a different subfield. Second, as noted by ff524, the OP asks for something slightly different. Commented May 4, 2014 at 9:15
  • 6
    @fyears That said, I don't want to detract from the value of your work -- good-quality open source software, integrating as many features and packages as possible, is important and useful for the scientific community; I wish this kind of efforts were recognized more. Commented May 4, 2014 at 9:17
11

Just to add to ff524's answer, the Journal of Statistical Software (JSS) does have precedence for publishing articles that are simply "ports" of other current software. For one example see An SPSS R-Menu for Ordinal Factor Analysis (Mário Basto & Pereira, 2012). This article doesn't rewrite the package in a new environment, but simply creates a set of GUI menu's in SPSS to call the R package - which is considerably less work. (This would be equivalent if you simply used RPy to call the R libraries directly from Python.)

It is hard to say whether you could get such a paper published in the JSS or somewhere else. As a positive, I would imagine there is a large user base (not necessarily statisticians) that are using Python for text processing that could use such a library. On the downside as others have mentioned its original scientific contribution is questionable in light of its redundancies with the R package. (I personally would rather do such things in Python, but you need to remember the editors of JSS are statisticians who may not hold the same views.)

I would suggest you write the paper anyway and post it publicly online, as in a paper form it tends to be a gentler vignette to using the software than the doc's typically afford. Even if you can't get it published it still provides positive exposure for your work - and will still be cited if someone uses your library for academic work.

1
6

Every scientific work is normally always based on some previous works.

These previous works must be cited. Cite paper, conference thesis or in the worst case website or "personal communication" of the original software saying that this is the initial version that you have ported. If you do this, it is completely honest to write the article.

I am not sure if just porting to another language brings enough scientific novelty but say porting the old forgotten 1965s piece of code in FORTRAN into C++ using object oriented design and some new advanced algorithms probably is.

1
  • 1
    +1! A direct port using the same patterns etc, but just in a different language is not something I'd consider worth writing a paper about. Maybe a blog and putting it on Github. (Like RxJava, a port of C#'s Reactive Extensions to Java) Ofcourse, if OP thinks there's more to his port (e.g, there were some language-design issue that had to be overcome or he improved on the way the original SE's did it), than he could consider the paper. I'd myself probably opt for a blog on the topic unless it's really something special. Commented May 4, 2014 at 12:56
4

As long as you give proper credit (cite the previous work and make clear that your package is based on it), I do not see how publishing a paper could ever be construed as “cheating” on your part. The more likely question is if and where you could get it published. It is not dishonest to try and publish something even if you are not sure it is “worth“ a paper. It is the journal's (i.e. editor's / referees') job to judge that.

That said, in my field (physics), what you describe would likely not be considered “enough” for a paper. There are journals that publish papers which “only” introduce a new program package (Elsevier's Computer Physics Communications comes to mind), but I do not know if they would accept a “translation“.

Again, all this would depend on your field, but in my environment a typical approach would be to include some applications of your program, and try to publish in a “standard” journal (i.e., one not focused on software).

3

I'd counter some of the other answers and say not only should it be fine, but there's a range of avenues you could explore for publication, as long as you consider the type of publication and journal carefully. (As well as following the advice already given about citing the original work thoroughly and highlighting differences in your implementation.)

Consider that many journals may have additional manuscript types that authors can submit instead of a traditional Research Article. They're often called Technical Communications or similar, and are intended to be short articles on a technical development that is novel and useful to research. This type of article might be best suited to your contribution.

The Software Sustainability Institute also lists a whole range of journals appropriate for publishing scientific software.

Software (including ports, new versions etc.) may not be "pure science", but it is certainly useful for researchers to know about, and I feel it should definitely be written about and published where appropriate. (And not just on github or on blogs!)

2

If it is considered cheating or not depends on the field of work. In my opinion the fact that you implemented their algorithms in a new language confirms that the algorithms work. Regarding originality, what you should do is offer more than a simple explanation of why you did this in the first place: for example, Python is a faster language than R, or the way it is implemented in Python offers significant speed improvements due to the fact that certain data structures are faster, and come up with some numbers, tables, and charts that prove this assertion. Even if the code is basically the same in pseudo-code, therefore no novel contribution, the additional information about why you did this porting and the data that confirms it is faster (at least in some cases), should be enough to warrant an original contribution. This original contribution is typically required in Computer Science papers (maybe not in Statistics papers), even though it's not required in Physics (you can publish papers that reproduce certain experiments and confirm them or not, or just add small twists to them).

After looking at your library, I see some things that are lacking in order to make it a good proposal: a good documentation, examples. It just says you can implement term-document-matrices with it. Please have a look at numpy or scipy or pandas packages how they present themselves to the pubic.

1

As xebtl says, assuming you cite your sources appropriately, no it would not be considered cheating, but it might be difficult to publish a paper about it.

In general, an article about porting an existing package to another language might be publishable (in some computer science-related journal) if you discuss the challenges you faced and how you overcame them, and perhaps made recommendations about enhancements that you think should be to the language. This would be of more interest if the language is still evolving. Python is a fairly mature language, so it might be more challenging to find an audience.

You must log in to answer this question.

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