Serge's Technology View

Talk about Technologies, Software Architecture and Management

Archive for August, 2008

Was: Delphi in the workgroup

In his post today, Marshall Fryman discsusses problems with shared development environment or workgroup development. Yes, it could be a complex problem which is rarelly addressed.

Note. Even though we are talking about Delphi here, it is really could be applied to any development environment.

Let look at the problem closer.

Problem

You have development environment with over dozen of development stations. You have similar development environment: versions of development tools used, locations, components. How to do easy update/upgrade in this environment and keep it up-to-date?

Solutions

1. Virtualization

My vote goes for virtualization – choose from VMWare, Microsoft VirtualPC or other solutions.
Then create base image which everyone would share, change your settings that anything which is user specific goes to his/her local drive instead of virtual image space. Yes, you would have to have some sort of unification, but it is true for any development environment nowadays.

If you go with Server editions of such products then it could be even easier since some of them could allow you maintain your own sessions without affecting main image.

Then make it through your virtual environment has a priority over your hardware so if you are in the development mode you would not really suffer penalty of virtualization. With new versions of Windows coming, I think it would become common and internally supported by default. For now you would have to do some maintenance.

2. “Virtualization”

The same name, but a way to achieve it is different. Instead of virtualizing a whole Windows environment, you do that for your Delphi environment only.

What does Delphi environment consists of?

  • Delphi installation. We have to assume that everyone is on the same version. Best to have it in the same location, but it is not really necessary.
  • Project source code. If you use any change management system, then you most likely already have everything in one place, and in the same folder structure. Projects are open from similar locations and exe/dcu files created in the same designated areas.
  • Components, wizards. That could be a problem and this is where you really put “virtualization” in place.

Let’s think about it for a second. What does Delphi have to have to properly use custom components?

BPL, DCP, DCU, DFM/RES files location! IDE really does not care where code was compiled, but rather that components are properly registered and place to find all required files.

Keeping that in mind, let’s create proper infrastructure:

  1. Put everything in your source control system and have it in the same places on all machines. You could have BPL/DCP in the same folder with DCU files or in different locations. Also folder with DCU files should include all necessary DFM/RES files.
  2. In Delphi, add your new location for DCU to “Library Path” in IDE options, and your BPL/DCP location to “BPL/DCP output directory“.
  3. Do not add source location to a “Browsing path“, you do not want THIS shared code to be recompiled on individual machines. It will also prevent some “strange” errors when DCUs start to “walk around”.
  4. Then install all necessary Design time packages and you done.

How would upgrade process work?

Now it is easy. On your master computer update components, recompile if necessary, then check them into your source control system. Then, when necessary, before launching Delphi IDE your developers would get latest form depository, which will update all components and proper DCU/BPL/DCP.

It is rare when new components has to be reinstalled in Delphi since file/BPL structure is usually remain the same. Even when such maintenance is required it can be accomplished with simple .REG file deployed and applied to all machines. But it is rare situation.

Result – you now have fully maintainable, distributed development infrastructure.

Conclusion

Both scenario are result of my own experience in resolving an issue of handling workgroup environment and have been used in real life.

Delphi 2009 beta: Installation improvements

Over the span of few weeks I have had “hot” conversation in public NG about speed of installation and that R&D team should do something about it.

Good news

For people who worried about future experience with installation of the Delphi 2009 – it is fast (or faster, since it is always comes to personal opinion). I have done several “fresh” installs, along with “on-top” installations. It did took me less then I spend downloading it over my 3Mb connection. Keep in mind a size and compare it to Visual Studio installation time and it start to look very good.

Not to be along with that statement there is other people’s opinion – Holger Flick posted last Saturday about his experience.

History

For many years, Delphi installation was created and maintained using InstallShield product line. It was based on it and IS Express edition was included in distribution for developers to use it. I am not sure how many people have actually used it, but it was there and it was free. Back in 2006

Newly formed CodeGear(TM) chooses InstallAware for delivering the newest versions of Delphi®, Delphi® for .NET, C++ Builder®, and C# Builder® tools. InstallAware Express is now bundled with CodeGear’s developer products as the installer tool of choice.

Let’s look at the possible reasons:

“Using InstallAware’s MSIcode, we have drastically reduced the need for creating custom plug-ins,” says Allen Bauer, Chief Scientist at CodeGear. “Our InstallAware setup dynamically defines the features and files to be installed. Instead of building, maintaining, and shipping separate installers for all the languages, IDEs, and product editions that we offer, we are now able to build and deliver a single install image. This has dramatically reduced our integration workload along with reducing our costs.”

“Electronic software delivery (ESD) will be playing a larger role in the way we deliver our products going forward. InstallAware will be powering our new ESD functionality in the Delphi and C++Builder products,” adds Michael Swindell, Vice President of Products at CodeGear. “We will be able to increase Internet delivery flexibility and performance providing customers with instant access to features based on electronic software purchases. Our goal is to make the user experience for both trial evaluations and electronic purchases as simple and flexible as possible. We evaluated a variety of installation and delivery technologies and InstallAware had the right features, performance, and technology for our requirements.”

Reality check

After initial release everyone had “suffer consequences”. Setup was much slower, updates could take substantial time to be applied. As a result, there was up until recently big “roar” to “toss” IA and return to “good old days”.

Alternatives

Aside from choosing to use batch file/XCOPY setup mode (can you imagine that this is still preferred way to deploy ASP applications?) let’s look at the alternatives for InstallAware (MSI).

  • InstallShield: recently acquired by Acresso. This is a target – “If your software targets Windows, InstallShield® is your solution.” – MSI. Long history with Borland/CodeGear and marketing/pricing/features may played the role in the decision of looking elsewhere for new deployment solutions.
  • InstallAnywhere - just to mention here and it is a product from the same company. In general it may be better positioned since supports not just Windows bit other platforms as well. Not a mainstream product for some time, but what could happen is that it will eventually merge with InstallShield taking best from both. At the time (2006) probably was not even considered to be a choice.
  • Wise installation Studio by Symantec – again Windows platform. – MSI and WinInstall. Product line had struggled for many years, was very non-trivial in maintenance and even though it did have potential, uncertainty of it existence at the time may played the role of not going with it.
  • InnoSetup - great product, native to Pascal/Delphi developers with its Pascal-like scripting language. But even though it is a great product, it may luck of some Enterprise features CodeGear was looking at the time highlighted above. Would it be faster? For sure. Would it lock the deployment to some of the “legacy” ways of doing so? Most likely. – WinInstall

Choice

Some of you will disagree with me on the need of standard ways of deployment, ability to automatically be certified for any future versions of Windows (Vista certification at the moment), common UI elements and interfaces… But reality is that it is that it is needed. User/System administrator/Company should be comfortable and familiar with the product deployment strategies and be able to do the same “that those other setups can do”. InstallAware gives just that. Yes, there is some hype in the air as it is with any product on the market, and yes there is a learning curve. Mind though, learning curve here more related to MSI technology itself, then to InstallAware implementation. Team has to have knowledge, desire, and  budget to properly implement requirements regardless of the platform they are using.

It my strong believe that what we have seen over last few years was a story how higher management decisions affect development rather then technology problems. Yes, I could be wrong, but after over a decade working with different deployment solutions, I think that we are in no worse situation with InstallAware then with any other product. With new management direction at CodeGear it may change, but improvements shown in latest installations for Delphi 2009 beta may finally let story rest in peace.

Update (Aug 28, 2008)

Last night I have had a chance to compare RAD Studio 2007 setup speed and RAD Studio 2009 speed once again. Impressive. 1 : 10 ratio. RAD Studio 2009 installs much faster.

After-match: CodeGear and Borland in Q2

A transcript of the preliminary Q2 results for Borland is now available (10 pages). Just so we do have something to compare with included are results from Q1. Since it is a last time when there is a public obligation to report such information for CG, let’s take a look.

To keep the same format:

Three Months Ended Three Months Ended July 31, 2008 March 31, 2008 ALM DPG CodeGear || ALM DPG CodeGear Licenses 10,000 || 9,415 9,122 9,283
Service  21,900                  || 22,972  4,549   2,933
Total    31,900  10,000  10,800  || 32,387 13,671  12,216

This compares to the prior year Q2: enterprise license a decline of 28.4%; maintenance a decline of 2.4%; and training and consulting a decline of 20%.

ALM revenue was 1.4% below the previous quarter and 18.6% below the previous year. ALM license revenue showing growth of 6.3 % over the previous quarter, but declining 35% from the previous year. ALM maintenance growing 1% from the previous quarter and declining 2.1% from the previous year.

ALM training and consulting declining 19% from the previous quarter and declining 22.7% from the previous year. DPG revenue declined 27.3% from the previous quarter and declined 6.2% from the previous year. IDE revenue, which is now reported under discontinued operations, was $10.8 million and declined 11.5% from the previous quarter and 20.4% from the previous year.

Update Aug 18, 2008: Borland has published official numbers for Q2 which no longer include CodeGear exact numbers mentioned above. Rather it is shown under discontinued operations.

Valid XHTML 1.0 Transitional  Valid CSS!