JME thievery

Turns out JME has a fancy little networking module. Oddly familiarly fancy. Let’s have a look at some source. Where have I seen this before? Oh yeah, when I wrote the goddamn code. See any similarities with this? Lars’ development cycle must go: copy, paste, duuuhr, rename some variables, remove the javadocs and the @author tag, write blog post: look everybody — I created a JME networking module! Lars mentions “pgi, Ractoc, and Creativ” helped with the module. I guess this rounds out the copy and paste team?

Looking in another JME source file, where they also removed the author tag, there is a “Thanks JGN!”. However, they blatantly copied a lot more than this one file from JGN, with no attribution in other files. Taking off my @author javadoc tags isn’t illegal — it is chickenshit — but not properly listing the BSD header? Oh, their code has a BSD header, but it only mentions JME and is missing the copyright from JGN. Looks like they are very meticulous when giving themselves credit.

Here is an excerpt from this JME blog post:

It’s been only four months since Lars firmly decided to seriously commit to the jMonkeyEngine project in any which way best suited to his skillset. He quickly set his mind to create a fully integrated networking system for jMonkeyEngine 3 from scratch, branded SpiderMonkey.

Really? “from scratch“? Then to top it off, he names it SpiderMonkey which is a Mozilla JavaScript engine.

The best part is: they copied the wrong code. After writing the JGN serialization, I went on to write a fully fledged serialization lib, Kryo. If all you have to do is copy some code, you’d think you’d have extra time to figure out the right code to copy.

This isn’t the first time JME has embarrassed themselves on this blog. They previously spammed libgdx and Google Code, begging for help on the Android version of JME. Classy.


  • Pingback: Tweets that mention JME thievery – Badlogic Games --

  • Mike Leahy

    Hah hah.. “nice”… sort of.. If I do recall correctly the original JME authors moved on a while back, no? I’m going to have to take a bit of time to properly attribute other FOSS projects I leverage with TyphonRT. I know there is some stuff snagged from various projects such as a few old timer JGO members. And who knows I might borrow a few ideas from libgdx whether it’s a rewrite of an isolated area or two or simply making things more compatible is left to be seen. I’m going to try to credit and have a comprehensive license section in the distro though and hopefully be able to contain any crossover code in independent modules / projects / repos. Also likely keep the same license and make any “crossover” code available by same license of originating project especially considering I’m doing GPLv3 with TyphonRT. I know I’m going to try and make my efforts at least compatible with libgdx.

    Too bad on JME though… But as noted it’s not the same JME as yesteryear.

  • Rikard Herlitz (MrCoder)

    Sob, what are they doing to our old baby? ;) Glad we moved on though, like the previous poster said. Hope all is well with you besides this!

  • Mario

    Glad to see you alive again Mike!. How’s Typhon?

  • Mike Leahy

    >Glad to see you alive again Mike!. How’s Typhon?

    Ooomph… Yah trying to stay sane… still.. ;P The day job gig is intense currently, but totally helping to keep the lights on. So progress is slow on TyphonRT. It’s a catch-22 as my contract is through Feb so it behooves me to maximize billable hours and hope I can squeeze in another 3-6 months full time on TyphonRT Feb to ~August. I’m about 2 full days out from fully compiling the entire catalog of components. Um then I can try the app level code that hasn’t been run since end of July before start of COA refactor. Major debugging expected. I never knew it was going to take so long to transition to a granular component architecture! Thought it was going to take “3 weeks”… took 3 months, but then again it’s something I never have done before and there were many passes through the same core code refining, restructuring, and stubbing repeating patterns.. The last thing that nailed me was ~260 char path limit in Windows. I had to manually go through the whole component catalog running 5 search/replaces in order on ~400 projects (x3 Idea projects files) took over 40 hours of nothing but search / replace. Couldn’t be reliably automated… Yep… I digress though.. ;P really trying to have 1st semi-public beta out by end of the year, but it’s going to be close… looking forward to get 2 solid days in on TyphonRT this holiday weekend… no or few days off as per “usual”, but such is life.. ;P

    Have I ever mentioned how jealous I get when you bemoan about 12 hours of refactoring on libgdx and how laborious it is… ;P ;P

    You still crooning (gigging) over there?

  • Mario

    Man, you have my empathy :/ But better to have a paying job for some time then not having any electricity :p.

    400 projects sounds like a fun thing to compile, even if it’s all Java. I’m really curious in what form you are going to distribute that to your clients later on. Ease of usability is king. Looking forward to the semi-alpha-beta at the end of the year.

    Ya, 12 hours straight refactoring doesn’t sound like much compared to what you have cooking over there. Never the less i was able to add some new shiny bugs making me spent the next 2 weeks of my spare time on that crap.

    Still gigging as ever :)

  • Mike Leahy

    >Man, you have my empathy :/ But better to have a paying job for some time then not having any electricity :p.

    Yah ran out of funds 2 days before I was paid after waiting 6 weeks for 1st invoice.. whew; that was something… “they” did pay me several days late though, so I had 2 to spare by my original estimate.. ;P that caused some consternation.. We stretch it thin over here to pursue the dream; if I do make it I’ll remember the “crazy days”.. I fought tooth and nail to stay indie for as long as possible. Well I just blame SF rent…

    >400 projects sounds like a fun thing to compile, even if it’s all Java. I’m really curious in what form you are going to distribute that to your clients later on.

    yah. goes from one component that is a marker interface and on up.. About 70 Android specific the rest cross-platform and actually I have to rebuild the desktop peers so perhaps around 450 just for the main platform. My plan is actually to… and let me know if this sounds crazy as well I haven’t heard of anyone doing something like this.. ;P is to create various GitHub accounts for the various base sections and OS like typhon-core-android, typhon-core-shared, typhon-core-desktop and create repos for each component.

    I’m using Gradle to define a declarative build and storing all of the dependencies files in it’s own repo / account or somewhere accessible on the web. I plan to make a desktop front end GUI manager that will pull down the latest dependency data files and provide a sectioned GUI display for various functional areas (about ~40-45 functional areas); functional area could be like “core-geometry” which then has X separate components underneath it. Users (erm devs) can check various components or whole functional areas and all the associated dependencies will become dynamically selected and so on. Meta-data available for all the components and perhaps even photos/videos (YouTube, etc.) as necessary. The user will then have the ability to choose IDE (Idea or Eclipse at 1st) and whether they want to check out and build a new project with Jar versions of the components, read only versions of the source code, or fork one or more components (requires GitHub login). User selects create project and Gradle will chug away behind the scenes pulling down all of the components from GitHub to the local file system and auto create the target project and auto generate all the project files w/ full dependencies for the given IDE if going the source code route. IDE then auto launches with fresh project with everything good to go. Likely if it’s an Android project I’ll do whatever automation to setup the full dealio to be able to instantly launch with ant install.

    The GUI configuration manager will then make it possible to auto commit to forked repos and manage anything like pull requests and other GitHub API integration that including updates and perhaps even directly building the project / packaging and all that. The config manager will basically turn into the TyphonRT editor, but start as a configuration tool. I want other ambitious devs to be able to create their own component suites (open source) and potentially integrate into the config tool. I also have ambitions to open a component marketplace browsable on the web site or in the config tool / editor.

    >Ya, 12 hours straight refactoring doesn’t sound like much compared to what you have cooking over there.

    I was thoroughly unprepared, but the end result (knock on wood; still got to get to full compile and easy build of apps on top of all this) is pleasing. I really wished I could hire a Korean Starcraft II player / build engineer to rapid fire 300 / clicks / operations a minute… No such luck.

    Thing is that I’ll release pre-packaged bundles for the semi-public betas while I finish off the above. I won’t be publicly launching until I complete the above management tools. So I think a Q1 launch is still wishful thinking though I hope to free up 3-6 months full time to jam on all this and more around then.

    Basically I’m setting up hardcore infrastructure and I plan on TyphonRT being around a while and I’m just getting started… This is my “MVP” if you follow the lean startup jazz… ;P I have hardware ambitions and such soon enough. Processors are really getting where I need them to be plus OpenCL support coming out on multicore embedded processors second half of ’11.. Mmmm… ok… been up 29 hours doing silly day job stuff… 4 hours rest then it’s party time… ;P I’d love to create games, but I think I have a shot at creating a novel tools / middleware company for Java/Android and who knows what… Got to bootstrap it though; this is the furthest extend I think I can take things architecture wise living on the edge at least for a while?.. I’d really like the core code I’ll be releasing as GPLv3 be able to switch to Apache or some other more permissive license once the ball gets going. We’ll see.. I got nothing better to do.. ;P

    >Still gigging as ever :)

    Nice!!.. I can’t wait until I have time to continue working on music and my music tech / hardware. been killing me with this major pivot to Android and mobile as it’s consumed me and haven’t written a music/song for 5 years now.. :(… The above “vision” of proggy perfection haunts me…

  • Mike Leahy

    See… other people can make huge crazy posts too! You’re not alone… keep it up!;P

  • Fred Grott

    Mike, its not crazy..

    I am using Gradle to solve similar problems with having to do
    the same type of advanced android multi-project builds, etc.

    yeah, yes lets share gradle notes if you want..yeah I am a gradle-android-plugin code contributor..