views:

617

answers:

8

With all the talk about the Delphi team working on cross-platform development, one sentiment that keeps coming up is, "I hope they do it right this time, not like Kylix." I didn't really notice Kylix when it was around, because Linux wasn't nearly as mature back then as it is now and it just wasn't an OS I had any interest in. So now that it's starting to become an issue again, I find myself wondering, what did Kylix do wrong and how could CodeGear do it better this time around?

+6  A: 

Kylix had two things working against it: widespread acceptance of Linux on the desktop just wasn't there yet, and Kylix itself was very expensive. Throw in Kylix's questionable quality (especially the first version) and you have your answer.

If CodeGear wants to do another version of Delphi on Linux, they should just look at Lazarus.

Robert S.
What sort of quality problems did it have?
Mason Wheeler
It didn't behave well with the window managers of the time, for starters. It also had stability problems and inconsistent behaviors between Linux distros.
Robert S.
I don't think so, because Lazarus is of questionable quality itself.
mghie
Lazarus is free. Kylix was $3000 (initially).
Robert S.
Free as in beer isn't everything. I wouldn't use Lazarus for day-to-day work if I was paid for it.
mghie
Neither would I, but that's not what this question (or answer) is about.
Robert S.
Agreed. It has severe flaws, and they're the same ones it's had for years, and everyone knows about them but they're just not getting fixed. I love open-source software when it's done right, but Lazarus could be a textbook example of the wrong way to do it.
Mason Wheeler
I can't remember now how much Kylix was, but I would never have paid USD 3000.00 for it (and I did buy it) - I think it was something like GBP 200.00, at least for early adopters.
anon
We paid about 300 Euro then, being Delphi Pro users. Inexpensive for what I wanted it to be, but a total let-down in reality.
mghie
@Neil: Kylix 2.0 was quoted as $2999 to us as an "enterprise edition." This was a government shop, so the VAR was likely trying to rip us off. Maybe chalk that up to Kylix's failure as well? :)
Robert S.
I did a little bit of Googling and it looks like in 2001, Kylix Desktop was $1000 retail, and Kylix server was $2000 retail.
Robert S.
The price I quoted was for the Pro (desktop?) edition. UK prices are almost always the same as US prices, except that the FX rate is 1 USD == 1 GBP :-( If the $1000 price you quote is correct, this must bne an almopst unheard of instance of software being cheaper in the UK than in the US!
anon
Kylix came with Delphi 7 for free, there was the Open Edition, which was a free download. I myself bought it for 20 Euros from SuSE, just for the hell of it. I probably still have got the CD on the shelf somewhere. Unfortunately it won't install on current linux distros any more.
dummzeuch
They started pricing Kylix at the same level as Delphi, then they dramatically slashed the price when it didn't sell, which of course angered some of the people who bought it for more money.
Jim McKeeth
A: 

Trying to charge 600 bucks for people used to getting tools and software for free might not have been a wise decision!

Conrad
that's not fair... developers will pay, if the product is up to hype. in this case, it was clearly not
sardaukar
A: 

They also had a lot of trouble creating reliable deploy on so many different distro varieties.

Craig
That seems more like a Linux problem than a tool problem. You see similar compatibility issues on Windows; it's just less widespread because there aren't nearly as many Windows versions as there are Linux distros. How do other Linux programming languages solve this problem?
Mason Wheeler
They provide the full source so you can compile them on your specific Linux platform.
anon
Neil: that is naieve. You often can't compile an old source under a new system without mods, and even for current distro's there sometimes is work needed to compile current source.There is simply effectively no way on Linux to have an application that doesn't need continous maintaining to keep running. And if you can't force that off on the community (because you are commercial, the audience is not big or knowledable enough), then you are out of luck. And non trivially sized apps need quite a lot of maintaining. Also on Linux.
Marco van de Voort
+1  A: 

I bought Kylix when it first came out - it ran very slowly, looked clunky and actually only supported a few specific versions of Linux. Frankly, there were and are better Linux tools out there. But I think it is getting increasingly hard for anyone to make money selling development tools, whatever the platform - the free alternatives are just so good.

anon
One notable exception is Microsoft, which still charges for its tools, and I keep buying. :/
Robert S.
Yes, but how much money do they make from them? Most of their income derives from the Office and OS sales, IIRC.
anon
The hearsay I've always heard is that the fees for development tools cover the costs of pressing DVDs and hosting the downloads, plus the conferences and such. I doubt they're profiting much, if at all.
Robert S.
Yeah. Microsoft can get away with dumping free tools on the market because they've got Office and Windows revenues to subsidize it.
Mason Wheeler
I don't think that is true - I think they do make a profit from their tools, just not as much as they make from their other products. And of course the avialability of the tools contributers to the success of the the OS.
anon
The calim that Microsoft is dumping dev. tools and not making profit is crap. From the information that I have got from once insider who has left MS said that they are making handsome profit in spite of rampant piracy of their dev. tools.
Yogi Yang 007
Umm... how much profit do you make on a fully-functional "express" tool that you give away for free? CodeGear tried that 2 versions ago. In case you haven't noticed, they don't seem to be in any hurry to do it again, most likely because it actually cuts (badly) into sales of the Professional edition.
Mason Wheeler
They make profit, but their sales are integrated with MSDE and similar trajects. If the business unit was totally standalone and couldn't look into the MS competition they would not be half what they are today.Just making profit doesn't mean it could hold up its own belt independently
Marco van de Voort
+7  A: 

As for what could CodeGear do better this time around:

  • There needs to be a more abstract way of laying out controls in dialogs, not the pixel-based stuff the VCL uses now. This breaks down on Windows already with high DPI settings or non-standard fonts, it will be much worse for multi-platform programs. Take for example the sizer classes in wxWidgets, or the layout classes / managers in GTK, Java or QT - they all do much better with changing fonts or control sizes. As another advantage this works transparently with translated texts in controls being shorter or longer.

  • Make the libraries Unicode only. Ideally there would be a special string class, using UCS-16 internally on Windows, but UTF-8 for Linux and Mac OS X. A program should be able to work with the platform-native Unicode encoding, not be forced to have conversions for every file system access or screen output. But maybe they already dropped the ball on that one with the Unicode string changes for Delphi 2009.

  • The GUI should use native controls on all platforms, for proper look and feel. That would be the standard controls on Windows, Cocoa on the Mac, and on Linux it should ideally use either GTK or QT, depending on the desktop being GNOME or KDE.

  • The remote debugger needs to become a first-class tool, not the bug-ridden and half-hidden thing it is now. Development for different platforms happens often in VMs, sometimes there is only remote access to machines.

mghie
for wxWidgets there is now a plugin for Delphihttp://www.twinforms.com/products/wxformsdelphi/index.php
Hugues Van Landeghem
I know. AFAICT it doesn't make use of sizers. Look at the linked screenshot for Mac OS X, that's exactly the way it's not supposed to look like. Wrong button order, wrong control spacing, "OK" and "Cancel" button labels, static texts aligned on the left, ... I could go on and on.
mghie
+5  A: 

I worked on the Free Pascal Unix RTL at the time (and still), which did Pascal on *nix before Kylix, and we watched it closely from the fist beta's on. So one could say I had a good and unique perspective on the rise and fall of Kylix.

A main problem is that it wasn't geared towards server apps use, the main thing people were doing on Linux at the time, but IMHO that doesn't explain the failure.

While there were various other problems (Wine, deployment, being very Linux/x86-centric so harder to port to the "next" *nix, Borland not pushing it enough), I still think the fact that Kylix failed is more a testament to Linux' woes at the time than a direct result from Kylix problems. Some of which (like long term binary API stability) haven't been fixed still.

Still, it should have worked IMHO, since it was clearly ahead of the rest, and workable, and if the demand had really been there, people would have stepped up (and some have, we still get monthly people on the FPC lists that are converting large Kylix codebases).

A server oriented version might have been a bigger hit, and they marketed a bit too strongly on the single source thing (which raised expectations wrongly), but still the GUI principle as it is should have worked IMHO, and I blame Linux and the Linux market. Too soon, market too hyped, and not ready for commercialization after a Windows model yet.

Marco van de Voort
I disagree re the whole server thing - there's no market for yet another dev environment for server apps, least of all a commercial one, and there hasn't been then. Maybe there would be a market for a Pascal cross-platform GUI development done right. Maybe dual-licensed, see QT, they did well with that approach. However Kylix failed spectacularly on the promised "take your Delphi VCL app and make it a nice cross-platform CLX app in a few easy steps" front. Part of that is that it's just not that easy. They overpromised and underdelivered.
mghie
mghie: I agree with the second part. I don't agree with the first part, since we are talking a different time here (2000, not 2009). There was a window then.
Marco van de Voort
A: 

What I hated about Kylix and VCL for Web (Intraweb) is that they have components that look like the standard components....

The VCL is itself quite generic (Except for the handles)... So I would want to have the same source code, same pas, dfm, dpr .... and by selecting a compiler option choose which platform to build for, or even have different dprs for each platform with the same source files.

Osama ALASSIRY
I agree that the same code for all platforms would be nice, unfortunately the VCL simply isn't generic at all. It is impossible to write a framework for a single platform and make it generic later on. For cross-platform applications one needs to code against the least common denominator, not against a thinly veiled single-platform API, which is all the VCL is really.
mghie
If I were to use another API, another source code, It's not really cross-platform. It would only be another platform to build for, I don't see a lot of code-reuse unless we share all the non-visual components, and try to make our code more Object-Oriented in the full sense.
Osama ALASSIRY
Transitioning to an MVC-like architecture could help, with different views for different platforms.
Osama ALASSIRY
I agree with you, but all source code should be shared, not only the non-visual components. Kind of what Borland tried with the CLX, only with native controls as the underlying platform instead of QT. Something that replaces the VCL, not an alternative for another platform, because I think that the VCL isn't fit to be the base of such a cross-platform effort. And I agree with your second comment too.
mghie
+1  A: 

In my opinion to go cross-platform native & hosted (VM) would be good for Delphi; however there is the catch that it needs to be well thought-out before implementation. (Generally the Turbo Pascal versions were, IMO... though some of the additions to the Delphi language were not; case-in-point you cannot declare properties in interfaces to be read and/or write only w/o declaring also WHAT the property's source was, either a field or method that had to be declared in the interface. IE it was/is a good idea... but they forgot to fully separate interface/implementation.)

So, IMO, what is needed is:

1 - A VCL-/TurboVision-/GeneralPurpose-like library, designed to be platform independent. ( The VCL really is a good example for object-oriented hierarchies; as was turbo-vision [for its time]... also TV introduced and used streams rather interestingly. ) So, to reiterate:

a) A good object-oriented hierarchy of visible components... perhaps also embracing a more "percent"/relative/vector-graphic scheme than the current pixel one. (Thereby compensating for screen-resolution disparities.)

b) Objects that "know" how to initialize and free their contained objects (though pointers to objects would be exempted, as we would like to have the ability to "share" objects), so the setting up of constructors to initialize and destructors to free the contained objects are not needed. {IE, Optimize the common case.}

c) The non-visual components like TList, TStringList and so forth should be implemented... though with the addition of ADTs such as Stack, Queue, PriorityQueue, Heap, Tree & BTree. As a personal request though, can we make them 1-based rather than 0-based? I ask this because when searching through them it would be nicer to have 0 be "not found" and a positive number be the index all while using unsigned numbers, much the style of ShortStrings. This also has the advantage of not chopping in half the maximum allowable size-constraint as using signed numbers would.

d) Objects should be able, at the lowest possible level, to send and send/delete themselves into a stream for reconstruction on the other end. {Difficult to implement, perhaps; but the TurboVision API did it with its registration scheme... with RTTI involved it should be a bit easier.}

e) The aforementioned ADTs should also have a mirroring generic interface heirchy, such that something like TStringList gives you a list of strings whose matching objects property are objects of the TIntergerObject type.

f) Container types, like the stack or StringList should also know their contained type; and whether they are homogeneous or not.

g) A parser-object subtree on the non-visual object-tree that is inheritable and generalized (perhaps one that "eats" BNF and parses input accordingly... a HUGE project in itself.

I know that this is a tall order, and a LOT of work. However the payoff would be immense as well. A JVM could be a Stack object and a parser object that translates the source-code to the appropriate objects to be pushed onto the stack... A Forth compiler/interpreter could be implemented in the same way with several stacks and a Forth parser object. You obviously see where this is leading: having a versatile and generalized ADT library at the base and working building the framework on that the next iteration of RAD studio could in one fell swoop become not only a competitor with .NET for its "any language" idea, but also for multiple archetectures on the backend. (Yes, there is the sizing and endian issue, but the idea of high-level languages is to remove the programmer from those issues, unless he is particularly focusing on them; those issues could be well resolved by keeping the Delphi's Byte, Integer, LongInt sizes stable, as it currently is [perhaps using NativeInteger, NativeLongInteger and so forth when the machine-dependent type/sizes are needed] and by letting the TStream-descendant objects for files handle storing and retrieving Delphi-/RAD-native app data and deriving from those when particular endian is needed for the format.)