Archive

Archive for October 31, 2016

The Lazarus conflict, what happened

October 31, 2016 12 comments

Apparently my post about Lazarus and the way I was treated hit a nerve. And in true Lazarus forum tradition, the most loud of my critics is also those that know little or nothing about the case (yet paradoxically also one that is at its epicenter). But I’m getting a bit tired of this so this post is me drawing a line in the sand. People can make up their own minds if I have acted wrong, but I’m putting this behind me. So here is the full story and that should be the end of it.

What I truly feel about FPC and Lazarus

First let me underline that FPC and Lazarus are fantastic products. Both represents a herculean effort – and I applaud and give my respect to the key members that have built this from scratch. It is custom to pay your respect when a fellow student graduate with flying colors, and to stand up and applaud when a scholar or scientist has his research verified and papers published. And the core developers behind Freepascal and the Lazarus IDE deserves both. I have no problem with FreePascal or Lazarus, but it’s clear that some of the members on their boards have a problem with me.

During FreePascal and Lazarus long voyage, the core developers have done a remarkable thing: they have written everything themselves. Rather than falling for the temptation of “borrowing” a little here and there, these guys have run a tight ship. Considering the size of the codebase and the amount insight and skill Freepacal and Lazarus represents – that is so impressive that any object pascal developer cannot but show admiration for these achievements.

But the conflict did not start with Lazarus or Freepascal, but with a nickel & dime operation in Greece: Pilot Logic.

GPL violations

A couple of years ago I had a look at Pilot Logic’s fork of Lazarus. Not really my taste, but I was impressed by the overwhelming amount of libraries and packages they offered. Wow, these guys must work 24/7 to produce so much code! And the libraries were of high quality as well.

Building a large repository of code is not hard if you ignore laws, regulations and morality

Building a large repository of code is not hard if you ignore laws, regulations and morality

Then suddenly I realized that I was looking at my own code. They had taken one of my libraries and blatantly renamed every class, data type and function. But what really pissed me off was that they also deleted the license in the header of every unit and replaced it with their own! My name was completely erased from my own codebase, but more importantly, so was the modified license. A license modified so that my name and the files could be used by anyone – but never altered. Bugfixes could be committed, but the library was to remain as it was unless you had written permission from yours truly to do otherwise.

What Pilot Logic had done was not just theft, but to gravely misrepresent someone elses intellectual property. And those units were never free to be altered like already stated. But everyone that has asked me to use the code in their products, commercial or otherwise, have gotten a positive reply. Just ask and leave the header-text alone. That’s not too much to ask for a library that took me so long to write.

But I would never have agreed to the utter re-branding of my code. If you look at other projects, like the Jedi code library and components – they have done a pretty great job by simply asking. Why should this be so hard for Pilot Logic when everyone else seems to manage just fine? Most people are kind and open if you just show them ordinary, universal respect. You don’t take someone elses work, brand it as your own, adapt it to your codebase – and then blatantly delete/ignore their complaints; Nor do you finish by blocking the original authors from the forum so their voice is silenced. That is the act of cowards and thieves.

be careful when you cast out the devil, lest you cast out the best in you

But it didn’t stop there, turned out they had done the same with libraries and code belonging to two of my best friends. I was quite shocked to learn that both of them had registered with Pilot Logic’s web forum earlier, posted their complaints, but were subjected to the same treatment: verbal abuse followed by their accounts blocked.

A pattern started to emerge here. If something occurs once, it can be an accident. Twice, we call that a co-incidence (from the latin word con; meaning “with”). But three times? My gut feeling told me there was more to this than meets the eye.

To see if we were the only group of people who has been subjected to this treatment after having their code rebranded – we decided to publicly ask other Delphi developers. The response was overwhelming. On Delphi Developer (Facebook group with 5000+ developers) alone more than 30 coders voiced more or less the same story: first their code was taken, re-formated, all licenses and even their names scrubbed clean, and any complaints they had made to Pilot Logic was ignored followed by a ban from their forums.

Glenn Dufke which is one of Delphi Developer’s moderators together with Peter Dunne decided he had enough. He works with data analysis and is very good at what he does. He basically took the CodeTyphon codebase and its libraries and ran the whole thing through a file analysis program, comparing against a truck-load of Delphi libraries.

The result was beyond any reasonable doubt. Pilot Logic had pretty much taken code from every popular open-source Delphi project out there, re-branded it and presented it as their own. The same story kept on coming: complaints deleted, emails ignored and forum accounts blocked.

Stolen Firemonkey code

The biggest mistake Pilot Logic had done was to include code from VGScene. This product is no longer available because Embarcadero bought that framework lock, stock and barrel. They also hired the author. The result? Oh nothing big, just that framework we call Firemonkey today! VGScene and all its code was never open-source, it was a commercial product with a copyright clause carved in stone. No human being capable of reading English could possibly misunderstand the legal status for VGScene, neither before or after it was sold to Embarcadero. Every line of code in VGScene belongs to them.

VGScene here running on OS X. Today its called Firemonkey

VGScene here running on OS X. Today its called Firemonkey

The only people who can legally use VGScene today, are those who bought the initial product when it was on sale. I actually own a legal copy myself. But I sure as shit would never even consider rebranding it as my own. Besides, why go for the prototype when you can use the finished product in Delphi?

Yet here was Pilot-Logic using and distributing Embarcadero code. And they knew perfectly well that VGScene is Embarcadero’s property. That is not just theft, but a very real, very tangible threat to the whole Freepascal and Lazarus community. Even if FPC and Lazarus are clean as a whistle (which they are), legal proceedings of this nature can go on for years. And it would cost a fortune regardless that Codetyphon is a fork and not Lazarus itself. Codetyphon is not Lazarus, but judges and lawyers might not make that distinction.

If Embarcadero found out about this and decided to enforce their legal rights, Freepascal and Lazarus could find themselves in the proverbial eye of a real typhoon; a legal one; all of it thanks to Pilot Logic’s disregard for laws and individual programmers work. They should change their name to Pirate Logic. And to be honest, Freepascal and Lazarus would not survive a legal battle with Embarcadero. Development would have to cease until the differences between the products had been established.

We also found code from GLScene in their codebase, code written by Eric Grange. Eric was previously in a legal case against Embarcadero since Firemonkey, which is VGScene on steroids, contained code copied straight out of GLScene. It was code Eric had written (he was a part of the GLScene project), and thus – Embarcadero found themselves shipping code they had no legal right to use. Turned out the VGScene author had copied quite a lot out of GLScene and rebranded it. Just like Pilot Logic had done.

So the threat to FPC and Lazarus was very real. Had Embarcadero known about this they would have shut down Pilot Logic completely in a matter of days, and the next logical legal step would have been a source-code analysis of both Lazarus, Freepascal and associated forks.

A great database

A great database

I should perhaps mention that the memory-mapped file classes that is/was distributed in the user library contribution section of FPC is actually pirated as well. It belongs to DBISAM and was written by Elevate software. I know this because I own a source-code licenses for this old gem. My favorite database engine that I used daily for many years. When we did a procedure-by-procedure comparison there was no doubt left: this was stolen code.

But again, it was not FPC or the Lazarus organization that had stolen it, but rather a third-party (individual in this case). But that doesn’t change the fact that it would have been FPC/Lazarus that would suffer the consequences. If I have links to pirated software on my website, I am in fact contributing to piracy regardless of whether im aware of it or not.

And this type of conflict was exactly what I wanted to avoid. Not because I represent any aspect of either FPC or Lazarus – but because “Pirate Logic” had bloody taken my code and mangled it! I also understand the value of both Freepascal and Lazarus, and recognize how important they are for object pascal in general. The world would be a much darker place without FPC and Lazarus. And I never tried to represent the Freepascal organization in any way. I don’t even know where accusations like that come from (although I have a pretty good idea who planted it).

So myself and others set out to inform the Lazarus community about Pirate Logic‘s disregard for intellectual property, how they misrepresent code written by others – and we also supplied concrete evidence for all of it.

We never confronted Pilot Logic on behalf of anyone but ourselves, regarding our code and how it had been renamed, rebranded and had both our names and its license removed. The fact that pieces of VGScene had been located in the codebase should light a fire under any programmers behind – because that puts you in direct conflict with Embarcadero.

And the more we investigated and compared packages, the more license violations we found. In the end we had to inform someone about this – otherwise Lazarus and FPC could end up taking the rap for something they didn’t do. So we never blew the whistle on this to cause harm, we did this so that FPC and Lazarus could take the necessary steps to avoid harm.

Kill the messenger

I posted a clear-cut warning on Pilot Logic’s forums that I would contact a lawyer if my code was not immediately removed; And I was prepared to do this. It was infuriating because Pilot Logic showed no respect for the hours, weeks and months we had invested in our work. And I mean normal human respect and decency. It costs nothing, it opens doors and it builds communities.

rogears_logo_colour_whitebackground-squarish-900pxAs a comparison, take a look at Remobjects; Remobjects SDK contains a lot of open-source code. And Remobjects as a company have deployed this without breaking a single law or license agreement. They just leave the units unaltered and then build components around it. Like their Indy channels, BPX server channel, Synapse channels and a few others I don’t remember right now. Remobjects have respected the licenses of each library down to the letter. That way they can deliver the functionality without re-inventing the wheel and at the same time respect the original author(s) wishes. Remobjects is a perfect example of how you deploy open source correctly. Pirate Logic is the exact opposite. Their modus operandi is how you destroy communities, break the law and piss people off.

I mean, would you go to a bookstore and buy a novel, then scan the pages, rename the characters, change the title – and then publish it under your name? No. That’s not even something you would do with books that are free! Sooner or later someone will recognize it and you face the consequences.

You might not know this but the most open-source licenses are very well protected. The Mozilla foundation, Apache foundation and Gnu Linux foundation offer free legal support to programmers when their licenses have been broken. Because any breach of such a license is not just unfair to the author, to you and me, it indirectly represents a threat to open source in general. If one get’s away with it – more will follow. This is why the Linux foundation support developers rights with an iron fist.

And with the evidence, analysis and 1:1 examples of piracy we had collected, Pilot Logic wouldn’t stand a chance.

Defending FPC and Lazarus

With the complete lack of respect demonstrated by Pilot Logic, I was both angry and frustrated at the same time. Angry about their behavior but also worried for Freepascal and Lazarus. It would be devestating if these got entangled in a lawsuit because some guys in Greece decided to use code belonging to Embarcadero, Elevate Software and all the developers who got their code kidnapped and rebranded. It really is a textbook example of how to kill both open source as a concept and international law at the same time.

But the worst part was that a fork of Lazarus was now shipping with Firemonkey code inside it. That is not just illegal in any civilized part of the world, it is disrespectful and had the potential to cause serious damage to Freepascal and Lazarus, who would risk becoming guilty by association. Even if Lazarus and Freepascal is clean and follow the rules (which they do. The maintainers of both compiler and IDE have done a great job keeping things clean), there is no denying that there is a lot of code moving between Lazarus and CodeTyphon. Lazarus could end up using copyrighted code without even being aware that it is stolen to begin with.

Lazarus: write once, crash everywhere

Lazarus: write once, crash everywhere (just kidding!)

When I posted the information we had found, I expected the Lazarus and FPC community to be thankful. I know I would be very happy if someone pointed out to me that one of my suppliers was dealing in stolen goods. Because then I could take steps to exclude that code until its origin was clearly identified. I would either implement something similar from scratch, or (drumroll) contact the original author asking for his or her’s permission. Which is what Pirate Logic should have done in the first place!

Instead, they decided to kill the messenger. I was branded a devil (literally) and accused of inciting a “civil war” in the object pascal community. I kid you not, those were the words they used: “a civil war”. So instead of being thankful that we blew the whistle on the dodgy practices over at Pilot Logic and thus helped them avoid a potential showstopper — they turned right around and made us scapegoats. Like it was our fault that these crimes had been committed!

That’s like blaming the red-cross for war; or Greenpeace for whaling because after all, they were there. So yes let us quickly find someone to blame so we can continue to live in la-la land where weird-ass conspiracy theories and ego-massage is the spice of life.

Did I just walk into a cartoon?

I was shell-shocked at the response. After 2-3 full pages of accusations I just left the forum. Apparently they kept it going for quite some time, I never really went back to check. This was a side of the object pascal community I had never experienced before. People so openly paranoid and desperate to shift blame that they forgot all about who and what we blew the whistle on. Yet they managed to twist the whole ordeal into being about them. Sorry guys, but it was not about you – but about Pilot Logic.

The next day they issued a public warning about a possible breach of licenses (or words to that effect) in Codetyphon’s codebase. So after treating both me, Peter and Glenn as crap for helping them out, they still took advantage of the information and used it to save their sorry asses.

The number of lies being told on the Lazarus forum about me, especially by one individual which is at the epicenter of all this drama, has reached a height where Lazarus users have started to question this person’s credibility (he is one of the administrators). The nature of lying is that it can only survive through more lies. Which is where this individual finds himself today. And clearly lacking the balls and spine to admit his mistakes, he has painted himself into a corner. And I have you right where I want you – because we made time-stamped and digitally signed PDF’s of the original threads. Both on Pirate Logic’s messageboard and the Lazarus forums. So keep it up. Perhaps those PDF’s will find their way to Google+, Facebook and every syndication channel you can think of. What will you do then? Accuse me of being an alien? Or continue with the mentally ill claim that I am in fact an undercover Microsoft employee out to destroy object pascal.

You guys are so messed up I dont even know where to start.

End of story

Loke, ancient of days, son of heaven and hell

Loke, ancient of days, king of Niflheimr, bringer of light. Lucifer the morning star.

Well, that’s all folks. If you were hoping for more excitement or drama, there really is nothing to find here. The drama sadly occurred on the Lazarus forum with a handful of members whipping the whole thing into a frenzy. A storm in a glass of water was we say in Norway.

This whole case should have been a footnote. We informed the forum of what was taking place, and expected a simple “thanks, we will look into it” in return. Nothing more, nothing less. It’s like “oh by the way there is a storm on the way, you better cover up your garden furniture and get that sweet grill into the garage“. I have neighbours that tell me that, and I do the same with them. We look out for each other.

And the same applies in Delphi. When I find a crack or some website with serial numbers, I send it to the company that is being robbed. Last one I helped out was PaxCompiler. Not because I expected to get anything in return, but because as a community we depend on people helping us out. Kindness costs nothing. And stuff like this has to be dealth with head on.

Not in my wildest dreams (and im pretty creative) would I have imagined the shit-fest that followed on the Lazarus forums, or how nasty and personally insulting this group would become. Everyone warned me about Lazarus, but I didn’t believe them. I am positive, I always give people the benefit of the doubt. I always chose to focus on the best outcome. But when that is disproven, I never give them a chance again. This is an old codex of living, probably out of date by centuries – but it’s a healthy one. Always think positive. But when you face negativity, deal with it.

You, the reader, are free to believe what you want. I have now told my side of this story – and I am putting the whole circus behind me. I actually did that a long time ago, until I was told that someone quit their job because the boss is one of my friends. This individual, who is also a Lazarus admin, used my name as an excuse to cover up his incompetence. And this was the same guy that whipped up this shit fest to begin with. So he clearly has an axe to grind with me.

But hey — if you so desperately need someone to blame for your own mess, I’ll play along. I have no problem being the devil in the deck. Of-course people talk, both about me and others. Just like we talk. People do that. And my blog have articles that deal with subjects most people don’t touch out of fear of stigmata. If everyone liked me I would be worried, because then you can’t trust anyone. I am under no illusion about the facts of life. But I am secure in my own self enough to deal with these subjects, and I have no problem taking the heat for it – as long as it is just and fair.

If I make a mistake I apologize, publicly. That is what you do when you have made a mistake. You don’t try to wiggle your way out like a snake by blaming others. You stand for what you have done. And I expect nothing less from others.

A healthy eco-system, be it natural or digital, depends more on those that dare deal with and write about the negative sides as well as the positive, more so than those who pretend everything is ok. This is also the distinction between the Delphi community and the Lazarus community. The Delphi community is much better at dealing with things like this in a civilized manner. Perhaps Delphi users are more willing to grab the bull by the horns because we make a living from object pascal and have more to lose if piracy is left to fester.

But not everyone is negative over at the Lazarus forums, of course not! Most are kind, easy-going and good people. But there are a handful of individuals that does more harm to the organization than good. One of them is an admin that in my view – is abusing his position and enjoy bossing people around far too much. But that’s for the FPC and Lazarus project leaders to sort out.

We should be thankful for the devil, because his job is to make sure life doesn’t stagnate. All good stories have a devil in it. In fact: be careful when you cast out the devil, lest you cast out the best in you.

And it’s Loke by the way, I am Norwegian after all.