Take the 2-minute tour ×
Academia Stack Exchange is a question and answer site for academics and those enrolled in higher education. It's 100% free, no registration required.

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, called tmpy, that is modeled after the tm[1] R package, which means tmpy has the design and APIs similar to tm's.

The authors of tm has published an official paper[2] about the package on Journal of Statistical Software. And now I want to write a paper about my tmpy package.

The point is, since the design and APIs of tmpy are similar to the ones of tm, the structure and content of the tmpy paper would be similar to that of the tm paper. For example, in the paper of tm, the authors explains that Corpus class is the implement of the "corpus" concept and has meta attributes, and in my paper of tmpy, I would explain that tmpy.corpus.Corpus is the implement of the "corpus" concept and has the meta attributes (so similar!).

The biggest differences are brought by the environments, e.g. tm uses OpenNLP R package and tmpy uses NLTK Python pakage.

So, would it be considered cheating if I write the paper of tmpy? Of course, some sections of my paper would include the comparisons between two packages and I would cite the paper of tm there.

[1] http://cran.r-project.org/web/packages/tm/index.html
[2] http://www.jstatsoft.org/v25/i05

share|improve this question
3  
In which field would an implementation be worthy of scientific publication at all? –  Raphael May 4 at 9:18
    
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 May 4 at 11:00
add comment

4 Answers 4

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.)

share|improve this answer
    
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 May 4 at 6:12
4  
@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 May 4 at 6:16
6  
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. –  Federico Poloni May 4 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. –  Federico Poloni May 4 at 9:15
3  
@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. –  Federico Poloni May 4 at 9:17
show 4 more comments

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.

share|improve this answer
    
Rob Hyndman also has a recent blog post about publishing an R package in JSS. Most of the advice would be applicable to any software. –  Andy W May 4 at 23:47
add comment

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.

share|improve this answer
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. –  Dylan Meeus May 4 at 12:56
add comment

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.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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