Fog Creek Software
Discussion Board

Open vs. closed

Joel addressed this in an earlier thread about language choice.  Now I am going to weigh in.

One of the most fundamental choices you make when writing software is your language and platform target.  This choice is often made without a great deal of thought and has long-term consequences.

One choice is to target a closed, proprietary, single-source platform.  Examples of this would be using platforms like MS Access, MS SQL Server,  COM, MFC, ATL, Dotnet, etc.  Other non-MS technologies of this sort include tools like Cold Fusion and Powerbuilder.

Another choice is to use open tools.  Examples would be writing C or C++ code using standard libraries,  writing Perl scripts, JavaScript, etc.

Between the two is a middle ground.  You have platforms like Java which are close to open--you have source code easily available, implementations from multiple vendors, there are clones out there, and there is widespread industry support.

Other platforms like Oracle are closed but are available for almost every platform of yesterday, today, and tomorrow.

When you choose the completely proprietary route, you are in many ways placing yourself and the customer of your software at the mercy of  the platform vendor and its fortunes.  For example, my current client has invested a mid-six figures in a VB-based OO software framework architecture that MS has basically obsoleted with the introduction of DotNet.  VB6 (released 3 1/2 years ago)  is the last support for this framework, which will undoubtedly die as a victim of bitrot as MS pushes forward with its new flavors of the month APIs and OS initiatives.

After being burned by Microsoft, I am no longer interested in having my investments in software and design subject to instant obsolescence at the whim of a software company, whether headquartered in Redmond or in the bay.  As a reasonable compromise we are targetting Java for future software development with Oracle on the backend.  I would like to replace the Oracle with something like PostgreSQL.  Maybe in a couple of years.  And I would like to see Java opened up more fully to a true opensource model.  But it sure is more open than the MS flavor of the year.

Matthew Cromer
Wednesday, November 7, 2001

The open/closed-discussion is a religious discussion. But because you always have the source for your own software, it isn't important wether your tools are open or closed.
Much more relevant is wether your software is deployable. For the disktop, java doesn't cut it at the moment.

Lauritz Jensen
Friday, November 9, 2001

Re: Java on the desktop (from the comment above): you may want to check out IBM's recently announced Eclipse. They decided to forgo Swing and built their own toolkit that uses native widgets. Their toolkit also exposes some native APIs, so that you can make a "real" Windows program that ports easily to other platforms.

Now, back on topic:

As long as you have the source for your OO VB framework, you're probably not in much trouble. Yes, VB.NET is different, but porting to it should not be an impossible task. If you don't have the code to your framework, then you are in a pickle indeed.

I'm a big fan of putting as little reliance on closed-source software as possible. In the case of databases, I don't have a problem with Oracle (other than the fact that it costs so much money and many applications that use it don't really need it). If you're using JDBC and don't use too many stored procedures, then you're not very tied to the database.

A couple years ago, iCat (a company that made online catalog software) went belly up and customers were stuck. If there's a chance that the company may discontinue the product or go out of business, I would want the source code. (It doesn't have to be open source, but source should be available.)

Here's the way I look at it: if there is some software you're using that would require you to redo big chunks of your product if it went away, then you want the source code.

Kevin Dangoor
Friday, November 9, 2001

You say java is not "deployable" to the desktop.  What do you mean?

Also, when Microsoft no longer supports VB6 and you can no longer operate against the newer MS OSes it is very relevant.  You will have to migrate your entire product to some new, supported technology.  Now how long until that happens?  I estimate 3 years.

People using open tools can expect their products and code base to be evolvable for decades.

Matthew Cromer
Friday, November 9, 2001

> You say java is not "deployable" to the desktop.
> What do you mean?

Java's Swing sometimes does not preserve the look & feel of the underlying platform, so the GUI seems amateurish.  This happens most often with Windows.

Java's nature as a not fully opensource product means that it can't leverage outside developers to really give the desktop polish.  But I hear that Sun can be quite overbearing to its own employees with red tape, so open-source hackers probably aren't experiencing anything unique.

forgotten gentleman
Saturday, November 10, 2001

Surely the choice of a development environment is always secondary to the choice of target environment which will then constrain the choices in the development environment.

Your view of the market will dictate the choices if you are developing a software product, your customer's needs will dictate the choice if you are custom building systems and your operational systems will dictate the choice if your working in-house.

As the other messages on this thread indicate that at the moment once you've chosen a propriety environment then the tools dedicated to the environment will produce a better product.

The client choose Windows as the target environment for their system. The average half-life of a Windows version gets shorter by the release and seems to be down to about a year. Microsoft's business model appears to be based upon creating discontinuities in its products (whether intentional or not) to secure license upgrade revenues. (Microsoft is not alone in this aspect).

Your client's decision to use VB is understandable. But did they stop to think about this before investing a six figure sum in a system? Did the client understand the risk of built-in obsolesence?

If you feel you can deliver acceptable solutions in Java (though there are clearly some dissenters on this thread), is the risk of obsolence less than moving to .NET? Will Sun ensure backwards compatability in new API releases? Perhaps Borland has a better record of backward compatability with Delphi ? (I'm sure the Delphi fans out there will tell us).

Personally, I'm from the same school of thought as Joel believing in choosing the correct development environment that is appropriate for the situation rather than a one-size fits all approach. I feel that today's programming language implementations are not yet up to it.

Peter WA Wood, IT Matters
Monday, November 12, 2001

<Your client's decision to use VB is understandable. But did they stop to think about this before investing a six figure sum in a system? Did the client understand the risk of built-in obsolesence?>

Well from their point of view, does it matter? If they don't expect a lot of further development work to take place once a system is deployed(1) and they are happy with it, what do they care about what happens to the development environment?

Code, as someone has said before, doesn't rot. I know places that are running stuff that was written in VB4 and they are perfectly happy with it because it was well designed to meet their needs, and their needs haven't changed. 

The business might have expanded but this was allowed for in the original code design and implementation, so they don't see any need to re-do a perfectly working system in the current language de jour.

(1) Of course they are often wrong about this but we are talking about user/customer *perception*.

Robert Moir
Monday, November 12, 2001

<Well from their point of view, does it matter? If they don't expect a lot of further development work to take place once a system is deployed(1) and they are happy with it, what do they care about what happens to the development environment?>

I fully agree especially if the operational environment is stable or has good backwards compatibility. Microsoft's performance is excellent in this aspect.

Peter WA Wood, IT Matters
Monday, November 12, 2001

I think it's hard to beat a robust and mature development environment like Visual Studio (assuming of course that your target user platform is Windows  - almost a certainty).

In todays complex world it takes years to iron out the bugs in any environment, including building up a library of reliable components and to build the knowledge base of how everything works. Although far from perfect, Win32 together with COM provides developers with the most awesome set of software tools ever made.

Just when everything approaches 100% reliability and infinitely extensible the big boys start hyping up something new. They're not stupid, they want to see a future revenue stream! OK. I admit C# has all the power of C++ and the productivity of VB but do I really need it? COM lets us make multithreaded stuff in C++ and glue it all together with VB or whatever. We've got powerful ActiveX widgets, and a plethora of mostly unexplored interfaces ... what more do we need?!


Let's imagine that all interfaces, IDEs and languages froze today (except for some remaining bug fixing here and there). What are the limits to the software we can  produce with the tools currently available? From my perpective the only limit I see is machine resources and these days I've got plently of those but not enough *human* resources to make use of them.

Chip vendors aren't stupid either, they *need* to slow down software to create future demand for CPU upgrades. Their solution: XML. It's amazing how easily developers have fallen for this hype! Rather than just use it as lingua franca for data exchange, we are being conned into believing we should use it for all manner of things including database storage. This is INSANE!!!

After decades of refining relational database design and database engines, someone comes and says "that's all wrong, data should be hierarchical now" and everyone believes it! From an engineering perpective this defies comprehension (unless you look at cash flow projections for certain companies).

I'm seeing woefully poor XML database performance and people say "that's ok! next year we'll have 3GHz processors!". Yeah, right!!!

I would really love to have the source code to everything, just like in the old days, and love the idea in principle. Maybe I'll try MySQL one day, but chances are something's going to break in the process ...

Whether open or closed, what we need is STABILITY!!!!

Tuesday, November 13, 2001

*  Recent Topics

*  Fog Creek Home