Monday, October 31, 2005

Delphi SKUs: Pro, Ent or Architect?

Uhm... actually, was it for me, none of them.

Let me explain: right now Delphi has become huge and three editions only probably
aren't enough. As it's been highlighted in the past, it's all about choices.
Fine then, please let me really choose. If I develop desktop applications for Win32, I'm
probably much less interested in dotNET - thus giving me ASP.NET is basically useless -
while it would be alot more interesting to get DataSnap, for example.

Give us an IDE at a very low cost(to allow young people to get started) . Let us choose à la carte what packages we want to buy, discount on bundles(if I get to buy stuff for - say - $600, you make me pay $500? That's for Borland to figure out, really).

There're several reasons to be willing to do this: first of all, as I said, three editions seem too few for the current choice of technologies. I can in fact split Delphi in at least these profiles:
  • Delphi Desktop applications using Win32
  • Delphi Desktop applications dotNET(which I don't think is good, but however...)
  • Delphi Win32 Web Development using WebBroker
  • Delphi Win32 Web Development using Intraweb
  • Delphi dotNET Web Development using ASP.NET
  • Delphi dotNET Web Development using IW for ASP.NET
  • Delphi dotNET Compact framework applications
  • Maybe I've missed a few
And I'm not detailing package wide, just using common sense.
That's at least 7 different "profiles" and I probably missed a few, like Delphi
Win32 C/S developer and Delphi dotNET C/S developer. That's about 9 now.
Maybe more. By providing only three editions you're actually limiting my
choices rather than widening them.

Back in the Delphi 5 days, Borland offered ADOExpress as a separate package for purchase.
This could be done with ECO and other pieces as well.

Why not do it again, on the whole packages that are "worth it"?

Cheers,

Andrew

Tuesday, October 25, 2005

Why would I want to use ECO?

It's been pointed out, from Jesper on this same blog(see previous post's comments) and in several Borland forums(and during 24hrs), what ECO really is.

ECO is, simply put, a new way to write applications. It has all the features of an OPF, plus a powerful constraint language, OCL(which is common practice in the MDA world), which is
meant to make the life of us programmers easier.

The most compelling reason to use ECO, then, is the fact that a fair amout of code(namely: all the persistence code) gets out of the way to let us concentrate on coding the application.

There're other reasons, too, though: for example, you can use your own already existing database that you can evolve to use ECO.

You can also(you most times actually will) model your business classes and map them onto one or more persistence layers(I'm talking the full blown ECO here) directly from inside Delphi.
This means that, if a customer asks for an Oracle database, oplà, tell ECO to use Oracle and you're done.

As you can see, these are all extremely good reasons by which you'd want to use ECO.

There's one main issue here though: ECO is about dotNET, not Win32. This means that you'll have to use it in a managed environment. This might not be what you really want from your
apps, especially when you're not server side.

This becomes really especially true if we're also considering that DeXter Pro will contain just one persistence layer instead of multiple: the XML files.

This is indeed a problem. Assuming you might want to take on the risk and try to deploy to desktop PCs, you're facing the "Win9x challenge": will my application just run somehow or
won't it even start?
Please let me remind you(is it really necessary? Hope not!) that the average computer user is plenty full of viruses in his/her machine and that Win9x is unstable most of the times and with very poor hardware dotation(little RAM, little HD, etc). You might trying by limiting your app to Win2000+ but then... computers running Win2000 are still below actual computer horse power(not as much as Win98 machines, but... well you get the idea!). Are you sure that it's going to run smoothly and without problems? Obviously not(I'm talking about "structural" problems which are not to be raised by single applications). I've collected some informations at the 24hrs of DeXter, where an ECO team member told me that, by itself, this library doesn't add up very much to dotNET requirements, but still... thus, the only "reliable" option is to limit to Windows XP. Not only that, but you must make sure that you have enough RAM(please read Mark Russinovic's post about dotNET applications memory usage!) and decent hardware components
(big HD, etc).

Now, on to the technicalities about dotNET. You'll end up choosing WinForms or VCL.NET .
Either one, to me, doesn't seem a great option. Why? The (in)famous JIT compiler. Why this is a problem is *very* easy to understand: dotNET is precompiled in IL code. This code then gets translated on-demand when you're going to use it. Lastly, it gets cached till you close the application. This means that if you restart your computer or anyway close the application, the next time you'll have to go through JIT again! Now, given how many times you're bound to restart Windows(just think of the updates, let crappy software apart), you can see where the problem is.
Let's consider something relatively "simple" in dotNET: managing XML files. These are usually managed through DOM rather than SAX, because you will normally need the tree. At least, I still have to find a situation where I didn't need the tree. Maybe XSLT transformations are better off with SAX, but I don't do that usually ;-).
DOM engines for XML all suffer by one element, which is critical in dotNET applications: Memory consumption. Small files(in Win32) already get to use a fair amount of memory, let alone big ones. Go figure in dotNET. Plus, the code to load them is fairly slow(keep in mind
that XML files might be using several different encondigs, thus a parser has to check for
encoding compliance and so on - and they can't just assume you're using UTF-8 and it has to check for each node and for all its attributes, be it leaf or not).
Another problem, is that dotNET doesn't have pointers. Yes, I know, that's supposed to be a "feature", yet I like pointers :-) because they speed up some of my work. All Delphi classes are "pointer based"(actually that's what you're managing when you write var SL: TStringList, since the compiler will translate that to var SL: ^TStringList) and there're a few third party components that make a brilliant use of Pointers(Virtual Treeview being the one that comes to my mind first). Such components can't be ported to dotNET(obviously) and that's a problem for Delphi programmers, since many of them are using that and other components that can't be translated easily to be managed ones.

These are just a few of the problems that you may encounter in dotNET. But we were talking about ECO, now let's see some "ECO-specific" reasons by which you won't probably want to have ECO desktop applications. ECO makes use of WinForms and if you've explored some more detail about it(I'm a Delphi 2005 user) you'll have discovered that you can't include WinForms code straight into your applications the way you used to with Win32 packages. You can - instead - do that with VCL.NET . This means, basically, that if you want to deploy such applications to the market, you have to deploy ECO packages too. This means - potentially - that if I'm a D2005 user and I download the demo for free I might be able to add ECO packages in the IDE, thus having access for free to something I would have to pay for otherwise. Now, how am I going to make sure that you don't have Delphi 2005? I can't - clearly. This means I can only do components which expose some ECO persistence property to work, but this also means that I have to restrict my market to components development that will be used by a vastly reduced market, namely D2K5 Architect owners and upcoming DeXter owners. The other way you can safely use ECO for the time being is ASP.NET applications. You build a website, then let users subscribe to your services. With Highlander, this is apparently bound to change - because ECO will be available for VCL.NET which is a good thing.

Starting to "see the light"(at least, what I think to be such) now? :-)

Thus, the problem really boils down to what you're planning to do with it.

There're advantages too, such as the fact that even if you have DeXter pro(making components), that counts very little: just expose the correct properties and anyone using ECO would be able to change the persistence mechanism, even though you can only provide XML persistence. If you're writing webservices, you can however detatch your ASPX service from ECO persistence and be good with it. Actually, if you have a set of classes that "hide" ECO to the service, this seems very good to me :-) You can however upgrade if/when the website is having enough subscribers, till then you might have separate XML files(where appropriate) for each user.

See, all this actually makes the "right decision" fairly difficult to do, considering all of the above.
I don't think to have the Truth in me, thus I'll just tell you what I would do if I had to choose.
My best bet would be to go for components, because even if the market for them is fairly shrinked, managing, updating and advertising a website can be quite challenging, while a message on Borland Forums now and then to advertise your components would probably suffice for most businesses. Also keep in mind that managing a website offering a subscription service must be done on reliable hosting - maybe redundant? - plus you also have to improve the service itself, leading to potential problems with customers who don't like the service's changes,
while component customers can simply stick to what they already have without upgrading.

Once ECO will be in VCL.NET, though, this all might(and probably will) change.

Cheers,

Andrew

Sunday, October 23, 2005

ECO and DeXter

Well... it's been a while, actually, since I last blogged here.
I decided to chime in again, because I looked at a video, featuring Tim Jarvis' daughter using ECO to produce a homework management application. I strongly suggest that you watch it - but mind you to either use Internet Explorer or download it - since it won't show up in Firefox, you're warned.
Alexandra(Tim's daughter) has done an excellent job using ECO, I strongly recommend you view the video - it's worth it.

For those of you who don't yet know what ECO is, from my fairly superficial knowledge, here is a short description: ECO is, in essence, an Object Persistence Framework.
Yet, it's a full featured one, with lots of goodies, already here and upcoming. It has all the "classics" of such tools, plus a few very nice things like complete integration with the Delphi IDE. This means that you can design your model inside Delphi and then code straight away, even though with time the needed coding becomes less and less(at least for the "average" application).

Let's see the pros and cons.
Pros: It allows you to basically define most things visually, you can have multiple target databases(or persistence media, anyway) and if you're in the higher SKUs, then you get nice little things like data-hubs which, in the end, are a handy way to manage data oriented webservices.

Cons: it's only existing for dotNET. This is, though, a disadvantage only up to a certain point. Let me explain. It's highly unlikely that you'll be using ECO for a desktop application, for the simple reason that it would be fun to see an eco-powered application run on Windows 98, and beleive me, Win98 is still well spread out there.
Instead, you'll be using ECO mainly server side, maybe with SharePoint Services(btw: do you know anyone who can actually use that stuff? I'd have a few questions to ask :-P) or just in an ASP.NET application. dotNET on the server side isn't actually a bad idea, after all a server is supposed to be fast, powerful and all, thus it would make sense to get a higher end machine for a multi-thousands dollars application. Plus, dotNET has the other advantage(server side) to be in a managed environment and if an application happens to have a problem, that's not likely going to bring down the whole server(which is a good thing ) or make it dead crashing.

Plus, having critical applications in a managed environment makes it a lil safer(read: viruses/exploits/etc remarkably more difficult) even though this doesn't substitute
basic security precautions(like: why let anybody do anything in a webservice without
being logged in?).

Well, since I'm at it, I'll also be commenting a bit about DeXter :-)

I know Borland since... uhm... be it 1991 maybe, when I started programming.
I've always thought Borland had brilliant development tools, even though I
really didn't like the most recent strategies very much(read: Kylix 4 needs to be
produced :-)).

Since Delphi 8, though, things got really, really, really scary.
Much scarier than in the past. This is because of several reasons, imho:
  • First of all, because not many Delphi programmers trust Microsoft(yes, I'm in that camp)
  • Secondly, because MS is trying to impose something(dotNET) in both server and client machines, which means throwing a fairly big amount of code really out of the window.
  • Thirdly, since MS has $100 million shares in Borland, all this sounded like the final death of Borland as an independent company
  • Fourthly, because Delphi 8 was really awful according to many commenters(I didn't buy it, thus I don't know first hand)
Yet, now things seem to getting back to normal, and we even have a real ROADMAP! wow!
It's maybe the first time that Borland actually does one in 14 yrs(that I know of).
Actually, there also were the barbarian updates from Allen Bauer for Delphi 2005 which made the product even more enjoyable than the three patches(which had already made it quite enjoyable). Those are also already available in DeXter, acutally the D2005 ones are a backport, thus things should have been vastly improved in that respect.
Plus, there'll be an ECO "lite" version even in Pro SKU, which is appealing for me.
Anyway, time will tell what Borland was able to do and if it's worth being with them.
Considering that there even is a CompactFramework preview compiler for Delphi 2005, things just look right.

What to say... I'm eagerly waiting and if I can manage I'll be surely getting a Software Assurance as well - according to the roadmap it should be very good value :-)

Bye,

Andrew