Fog Creek Software
Discussion Board




Components

What do you people think about the market for components?

Do you people prefer to buy COTS components or write on your own? Does availability or inavailability of source code causes any problems? Do you people trust third-party COTS components (excluding the ones provided with your operating system, compiler or a big name)? Do you people trust FREE components?

One last thing. I personally feel that a component MUST be closed-source. The source code just scares me off. If I were to tamper with the source code, why would have I wanted a component in the first place? Shouldn't be a component used as a black-box, entirely a black-box?

Green Pajamas
Thursday, June 03, 2004

I greatly admire how components work in the .NET world.

Green Pajamas
Thursday, June 03, 2004

I don't trust any programmer who actively DESIRES any portion of his system to be a black box.

muppet from electric-chipmunk
Thursday, June 03, 2004

I've been loving components since the Delphi VCL days.  Infact, IIRC I even used TP6 'modules' from friends in the DOS days.

I personally like open-source modules.  Many said modules are provided without support and are unmaintained by the author.  However, if you approach the author friendily they are usually prepared to be incredibly helpful and will provide very personal service :-)  And if they aren't, or the email addy is dead, you at least do actually have the sourcecode.

I also fire off 'thanks for a great component, it was just what I need' emails wherever possible.  Got to keep those open source hobbists ticking and feeling useful.

I also open source my own components.  Typically a component is a reusable piece of code, and doesn't represent key business logic.  If it did, it would be the hub of my wheel not just a spoke.

i like i
Thursday, June 03, 2004

So, it would be better to limit components to implement discrete functionality in your system? Or something for which you would need to learning an entirely new thing?

Green Pajamas
Thursday, June 03, 2004

Hmm, what are 'components'?  Popular notions include 'widgets', 'libraries' (e.g. an XML parser) or 'frameworks' (ok, stretching it).

And then someone terms a collection of components a 'widget library' and my whole list goes to poop

i like i
Thursday, June 03, 2004

Green PJ,
Don't view the source/escrow licenses as "here's the source, edit to your heart's content" . . . view those source licenses, to any black box , not so that you can change it, but so that it helps debug any problem you're having.

Obviously, though, if the company "disappears", it's nice to have the source since you WILL have to change it from now on . . . although, finding the source once the company disappears probably won't be too difficult (angry individuals will likely post it; hehe).

Anon
Thursday, June 03, 2004

The idea of component-based development (CBD) is that we assemble software end-products from reusable components.  Each component is designed to work in a variety of contexts and work in conjunction with a variety of others.

We have always carved our software up into digestible chunks: first so that the recompilation didn’t take all day, and then so that different people could take charge of different parts of the system. In a merely modular system, you know what your module is going to interface to; if there’s any question about the detail of the interface to another module, you can peer over the partition and talk to its designer. But in a component-based system, you don’t know who your component might be talking to: that’s up to the people who use your component in their designs. Therefore we must be very careful about defining component interfaces --- much more careful than we needed to be in more traditional methods of design…

by Alan Cameron Wills (Catalysis)

I guess we are talking about to kinds of developers… component developers who want and need access to source code… and system designers who just want to put the black boxes together … as if it was lego.

Cecilia Loureiro
Thursday, June 03, 2004

> Do you people prefer to buy COTS components or write on your own?

Is the component bug-free?
Do I need to extend its functinality, and if so then can I?
Does it require a per-user run-time license?

> Does availability or inavailability of source code causes any problems?

Perhaps yes, because if it's unavailable then I cannot fix nor extend it.

No, if it's bug-free, and if it's either fully-featured or extensible without source code (e.g. if it includes virtual methods, callbacks, or whatever that I can override).

> Do you people trust third-party COTS components (excluding the ones provided with your operating system, compiler or a big name)?

I've used some big-name ones but no no-name ones.

> Do you people trust FREE components?

With source code?

I have looked at some to understand the algorithm that they're implementing or API that they're using (similar to using a MSDN sample program).

We also once used a Netscape email library, whose bugs we were able to fix because the source code was available.

Christopher Wells
Thursday, June 03, 2004

Given the choice between source and no source for a given component, I'll always take the source.  If I don't want to look at it, I don't have to, but at least it's there if I need answers.  However I'd much rather the component simply expose enough extensibility points that I don't need to deal with changing the source.

I use lots of components in my apps...mostly GUI widgets, like an outlook-style menubar, and algorithm libraries (compression and such).  Why reinvent the wheel?

I tend to use the free stuff, just to avoid the hassle of approval and other business purchase procedures, but I'd have no problems buying something useful.

Joe
Thursday, June 03, 2004

*  Recent Topics

*  Fog Creek Home