Make a Gnu/Linux binary

[expired user #8031]'s profile image [expired user #8031] posted 11 years ago in General Permalink
Hello,

Please, make a Linux binary. Wine isn't stable.

I congratulate you for this wonderful work.

Cordialy.
-- Maxou56800
ansgar's profile image ansgar posted 11 years ago Permalink
A Linux build would require a complete new project in another compiler/language. Delphi is not capable of producing Linux binaries. It can compile 32bit and 64bit Windows executables, and Mac OS and iOS and Android binaries, but only if the application code is based on Firemonkey. HeidiSQL is not based on Firemonkey, because Firemonkey is quite new and HeidiSQL code base is quite old. For Linux, you would need to rewrite HeidiSQL in C++ or other languages which provide a Linux compiler. Feel free to do that :)
fbachofner's profile image fbachofner posted 11 years ago Permalink
Hi Ansgar,

I do not want to minimize the complexity in such an endeavor, but you are an insanely gifted developer. [I am not, or I would be helping you port to Linux as of a year ago! wink ]

Let me point out a couple development tools which might be able to help in such a cross platform development.

See superficial discussion of Lazarus/FreePascal here: http://stackoverflow.com/questions/4385760/delphi-for-windows-and-linux

In one of the answers "avra" points to CodeTyphoon as a possible "powerful one click installation package for cross platform native Delphi like RAD/IDE based on Lazarus/FreePascal"

More and more developers (and certainly DBAs and persons with webhosting duties) use Linux for at least part of their work. Having HeidiSQL available as a native binary on Linux would really distinguish the project further.
fbachofner's profile image fbachofner posted 11 years ago Permalink
I just took a look at the Lazarus About page

They sure make it sound easy to make a cross platform binary: "Let's say you are creating a product on Windows using the standard Windows widgets. Now you want to create a Linux version. First you decide what widget set you want to use. Let's assume you want to use gtk+. So you copy the code over to your Linux development machine, compile, and link against the gtk+ interface unit. That's it. You've now just created a Linux version of the Windows product without any additional coding."

On the other hand, they do point out it may not be so easy to port a database project from Delphi: "Can I use my existing Delphi code?
Some of it yes. If the code is standard Delphi pascal and it uses the standard components found in Delphi then the answer is yes. If it uses some specific database, OCX, or DCU then the answer would be no."

Does HeidiSQL use OCX or DCU?
ansgar's profile image ansgar posted 11 years ago Permalink
Lazarus/Free Pascal makes ugly Windows executables. Their look and feel is by far not comparable to what Delphi produces as a native Windows API wrapper. And I'm unsure - does it compile MacOS binaries? And sorry, it does not help to just make compliments about my coding experience happy. The effort of rewriting ~53 thousand lines of code is just too much for me, especially with regard to my current health state.

But I was watching around for alternatives to Lazarus/Free Pascal. I found Java is the "best" match here, if I want real cross OS compatibility, at least the compiled controls are by far the most pretty ones when you compare Lazarus/Free Pascal. I have not written a line of Java code in my life. Even Delphi with its FireMonkey which can compile for MacOS, iOS, Android and Windows, is ugly. You see at once that it's not a native Windows application. And even for FireMonkey, although it's Delphi, you have to rebuild the whole GUI, and worse, you have entirely VCL-incompatible events and objects.

I see the point, we need an experienced developer in some language which is capable of doing cross compile or compiles byte code compatible to Windows, Linux and MacOS. If it's Java, I'm most probably not the one.
ansgar's profile image ansgar posted 11 years ago Permalink
No, HeidiSQL does not use OCX or DCU files as database objects.

But the code is far away from being only standard Delphi pascal and standard components. There's a ton of code using the Windows API, which surely does not work on Lazarus. Pointer code is alo very common in Delphi. Not sure if Lazarus supports that. And of course the MSSQL library, calles ADO, will not be available on Lazarus.
fbachofner's profile image fbachofner posted 11 years ago Permalink
Hi Ansgar:


Do NOT compromise your health. I have a bad cold today -- probably because I have been working too hard the past few weeks. Your blood pressure situation is a lot "touchier" than a simple cold like mine.

Perhaps at some point Lazarus will have better looking Windows widgets? Or does Embarcadero (Deplphi publisher) actually license those from Microsoft (i.e. unavailable to a broke open source project like Lazarus)?

The screenshots for Lazarus on Windows actually make the UI seem quite a bit better than "ugly." Example: http://wiki.lazarus.freepascal.org/File:Windows_7.png

Of course there are a LOT of controls beyond a basic window form and maybe even the most recent Lazarus versions have ugly buttons, tables, and other critical UI elements.

It is interesting that you like Java UI elements. I remember when Java was fairly new the applications (on Windows, at least) looked absolutely horrid. Perhaps Lazarus will follow a similar path of improvement.

Also, have you considered that QT works with Lazarus? http://wiki.lazarus.freepascal.org/File:Lazarus_IDE_QT_Windows.png

That's one of the few screenshots with a form with actual controls . . . and it looks quite workable (although their color choices for text boxes are horrid!).

Perhaps one way in which you could get help (and not just for a port to Linux) would be to establish a "bounty" or some other fundraising mechanism.

Continued best luck with HeidiSQL!
fbachofner's profile image fbachofner posted 11 years ago Permalink

And of course the MSSQL library, calles ADO, will not be available on Lazarus.



While I am dreaming happy. . . I'll say I would be even happier if HeidiSQL supported Firebird INSTEAD of MS SQL Server!

Just curious: do you track what percentage of HeidiSQL users use it to connect to the MS database? To me, their offering is overpriced, convoluted, limiting (particularly regarding platform) and unnecessary.
ansgar's profile image ansgar posted 11 years ago Permalink
Yes I have some anonymous usage counter for MSSQL and MySQL. Will post them this evening here.
kalvaro's profile image kalvaro posted 11 years ago Permalink

It is interesting that you like Java UI elements. I remember when Java was fairly new the applications (on Windows, at least) looked absolutely horrid. Perhaps Lazarus will follow a similar path of improvement.



Java apps can be as native (or not native) as you want and that has been true almost from the beginning. There have always been many developers putting lots of efforts in either paths. But Java is of course an entirely different beast.

Funny... Not being a desktop Linux user, I was under the impression that Linux already had some awesome open-source native apps to interact with MySQL. I guess it's just the greener-lawn-in-neighbour's-yard syndrome :)
fbachofner's profile image fbachofner posted 11 years ago Permalink

Funny... Not being a desktop Linux user, I was under the impression that Linux already had some awesome open-source native apps to interact with MySQL. I guess it's just the greener-lawn-in-neighbour's-yard syndrome :)



HeidiSQL is bar far the best MySQL GUI client out there. SQLYog probably comes in second (and has a couple cool features which you do not, particularly syncing of DBs), but it is not free/open and also not available on Linux.

On Linux, the best (common) bet is probably SQuirreLSQL (a Java application, thus multiplatform). It has gotten a lot better over the years, but they are still a long way off from your program's elegance.

There are definitely other MySQL managers on Linux, some VERY good such as Navicat. Navicat, however, is not free/open. I don't mind paying, but a lot of clients may need to use such a tool for just a few moments each half-year or so . . .

DtSQL is quite promising. Also not free/open. Haven't tried it on Linux yet.

I have been playing with Valentina Studio on Linux. It is pretty impressive. Free of cost (basic version), but not open.

Some also use NetBeans as a front end to MySQL. I haven't tried that yet, but it sounds like it has some merit, especially if one is in the middle of developing something.


In spite of all these options, it would be nice to have HeidiSQL on multiple platforms without resorting to emulation [I know, I know Wine is not an emulator! evilgrin].

It will be interesting to see whether some other brilliant developer agrees with my assessment and joins you in your quest to improve HeidiSQL and can deliver a native binary on Linux.
fbachofner's profile image fbachofner posted 11 years ago Permalink
Somehow I completely forgot to mention DBeaver [Possibly because of its O'Reillyesque logo, which I detest.]

However, DBeaver is very good (far more elegant than SQuirreL in my opinion). As a Java application it is also cross platform. It also supports the lesser known but excellent Firebird along with the regulars such as MySQL/MariaDB, PostgreSQL, MSSQL, Oracle, etc.

You might want to take a look for further inspiration.
ansgar's profile image ansgar posted 11 years ago Permalink
Usage statistics from users with activated statistics option, having reported once in recent 30 days:
* MySQL TCP/IP: 167859
* MySQL named pipe: 7
* MySQL SSH tunnel: 5962
* MSSQL named pipe: 304
* MSSQL TCP/IP: 2286
* MSSQL SPX: 1
* MSSQL Vines: 0
* MSSQL RPC: 2
* PostgreSQL: 8
fbachofner's profile image fbachofner posted 11 years ago Permalink

Usage statistics



Thanks so much for providing this statistical data Ansgar.

It is really interesting to see just how enormously more HeidiSQL was used for MySQL/MariaDB than MS-SQL this month. [I would assume that stat is relatively constant.]

As you develop PostgreSQL functionality I am fairly sure that number will start to skyrocket, especially if this new support gets some promotion. PGAdmin is good, but as with most GUI front ends, it is not as intuitive as HeidiSQL.
[expired user #4822]'s profile image [expired user #4822] posted 11 years ago Permalink
As for me, HeidiSQL works good with Wine. I spend much time working with HeidiSQL and there are no serious problems.
Some versions can behave bad under Linux, but it's easy to find a version that works good.
I think it's better to fix few known bugs under Wine than adapt code to compile for Linux.

Please login to leave a reply, or register at first.