Archive

Posts Tagged ‘firemonkey’

FMX 4 linux gets an update

July 20, 2017 Leave a comment

The Firemonkey framework that allows you to compile for Linux desktop (Linux x86 server is already supported) just got a nice update. Amoung the changes is a nice Radial Gradient pattern – and several bugs squashed.

fmxl

This is an awesome addition if you already have Delphi XE 10.2 and if writing Ubuntu desktop applications is something you want – then this is the package to get!

Check it out: http://fmxlinux.com/

FMX4Linux is coming, and we cant wait!

May 3, 2017 1 comment

When Embarcadero announced Linux support for their Tokyo release of Delphi, my soul literally left my body for a moment. Could it really be true? After all these years have Embarcadero done what many said would be impossible?

I must admit that people saying something is impossible has lost its sting for me. Over the past 3 years I have one of these impossible things on a weekly basis, yet people are just as shocked every single time. But this time – I was the one in a state of excitement.

As an outspoken (an understatement perhaps) active blogger, my skin has grown thick over the years. I also get to see a lot of cool tech long before it’s commercially available and mainstream – so it takes more for me to be swayed and dazzled. And you grow a healthy instinct for separating bullshit from true technical achievements too.

Tokyo

Delphi Tokyo is probably one of the finest Delphi editions to date

But yes, I admit it – this time Embarcadero surprised me in every positive way imaginable. If you follow my blog you know that I call it as I see it and hold little back. But this was a purely positive experience.

No I know what you are going to say; everyone knew about this right? Yeah me too. But my mind has been elsewhere lately with work and projects, so I didn’t catch the release buzz from the closed forums (well, “closed” is a matter of perspective, I have friends from Russia to the United States, and from china to the Sudan) and for the first time since the Borland days – Embarcadero got the drop on me.

I’m the kind of guy that runs on passion. Delphi, Smart Pascal and even object pascal as a general language is not just work for me – its something I love to use. I relax and enjoy myself when coding. So you can imagine my reaction when my boss sent me a message with “Download Tokyo and give me a report”. It was close to midnight but I was out of that bed faster than bacon on toast, ran into my home office wearing nothing but boxers and a Commodore t-shirt – and threw myself into Embarcadero Developer Network’s download section.

From hero to zero in 2 seconds

I think it was around 07:00 the next morning, one hour before I was due for work that the magic phrase “command line and system services [daemons] only” hit home. And yes I “kinda” knew that before – but maybe, just maybe Embarcadero had thrown in visual applications in the 11th hour. I even had a friendly bet with Jim McKeeth that a FMX UI solution would appear less than 24 hours after release (more about that later).

linuxproj

Now that is a beautiful thing

Either way, it was quite the anti-climax after all that work in VMWare installing Delphi from scratch, waiting, hoping and praying. First of all because I remember watching an in-depth technical review about Firemonkey by David Intersimone a few years back; the one where he describes the Firemonkey architecture in detail. Especially how the abstraction layer between the visual control framework and the actual os made it possible for FMX to quickly adapt to new environments. Firemonkey is a complex and highly adaptable framework, but its biggest strength is paradoxically enough its simplicity. A simplicity achieved through abstracting the UI from the rendering functionality. At least as much as possible, you still have to deal with OS level windowing, security and all of that – so it’s no walk in the park either.

In the presentation (sadly I don’t have a link to this one) David went to great lengths to explain that regardless of operating system, as long as someone implemented a driver class that exposed the set of features FMX needs – Firemonkey would run as long as the compiler supported the instruction set. Visual engines could be DirectX, OpenGL, Cairo or whatever makes sense on that particular platform. As long as the “bridge class” talking with the operating system is there – Firemonkey can run on a toaster if so be.

So Firemonkey has the same abstraction concept that we use in the VJL (Visual JavaScript Component Library) for Smart Pascal (differences not withstanding). If it’s Windows you are running on, DirectX is used; If it’s OS X then Apple’s implementation of OpenGL runs the show – and if you are on Linux you can pick between OpenGL and Cairo. I must admit I havent looked too closely at Cairo, but I know it was designed to make advanced composition and UI rendering more efficient.

Why it Tokyo didn’t ship with visual application support is beyond me, but considering the timing of what happened next, I have made my own conclusions. It doesnt really matter to be honest – the point is we got it and it rocks!

FMX4Linux to the rescue!

Remember the wager I mentioned with Jim McKeeth? It wasnt a serious wager, I just commented and said “a Linux FMX solution will appear within 24hrs, you can bet on it” and added a smiley. I had no idea who or how, I just knew it’s going to turn up.

Because one thing that is a sure bet – it’s that the Delphi community is a group made up of highly resourceful, inventive and clever people. And I was pretty sure that it wouldn’t take many hours before someone came up with a patch or framework to fill the void. And right I was. Less than 24 hours later and it was fact rather than conjecture.

fmxlinux

This is just a must have. There is no debate.

So less than 24 hours after Delphi Tokyo hit the shelves. Eugene Kryukov and Alexey Sharagin presented “FMX for Linux”. Giving you both the missing rendering back-end that talks to the system – and some kind of “widget mapping” (as far as I can understand, I wont pretend to know how they did it) that renders your UI according to GTK. So it’s not just a simple “patch”, theme or class that calls a handful of external routines; it’s a full visual implementation of FMX for Linux. Impressive? Oh yeah, and then some!

Let us explore!

Over the next few days I will be giving you an in-depth look at how this system works. I’m also going to test drive Html Components and see if we can get that running under Linux as well. Since FMX for Linux is still in development we have to take height for that – but being able to target Ubuntu is pretty cool! And Remobjects, glorious Remobjects SDK, if that works out of the box I will dance the jig and upload it to YouTube, I swear to cow!

Remobjects_linux

Linux is about to feel the full onslaught of object pascal

There is little doubt what the next Smart Pascal IDE will be based on, and when you combine FMX for Linux, HTML components, Remobjects SDK and TMS into one – you got serious firepower to play with that will give even the most hardened C/C++ QT developer reason to be scared. And that is before the onslaught of Data Abstract and Remobjects C# native compiler.

Oh man next weekend is going to be the best ever!

Let’s not forget ARM targets

asus

The “PI killer” has arrived!

On a second note we will also be looking at the my latest embedded toys – namely the Asus Tinkerboard. I just got two of them in the mail today. Its going to be exciting to see how it fares against the Raspberry PI, ODroid XU4 and the Intel Atom based UP board.

We will also be testing how these two cards can be clustered together using node.js to work as one – and see how that impacts performance for our node.js based Smart Desktop project. These are exciting times indeed!

To make things even more interesting I will be pitching the Tinkerboard against the ODroid XU4 (original version, not the pussy passive save the environment unicorn they push now) against both the x86 UP v1 and Raspberry 3b. Although I think the Raspberry PI is in for the beating of its life when the ODroid and Tinker is overclocked to blood lust mode!

smartdesk

The Smart desktop has a powerful node.js back-end that packs a punch

So, when LLVM optimized JavaScript runs Mc68040 machine-code at 4 times the speed of a high-end Amiga 4000, I will be content.

So let’s do another “that’s impossible” shall we 🙂

HTMLComponents, the native Delphi html rendering engine

March 26, 2017 1 comment

This review has been postponed two times, so my apologies to Alexander Sviridenkov, the author of this magnificent Delphi component package.

HTML rendering engine in Delphi

Delphi have always had its fair share of brilliant programmers. And as a result Delphi has enjoyed a vibrant component market, one that simplify the life of both novice and expert.

Sadly, html has never really been Delphi’s strong suit. Sure we have various server types and packages. From Intraweb to UniGui – each of them with positive and negative traits. We have IIS plugin packages and apache modules – and right now Embarcadero is branching into Linux as well. Sadly all of these solutions suffer the same problem: they are purely native. They lack the automatic scaling mechanisms of node.js and C# – and don’t even get me started on clustering (Netflix is written 100% in node.js, why did they pick JavaScript instead of Delphi, C# or C++? Food for thought!).

But, serving html is all well and good, and while I could write a doctorate on why node.js and Smart Pascal is a much better technology for Delphi developers when it comes to web development – it would come across as disingenuous since Smart originated with me. So people will simply have to find out for themselves.

Rendering with Delphi

Server and client aside: if there is one thing Delphi is the undisputed king of, it is desktop applications and productivity! Fueled by object pascal’s modular, component based frameworks; like the VCL and Firemonkey – no other language even comes close to what Delphi has to offer. Except for html that is ..

Traditionally there have been only two paths you could go if you wanted to display or edit HTML: you could stick with good old TWebBrowser, a thin wrapper over Microsoft’s Internet Explorer API’s. If all you want to do is to show some basic html and lack even a single fiber of taste in your body then TWebBrowser could be the ticket.

But anyone who has ever tried to work with that component, perhaps dived into the hundreds of interfaces you need to deal with in order to do anything remotely fun – knows that it leaves you frustrated and wanting. It’s also not portable and as pure a Windows component as can be. It makes absolutely no sense to use this component in 2017, especially when Firemonkey is on the menu.

The other option was TFrameBrowser or THtmlViewer, a fast, responsive browser control written purely in Delphi (by Dave Baldwin I seem to remember?). This was a commercial component back in the day, but he open sourced it as he abandoned Delphi for C# or C++ or something along those lines. You can pick this up at Github for free and there is also a Lazarus version of this.

The problem with both of these solution is the same haunting us all, namely that they are getting old. They havent seen much development for 10-15 years (give or take the port to Lazarus), and while they may work – they lack support for all the interesting tags, css styles and element types that we now take for granted. THtmlView is stuck somewhere between HTML 1 or 2, and TWebBrowser is .. well, that has a life of its own so I honestly cant tell you what it represents these days. But a little bird told me Embarcadero havent updated the ActiveX interfaces at all – so it’s not even using the new Microsoft Edge engine. Personally I suspect Microsoft is the culprit, exposing Edge as a .net assembly exclusively.

The Chromium wrappers

A third alternative appeared around 2011 / 2012 in the form of chromium embedded. This is the browser we use in Smart Mobile Studio to do background rendering and run the compiled Smart Mobile Studio applications when you hit F9.

Webkit is by far the fastest and most evolved engine out there, but it also add around 90 – 120 megabyte of dependencies and data files to your distribution. It also has a lot of quirks, and if you do hardcore coding like I do – pushing the GPU to the bleeding edge of what webkit can deliver – then prepare for crashes, unexplainable access violations and having to restart the whole application to get rid of some background process chromium has spawned outside your reach. It’s a great solution, but it comes with its own baggage and history.

HTMLComponents

Suddenly out of the blue a fourth option has emerged, this time it’s a full re-implementation of HTML 4 (with elements from HTML 5) written in pure, platform independent Delphi. This means it has no dependencies, it will render as much as 90% of modern html, it supports all the fancy tags and css style (including transitions, which I must admit I did not expect).

Not only that, it works under the traditional VCL framework and Firemonkey, so you can use the components on both desktop and mobile applications. If that doesn’t get your creative juices flowing I don’t know what will; this is frikkin awesome!

Alexander Sviridenkov has really gone to town with this package. And I must extend my gratitude for allowing me access to his codebase. We are considering using this as the primary rendering engine for the new Smart Mobile Studio IDE’s live editor. So I want to personally thank Alexander for the opportunity to investigate the components at source level.

Writing a review of this great package seems only natural. It has been years since I’ve been this stoked about a Delphi component package. If you like the idea of using HTML as a part of your Delphi application’s presentation layer – then consider this your birthday, Xmas and st. patrick day all rolled into one. HtmlComponents got you covered!

So what is it?

component_list

A rich and powerful component suite

At the heart of the package is a modern, fast, portable and 100% written in Delphi HTML rendering engine. Around this engine Alexander has made a large collection of visual controls that you use to enrich your applications. Most notably, a WYSIWYG editor akin to what you find in Adobe Dreamweaver. This is not a text editor where you write tags (well you can), but rather a full, rich word processor control where you can design your web pages.

The components most interesting to me were obviously: THtmlEditor, TDBHtmlEditor, THtTemplatePanel and THtMetroPanel, THtCategoryButtons.

These are just  5 out of 23 visual controls that ship with this package, each of them using the rendering engine to present better looking information. I mean, when you can use html to describe how each row in a listbox should appear – it goes without saying that this is a lot easier (and prettier) than spending hours with TCanvas. The now ancient TCanvas class is not exactly renowned for its blistering speed or fantastic visuals). So HtmlComponents gives you an impressive list of visual extravaganza to play with, all of whom makes it a snap to create modern, good-looking user interfaces.

And you don’t have to use the pre-defined components. HtmlComponents will happily take your html and css and draw it straight to a TCanvas (or GDI+) without complaints. So you are not stuck having to use this or that baseclass (which often is the case).

What really impressed me is the speed. Writing an html file parser that is fast is one thing, but rendering complex and composite web content? That’s not for the faint of heart, it requires some serious skill.

The first and easiest test you can do to see how quickly a rendering engine adapts and re calculate its node tree (internal stuff) – is to resize the window fast back and forth. Most homebrew browsers is going to struggle with that. Typically because they just calculate as they draw each element, which is not how to go about this particular task. I’m super impressed by Alexanders work here, because his controls are just as responsive as commercial browsers.

The editor

Since I work with web technology, the editor is ultimately what would save us time and also help lift the quality of our IDE. Smart Mobile Studio is extremely powerful, but our weak spot is without a doubt that our IDE doesn’t reflect the power of our the RTL properly. There are also things that would be simpler for our customers, editing documents directly is one of them – so the editor was really make or break for my part.

editor

The example editor program is impressive to say the least

The editor is wonderful. There are a few tidbits that I would like to see improved, but those are very specific to my needs. But I have to be honest and say that this is the most impressive WYSIWYG html editor I have seen outside of Dreamweaver. You have full control of everything, from tables to borders, margins to padding – and the active segment you are editing is easy to spot due to dotted highlighting.

Alexander has also made some very interesting dialogs (see color and border dialog in the picture above). While I am missing a more dedicated css stylesheet solution (like gradient editor, image to css conversion and other handy features) – the package in general has more or less everything you need to get going. And then some (it may also be that the stylesheet thing is there. The codebase is so huge it would take s week to study every part).

In short: If you are looking for a drop-in solution for editing web documents that is platform independent, has zero dependencies, lightweight, fast and even work on mobile devices – then this is it! The same goes for rich and gorgeous rendered custom controls.

I do realize that there are other editors out there; packages like Richview is very popular, and while that is both fast and polished, it’s not an html rendering engine. Which is ultimately where HtmlComponents scores all points. The editor is not the core of the product, it’s just a control that exposes the product – which is a modern html rendering system written in pure Delphi.

It even outputs to PDF, again with no dependencies!

What about the web?

Being able to edit html documents is cool and if you are looking for a package to give you that functionality – then this is it. No doubt there. But how compatible is it? I mean, html is evolving at an alarming rate – both in terms of features but also with regards to JavaScript. How does HtmlComponents fare in that department?

I guess the obvious observation is that HtmlComponents is not a browser. It has a very capable rendering engine, editor and supports the most common tags – both old and new, but at the end of the day – it’s not designed to be a browser.

If you drop an editor on a form, set the readonly property to true, and then call LoadFromUrl() on a complex website, then odds are it will come up short. It will happily render static websites, but the moment frames and JavaScript comes into the picture – you are quickly reminded that this is ultimately an editor and rendering engine designed to leverage web technology for Delphi – and it’s not trying to be anything else either. It delivers what it says, and it does it well. What more can you ask.

browser

It has no problems with traditional, non framed or JS powered websites

Lack of scripting

I have no doubt that Alexander could turn this package into a real life browser if he so wanted. But again this package delivers compliant html editing and presentation inside Delphi applications. That is what he set out to create, and that is exactly what I need.

Alexander have also taken height for future development. The package ships with support for pascal scripting (the Jedi scripting engine), and he has thoughtfully isolated scripting in general in separate adapter classes. This means that you are free to add whatever scripting language you want. Dont like pascal script? No problem, just implement an adapter and use whatever you like.

My immediate thought goes to Besen, the open source, complete ECMAScript fifth edition, JIT powered JavaScript engine written 100% in object pascal. Hopefully Alexander will get inspired and add that as an alternative in a future edition. With besen as the primary scripting engine – and taking the time to expose all the traditional DOM objects JavaScript expects to find in a browser environment (like window, document, createElement, getElementById [and so on]) then HtmlComponents would be capable of great things. All of it in portable, platform independent Delphi.

The V8 JavaScript engine used by Chrome, Safari and all webkit browsers is also an alternative. It is a fairly humble dll that is easy to use from Delphi. But that is presently only available on Windows. Unless the Delphi maintainer decides to add Linux and OS X binaries to the repository as well. But indeed, V8 could also be added quite easily.

Final thoughts

This is a wonderful component package for Delphi, one I really hope we get to use in our own product when that time comes. There will always be bits and pieces that could be improved, but it’s quite hard to pinpoint what exactly to criticize in this package.

helpmanual

H&M is pretty solid

I did notice an access violation in the Paint() method on two occasions, which could be easily fixed by checking if csDestroying has been set – and that the device context is not null (it was in the middle of a paint when i killed the program). But that is kebab reporting on my part. All in all I am super impressed and really recommend this product – its worth every penny!

The product is also used by a list of well established companies. Applications like Help & Manual isn’t exactly small potatoes, nor is Coffeecup html editor some unknown application. These are used by thousands of people every day.

Have a look at Alexander’s gallery and I’m sure you agree that this package has merit.

As far as I’m concerned, this will form the basis of our future template and content editor.

Jon-Lennart Aasenden
 The Smart Company AS

The never ending story, PirateLogic evidence claims

November 4, 2016 3 comments

Seems like this train never really stops. Despite me telling my side of the story, people still have a hard time believing that Pilot Logic have been so blatantly bad when it comes breaking the law. Not just with my libraries but also with code belonging to Embarcadero.

Back up my claims? Fine.

Fine. I have just uploaded two compare files (out of several) which shows a 1:1 compare between Embarcadero owned VGScene and PL_Orca. If you still think my colleagues and myself lack evidence, then you simply need to download Codetyphon and all its available packages (especially those >= 2 years old) and look at it yourself. Hopefully this will be enough to prove my point.

No wonder they got upset when we started to dig into their codebase. This is just one of many where license violations is the new standard.

No wonder they got upset when we started to dig into their codebase. This is just one of many where license violations is the new standard.

You can download two HTML reports from our file-compare analysis here: http://quartexhq.myasustor.com/piratelogic/piratelogic.rar

Orca = VgScene = Firemonkey

Needless to say, several people have taken an interest in this case. I am happy that most of those are positive and understand both why I got upset with PilotLogic and also why I wanted to inform the Freepascal and Lazarus forums about the dodgy practices. PL has close ties to the FPC community after all. Why sit and watch a disease infect a healthy codebase?

orca

Considering Orca is a VGScene renamed and 99.9% of the codebase is pure VGScene without change — Sternas is lying his head off. This is a clean copyright violation of Embarcadero IP.

And no, I did not set out to defend this or that – but when people call me a liar without even considering that I may be telling the truth, then I must be given a chance to defend myself. And my motivation was absolutely not to “eliminate the competition” (like some people amazingly declare). What competition? I use Delphi for native work and Smart Pascal for JavaScript. What the hell would Codetyphon have to offer? And why on earth would I be against it when I advocate both freepascal and Delphi pretty much 24/7. The more object pascal compilers and systems the better!

How would you respond when you submit a complaint about your code being taken, and the moderator laughs at you and start to post the address of where you children live? Is that ok in your book? I would imagine most men would respond rather “instinctively” when faced with such actions.

codetyp01

I am so tempted to post the whole nest of pigs, but I will leave it with this. If you have any more questions, just download and investigate the codebase yourself. They have no doubt covered some of their tracks by now – but not all of them.

When the response you get from the lead-coder of Codetyphon when posting valid questions about illegal use of your software, broken licenses and piracy is “close and delete topic” – then I guess that says it all.

codetyp02

You are a bully Sternas. But when you hit me, I will hit back. Bullies don’t seem to like that very much huh?

Piracy kills more than companies, it kills the spirit

With regards to the notion that I somehow sent my complaints to PilotLogic because I was coding a new IDE, I have this to say:

Do you know how long it takes to write a usable IDE? It’s not something you slap together over the weekend. The more complex the behavior you want to deliver, the more work needs to be invested. Lazarus have gone through what? A decade of work before it’s finally reaching a point where it’s polished and stable? Smart Mobile Studio is almost five years old, and the designer still needs plenty of work. The fact that we do live rendering of the UI in separate processes makes it much harder than a vanilla “Delphi” like designer.

It takes time to develop a professional IDE. You know why? Because you have to go through the whole evolution of thought. You end up refactoring as the approach, ideas and concepts mature. The alternative is, like Pilot Logic has done, to take the shortcut: to steal the code rather than go through the evolution themselves. To really work on it and figure it out yourself.

If I removed all moral reservations, ignored and disrespected the months and years invested by others, by friends and companies synonymous with object pascal and the community I am part of and love so much – I could probably make an IDE more or less identical to Delphi in a couple of months. If I could just steal code from TMS, Developer Express, Elevate Software and Lazarus and completely ignore the energy and time their products represent – then life would be much easier. Or would it?

But I can’t do that. I’m not wired like that. Sure I have used a pirated copy of something in my life. Im not even going to deny that. But I have always saved up, months if I have to, and bought every single one.

How could I look these people in the eye at some Delphi meetup or congregation knowing that I have robbed them of weeks, months and years? I would not be able to hold my head up straight in shame. Because when you buy a source-code license, it’s not just a “use and throw away” thing. It is a contract of trust, and a legal and moral obligation to use the technology they have offered you within the bounds of their wishes.

I still remember how tired and utterly exhausted I was after releasing Smart Mobile Studio 1.0. I had worked night and day for over a year. Weekends, nights; I’m pretty sure that product broke my marriage to be honest. I even took out a second mortgage on our house. And I was so proud that despite all the challenges involved, despite all the negative people who said it was impossible we found a way and made it happen!

And I was heartbroken when only weeks after the release I found a cracked version of Smart on DelphiFan.com. They must have taken them a couple of weeks at least to crack it, because they had given up on writing a keygen. HexLicense uses non-linear numbers so ordinary brute-force attacks are rarely successful. On closer inspection I noticed that they had disassembled the whole executable and painstakingly isolated enough code, even padded the executable to make the checksum match. So nothing is un-crackable.The only thing you can do is to buy a window of time before it happens. That window is what makes or breaks your income.

What really gutted me was discovering that people I talked with quite often was responsible for this (one of the hackers was a member of Delphi Developer). Over a year of testing, prototyping, co-operation between Eric Grange and myself – not to mention all the work Jørn Angeltveit from Optimale Systemer had done. He also helped finance the project for 12 long months. We even set the price as low as we possibly could just to make sure piracy would not become an issue. Then a prodigy coder from asia, one that talked friendly with me on a weekly basis, a person I had helped with his Delphi code – decided to allocate time just to destroy our solo release. For what? Five minutes of fame? I would have given him a free copy if he asked me. In fact, I have given away almost as many copies as we have sold. Primarily to kids and people who are in a bad financial spot but who wants to learn pascal.

I can understand that people use pirated software, no problem. But when you see up front the amount of damage it does, especially for a small company – you have to be heartless to continue.

Two weeks is what we got. I lost my house, everything. I had to start from scratch. But it was worth it, every bit of it. Because they said it could not be done.

And that my IDE work, both public and in the labs should in any way pose a threat to Lazarus or Codetyphon, is ridicules. I have a full-time job, two kids and my girlfriend, Smart Mobile Studio on the side – and I have recently started my own company. Not much time left for plotting evil schemes. Darth Vader very thin on the ground. But just why would I want to? What kind of place do you come from where people ruin other people’s work like that? It’s not how I was raised that’s for sure. I just wanted the copyright header in my own code to remain. And it would be nice if you asked rather than just misrepresent my work it as your own. I can’t even believe this is a debate.

Add to that the injury i got 3 years ago when i broke my spine in two places. This has impacted my ability to commute. I have had to say no to several high profile jobs because I would not be able to give 100%. So I declined rather than being a burden. So what kind of person would I be if I sat here plotting to destroy something for others, just to win myself. That is against everything I believe in. And the amount of code, papers and help I have issued over the years should at least give me the benefit of the doubt. Because I havent charged a dime for any of it.

Nor do I sit here and pity myself like a child. If you want it, you will find a way! I was not supposed to walk either – but I’m walking. Funny how the impossible seem to happen around people who refuse to give up. Yet curses rip to pieces the man that fears the dark. Shoot me, stab me, but I will still come after you. No force in nature is stronger than the will of a person who believe in himself. Except the same force in reverse for those that lack vision. All the power of the world is in your own mind. And I will keep doing the impossible until the day that I die – because I can.

End of case

I did not want Pilot Logic’s tendencies to infect Lazarus or freepascal, which it would almost certainly have done had we not blown the whistle on this. So in a way we did succeed. But at a personal cost we should not have had to pay.

Hopefully this time it will stick and the drama factor mellows out.

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.

Hexlog, building a better logging system

October 15, 2016 Leave a comment

Its been quite a busy couple of weeks for me. HexLicense has finally gotten a well deserved update and (drumroll) we have ported the codebase over to Firemonkey. I have deliberately waited a while with the Firemonkey edition, because compilers usually need a couple of releases before they become stable. And the same can be said about runtime libraries (I should know, I have created a few). I wanted to use FMX earlier but, it kinda died on me so many times that I gave up. Thankfully this is no longer the case and Delphi XE Seattle is a joy to work with.

Ironwood prototype

Ironwood prototype

Also, one of the coolest things these past weeks was returning to Smart Mobile Studio as a user. It’s really quite an odd experience because you get so locked into “author” mode when you have worked on a product for so many years. So when you sit down to actually use your own program as a means to an end, it’s a very different experience from looking at it purely architecturally.

I really love what we managed to do with Smart Mobile Studio. That might sound disingenuous since it originated with me, but somehow we captured something; some sense of creative freedom that I cannot find in giant productions like Visual Studio or QT C++. Naturally I’m biased, but I’m no stranger to self-critique either. But the speed at which I knock out a HTML5 or mobile application with Smart Pascal is just way beyond anything I can do in any other devkit. The only other development platform that have the same feel to it is Mono C#, which I love because it doesn’t contain all the .. bloat, I guess is a word, that large production environments insist on giving you. I mean, fire up visual studio and you have so many options – half of them that you will never use unless you specialize within a particular dicipline – that they just get in the way.

Anyways, Hexlicense “Ironwood” was written first and foremost in Smart Mobile Studio. We have started to port the code over to Delphi to make the Xmas deadline, but honestly: I’m so glad I could use Smart to prototype this product, because it would have taken me twice as long in Freepascal or Delphi. I’m not even sure I would have bothered if Visual Studio was my only option. Seriously.

So you may be wondering: why on earth would you implement a licensing system in JavaScript? Well that’s the cool part! Right now most licensing systems are native only. Which means that if you want to really get control over your software you have to fork out for a virtual host, if not a physical server box. The price difference between a node.js hosting solution and a native hosting solution is substantial. So implementing a version of our HexLicense server in Smart Pascal + node.js will save my customers the expense. It also means they can host the server on whatever operative system they see fit. And once again, the price difference between a Linux host (Ubuntu is wonderful to work with) and Microsoft Windows is still a factor.

Coding it in Smart Pascal also opens up the door for license based access to HTML5 based applications, be they compiled to native via Phonegap or Adobe build services or just running in a browser. So once again our JavaScript virtual machine formula get’s it right. And it’s magnificent to play with. Not a day goes by that I don’t learn something new and exciting about JavaScript from object pascal, which is paradoxical. I know.

Back in the saddle

For the past few years my life has revolved around Smart Mobile Studio and the companies I have worked for (a.k.a “the day job”). It must be at least 4-5 years since I actually sat down and built products, delivered components and offered up my services as a Delphi software architect. There havent even been any time for consulting or system design. With a full day job, two kids and a product you live and breathe for there is a limit to how much you manage. Add to that my back injury 4 years ago which rendered me unable to even walk and you get the picture; Thankfully my back is getting better. I do two rounds of boxing every week (or try to) and that has done more for my back than all the doctors and their witch-craft medicine combined.

It feels so good to create new products again. Products that are doable within a reasonable time-frame and that solve real-life practical problems (as opposed to having to solve potential scenarios that havent even occurred yet: the burden of the RTL architect). So while HexLicense for VCL and FMX is in the store, Ironwood is being ported to Delphi – I have decided to wake up another component-set that I initially created for myself. One that deals with a very practical and hands-on challenge, namely: HexLog.

HexLog

Many years ago I was working for Hydro, which is the biggest oil company in Norway. Without getting to detailed (or breaking my NDA) logging was one of the problems we faced. With more than 50 Windows services communicating (read: 50 potential sources of bugs), the company’s lack of proper logging – logging in a format that made sense to people other than us developers (like system administrators, super-users and even insurance companies interested in locating where something broke down) made it almost impossible to work with the codebase.

So one day I had enough and sat down in my spare time to write a modular, thread safe, component based logging system that didn’t just “log some info”, but it did so by proxy. Meaning, that the writing mechanism(s) were isolated in separate components, abstracted from storage – which was isolated in other components. So when we needed XML logging we just hooked up the XML writer; when we needed RTF logging we hooked that up (and so on, for numerous formats).

You would think that Delphi developers in general had logging under wraps right? That is sadly not the case. Some people are very good at logging and have made it into a habit. But more often than not when I’m hired by a client – what do you think I find? Yup, plain old vanilla text-file logging. Which is fine as long as the coders have spent some time making sure the basics are in order. Sadly that is so rare it almost frightens me. Especially when I’ve upgraded software used by pharmacutical companies, doctors and organizations that really (really!) should do full journaling regardless of bugs or errors. In fact Norwegian law demands it in some cases; especially when medicine and prescription drugs are involved. If a doctor or nurse prescribes the wrong medication and a patient dies, the insurance companies will have a field day if there is no logging according to standards. And should it turn out to be the software’s fault.. well, let’s just say there is a reason only large companies operate with “within the hour response time” in their service agreements.

So what are the criteria people tend to forget?

  • File locking issues. It will happen the moment more than one process or thread targets a file
  • Making sure the information that is logged is organized by sections, visually distinct in the file
  • Making sure time and dates use UTC or ISO formatting
  • Logging the actual user, not just the program identity
  • Using mutexes and read-write synchronization when multi-threading is involved
  • Avoiding interface communication from threads without proper understanding of calling conventions and compartment schemes
  • Using memory mapped files rather than torturing the filesystem with an onslaught of IO calls
  • Use tab indentation to make the logs easier to navigate for the human eye
  • The list goes on ..

The most important oversight is not on the list, it’s actually something as simple as logging information that human beings can read, as opposed to adapting the information to what the computer wants to work with. A dentist wont know what to do with a stack-trace or “an error occurred executing MySQLQuery1.Execute”. But he or she will understand a log that states – in plain text – “could not store prescription for patient John Doe, the database reports the disk as full. An email has been sent to the administrator“.

You don’t have to be a programmer to replace a disk or move the database to a better location. But the log must make sense. It should just be there, not getting in the way yet easily accessible.

Journaling and big-data

When you are logging every action an oil-pump (and its regulators) do for 24 hours, logfiles can grow into the gigabyte range. Can you imagine one gigabyte of messy, purely technical jargon to wade through when a critical system is down? Well I can, because that’s exactly one of the things I faced 12 years ago when I was hired to “fix” a couple of bugs. A couple of bugs turned into 2 years of re-writing the entire system from scratch. Notepad crashed when it tried to load the original log-files.

The system was all written in Delphi 4, breaking every rule known to object pascal developers even back then. Like services opening forms and forms using DDE to communicate. It was a miracle that it had worked to begin with.

This is where I decided to write a journaling system that would present me, the programmer, with a unified API for writing, reading and even updating log-items stored in multiple files. So you can set a limit to how many log-items one file can contain, and when the log reaches that limit – it create a new file automatically for you. It takes care of everything in the background, keeping track of the files and their content through an index files. This solution helped solve the problem of monster log files. And you know what? That was the core bug in the system. They had used TStringList to load in the text file, append one item, then saved it back out again. Loading almost a gigabyte of raw text while trying to keep up with GPIO signals firing like mad. So yeah, logging does matter!

HexLog naturally implements this, now even faster than before due to Delphi’s dictionary classes and clever use of balanced trees. The best is that the writer mechanism applies to this type of journaling as well. So if you prefer XML thats not a problem, nor JSON, nor RTF for that matter. I’m even throwing in a PDF writer in update 1.

And did I mention both local logging and network logging? And that you can read the logs via a fancy HTML5 dashboard in any browser, both locally and remotely?

Reading more about HexLog

If you find the topic interesting and worthwhile, head over to my company website and read the release statement here: www.quartexcomponents.com. We dont take orders just yet, but it should ship out in the beginning/middle of next month.

And yes, there will be a server edition both for native Delphi and node.js, so there is a lot of value for money in this package.

 

Hexlicense 1.0.1 for VCL is shipping

October 4, 2016 Leave a comment

HexLicense v1.0.1 has now started shipping to customers! And hot on the heels of the VCL implementation comes the FMX version (due shortly).

HexLicense test running on Android [FMX]

HexLicense test running on Android [FMX]

The Android implementation passed all tests yesterday, with the iOS session due for thursday. So hopefully the FMX edition will ship at the beginning of next week.

Head over to www.hexlicense.com and grab your copy while the 40% discount is on!

What up next?

While focus is on finalizing the FMX platform, the server edition is also being worked on.

You will be happy to know that it’s going to be a low-latency websocket client/server solution. This means your products can validate their licenses from HTML5, node.js, Delphi, FPC, C#, C++ or any language that supports ordinary websocket.

Two servers

Two versions of the server is planned: one native win32/64, and one node.js server written in Smart Mobile Studio. The native version uses the ZeosDB library giving you a rich set of options for what database you want to use. By default it uses sqlite which is more than enough for handling <500.000 licenses. However the pro edition will use mysql embedded for maximum performance.

The websocket prototype is already in the making

The websocket prototype is already in the making

The node.js edition enoys the full onslaught of node modules for data storage. Be it clound managed through Amazon or Azure – or a more humble, local sqlite database. You pick what is best for you and your product.

More ciphers, more encryption and more tools! Head over to hexlicense and check it out

 

Pilotlogic and codetyphon in clear violation of copyright law

May 4, 2015 3 comments

The past couple of days has been pretty rough. A couple of individuals have been pestering this blog asking for ‘evidence’ regarding my earlier post on GPL violations by PilotLogic. Which is a bit ironic. They have the strength to type hate posts both here and over at the lazarus/freepascal forum, but lack the energy to read earlier posts about infringement of rights. The term trolling comes to mind.

Chain of events

Piracy is piracy

Piracy is piracy

Yesterday a member of the Delphi Developer Group (Facebook) brought forward the evidence I was pointing to all along. I did not want to implicate him or any others by name, but considering the slander, threats and more being posted against me – you leave me little choice in the matter.

Leading up to this was the following chain of events:

So on saturday I visited Pilotlogic’s forum where I found a rather colorful description of myself. I was a liar, a thief and a troll (eh, yeah, because I run around forcing people to read my blog *sigh*).

When I responded to this the Pilotlogic group posted my personal address, phone number and a link to a previous employer. This is just completely unacceptable and utterly out of line. It’s also illegal to do so without consent in Europe and I would guess it’s illegal in the US as well.

When I responded with evidence together with a friend, we were both kicked from the forum and banned. The original thread was likewise deleted.

A third person, an administrator for Delphi Developer visited the forum to ask exactly what was going on with their GPL situation. He received the same treatment.

The debate continued on the freepascal and lazarus forum, where I was once again threatened to be kicked and banned for telling the truth (!). Not only did I write about this breach in order to protect FPC/Lazarus from damages (and also because I find pilotlogic’s behavior rude and unacceptable), but I also did so to give pilotlogic a fair chance to fix the problem. The respond from the community however has been a clear case of killing the messenger.

Firemonkey/VGScene open source?

Firemonkey is based on a commercial product called VGScene (also DXScene) which Embarcadero bought. VGScene has never been an open-source product, yet we find that pilotlogic’s ORCA system is in reality a carbon copy of VGScene. They simply copied the damn thing, re-named the classes and branded it open-source (!) And they are now continuing to bundle this code and giving it away to their customers.

That is piracy, plain and simple.

I am not going to wade though all the code here, those that really want to have a look at this should head over to the freepascal/lazarus thread where you will find all the information. In short: orca and vgscene was put through a normal comparison test and there can be no doubt that ORCA IS VGSCENE. A product now owned by Embarcadero.

I think it speaks for itself

I think it speaks for itself

VGScene was never open-source, it is a commercial product all the way. So this is a clear violation of copyright law.

Their response? To kick and ban me and the guy which has written to pilotlogic countless times warning them about this. I mean — how bloody stupid can you get!

GPL violations

A total of 3 GPL violations were brought to light yesterday. The evidence was so clear that the Lazarus and FPC community is issuing a formal wiki-page urging pilotlogic to clean up their mess!

Final words

I would like to say to those that have slandered, thrash talked and outright lied to protect their own sorry asses and implicate me — from the bottom of my heart: go and fuck yourself. And I mean that deeply, and from the depths of my being. Preferably with a broom and some breakfluid.

You wanted evidence? Well I didn’t want to post evidence here since that would sort of make it a dead-end for pilotlogic wouldn’t it? Fucking morons. I posted the article because I wanted pilotlogic to clean up their act. But you guys just had to push it didnt you? But head over to lazarus and read the thread – there should be more than enough to fill your hunger for drama and blame there.

You guys should be ashamed of yourselves. Posting personal contact information about me, my home, where my kids live? Oh I really hope you come up here, I’ll give you beating of your life.

You guys have utterly disgraced yourself. You dont threaten a man by name in public. You should be thankful I dont report this to the police, because we have kept PDF signed snapshots of all the rubbish you have posted.

I take for granted that this is the last I hear of this case.