Hi, Ok, you dragged me into responding this subject as well :) While it might sound as such, this is not Windows vs Linux fight, only a point of view for an ex Delphi developer, and a 5 years of Linux users (as only OS).
On 5/12/07, Peter Popov <[EMAIL PROTECTED]> wrote:
On Sat, 12 May 2007 05:04:33 -0500, Michael Van Canneyt <[EMAIL PROTECTED]> wrote: > > As far as I know, Lars is a FPC fan, and he merely wishes to express > concern about > some of the issues he has with FPC (I'll leave the matter of whether his > concerns > are justified up to others to comment on). It is always useful to listen to others, regardless of the language used. The man has some valid points. > > It only goes to demonstrate that to be truly critical and constructive > at the same > time is by no means an easy exercise. Completely true. Since this article seems to have stirred some debate I will take the libery to comment some aspects of it as well as express some of my personal opinions. Now, before anyone reads further, I want to state two things: One, I have deep admiration for the FPC developpers who have created a fine compiler from scratch. Two, the next few paragraphs are written from the view point of a long-time delphi/win32 developper, so don't take them personally. Some comments about the article: 1. Linux is indeed used mostly for server apps. This is a fact. One can speculate until kingdom come why this is the case. My personal opinion is that Linux is simply a shitty desktop platform: i. There is lack of a standard graphical api (or "toolkit"). For example, the idiots from throlltech constantly change the entire framework. (Qt2 is different form Qt3, which is different from Qt4. They are not semantically compatible. Attempts to run binary Qt2 libraries on newer distributions cause bizarre problems such as memory clashed with libstdc++, for example). Regardless of the toolkit, one cannot expect simple things, such as an X toolwindow hint to produce consistent results. No matter what, a win32 program that ran on 95 and 3.51 will still look OK today.
Ammm.. I'm a Linux user, so let me give you my point of view: Microsoft on any given new version of Windows *changes* API, changes libraries and technology, making even newer (the previous version was the first to have it) technology obsolete on a new version of an OS or a program. As example take a look at GDI+ (if I remember the name correctly). I do not know many people that changes their kernel and libc once every new version. In fact while Windows release time is one in 5 years, on the Linux world it is every 6 months ! So as long as you keep yourself with what arrives with specific distribution, you will end up having problems, but note, that there are development versions of Windows, that companies can change the OS as well, so you will also require to change your tools for every such version, and also for every new version of Windows (because the kernel is changes ...). If you are looking for a standard way of creating GUI apps with something that never changes, try to use xlib and xtoolkit. As long as the X11 protocol is in use, they never changes :) But as you can see, you are loosing a lot of features that might be added that way. For the QT from Trolltech, while I do have some issues with them, they do try and make support also for the GTK library in the area of styling. How many programs under Windows do you know that the GUI was designed regardless of the GUI toolkit that comes with Windows ? Even Microsoft does this with their Office suites... Every version of the Office suite, gives you a different look and feel. Take a look at Microsoft Office 2007, it's so different then anything else that most people just don't understand how to use it. Or you can take the IE7 vs IE65432 ...
ii. Linux prevents people from distributing binary applications: The gcc /kernel people constantly change things. So, one cannot develop and forget. You are either forced to release the source code so that the app you are developping can be recompiled after the newest kernal/libc/++ change. The alternative is to constantly mainatin a once developped program and provide ten thousand binary variants for ten thousand distributions. And update the binary of your app every month. The later option is generally available only to large commercial organizations. Again, a win32 program that ran on 95 and 3.51 will still run and look OK today.
As I said above, the ABI changes from version to version on ANY OS even Windows... But While Windows create new version every 5 years, Linux releases more often, but most distributions releases new version every 6 months ... There is a quotation that say "the price of freedom is endless violence". There are two point of view for things. Windows have both ways (SP can change the ABI/API as well, as SP2 made for Windows XP). And on Linux, you can have them both, but the easier way is just to deploy the code for every version, or to point things for specific version/distribution.
2. With respect to graphical applications, the man completely wrong by stating that: "FPC is a C++/C/D killer. Not a Delphi killer or a Visual Basic killer."
I believe that Pascal as a language is better the C, C++,D and Java. I do not respect VB, and I can not call it a programming language :)
It is plain clear that neither FPC will, nor Kylix did convert a s single, mildcore vi/gc fan to object pascal. There is absolutely no conceivable way this will happen. Those who use vi and fpc, please raise your hands :-)
I'm raising my hand (I'm using VIM rather then VI), but please excuse me for the smell, it's the beginning of summer here ;) Oh, and I know few others that uses vi/m with FPC as well...
This is actually the main reason Kylix failed: they targeted linux gui developpers. I encourage everyone to read this enlightning analysis: http://delphiroadmap.untergrund.net/A_cross-platform_vision_for_Delphi/index.html 3. As a delphi developper I have the following issues when considering FPC (I hope the following is not taken badly, I am just stating facts, as I see them): i. Too many bugs in any official release. This is unavoidable, considering the many platforms and targets supported. But it is a fact.
You can correct me if I wrong, but doesn't Delphi comes with bugs as well ?! If I remember correctly, Borland releases SP on their own. In fact, even Vista did not arrives fully beaked, and as soon as you installed it, you needed to installed "few" fixes... Now sure we all wish to have bug free product, but unless you are going to help the bug solving process, please accept that nothing is 100% bug free :(
ii. In any stable release, there are always some incompatibilities with Delphi. Which means that Delphi developpers will have to put an extra effort (in the form of $IFDEFs) to make their code compatible. In that respect the lack of an "Object Pascal standard" in the form of some ISO specifications is partially to blame. Given the fact that Linux IS NOT a Desktop platform, this simply means that object pascal people will keep on developping for Delphi/win32. It is a catch 22: Until borland delivers a quality multiplatform tool, no delphi developpers will do linux (exceptions do not change the rule). And until there is no serious demand for linux GUI apps there will be no motivation for borland to develop a stable, reliable, bugfree, multiplatform compiler+VCL. When I say demand for GUIs, I mean a secretary wishing to play her favourite solitaire game (one of the many hundreds of office style games, which were released for win95 and whose developpers are certainly doing something else today), or a college student using his/her favourite graphical plotter app for win32, or a more traditional type, who prefers ICQ2003b istead of the newer versions, etc. For example, my favourite browser is Opera. On win32 it looks and runs fine. On slackware 10.1 it looks and runs fine. On debian it hardly runs and looks like a crossover between a frog and a polar bear. My office computer runs debian and I am not the admin, so I cannot do anything.
I'm using Opera as well, on my Ubuntu, and it looks very cool, specially with the skin I chosen :) Linux is a desktop and server and live cd and OS ! you can do what you wish with Linux, unlike Windows, that arrives with what Microsoft believe you should have, and then you need to start finding other issues, on Linux you have distributions that gives you different things according to what the distribution is set to give. The running of Windows as administrator is a security risk, and you keep on paying on that by having spyware that effect the entire computer, viruses that effect everything, and of curse your computer becomes a zombie to an army of more zombies that are controlled by spammers. If you have used it without any administration and system privileges, it would effect only your user ! But then you can not do much with Windows as well ... Now you can say "I want Microsoft office", or you can say "I want a program to create presentation, a word processor, spreadsheet, or Instant message using the ICQ protocol", you can choose what you want, a specific product, or a list of programs that does this things... I can create GUI apps with Linux, and there is a demand for it ! While people as myself that likes to use the keyboard more then the mouse, and find out that it does the job faster then the mouse, uses the commandline, we still using a GUI environment, and GUI programs, and always try to make things better ! Just that you'll know, Hollywood, is using Linux for it's GUI features to create movies, animations etc... And there are more and more games and game engines etc.. It's just that people needs to open their mind to something they still do not know, or it's different then what the used to.
To summarize, if there is any chance for a large number of developpers adopting FPC, they will have to come from the delphi crowd in the form of people willing to do a little extra work of compiling their existing code with FPC. This is the essence of Simon Kissel's proposal to Borland for cross-kylix compiler. I sincerely hope that one day this will become a reality with FPC. A final remark: the vast majority of pascal users use Delphi. So if fpc is to attract a lot of them, compatibility with delphi must be 100%. If there is only one incompatibility with a known workaround, a delphi developpers will live with it. If there is a single major thing, one can try to fix it himself. But if there are 10 or 20 small things then most delphi users will give up supporting multplaform/fpc targets. Unless your boss pays you to port delphi apps to FPC. Now, I can understand that the FPC team has put a lot of effort in making a compiler from scratch and it is natutal to do things differently. But it will be a big boost for FPC if delphi compatibility stops being and issue.
I agree, but are you willing to help the team and add features that are missing in your opinion ? If you are asking "why me ?", well that's how open source works, everyone develop an answer to their own problem, and hops it will help others as well :)
Best regards Peter Popov
Ido -- http://ik.homelinux.org/ _______________________________________________ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-devel