Google+ Badge

Tuesday, August 17, 2010

How much 3rd party software should you use?

We program in three main languages: C++, Java and C#. The C++ project uses a number of third party controls and you hear a lot of complaints from that team about them. We get fixes from time to time and have to upgrade. Some items are never fixed and we just have to tell clients "That is just the way it is".

On the Java side we did our best to get 3rd party usage to a minimum. We use one for viewing images, so many formats to deal with it was just easier. We do run into bugs with them from time to time especially with threading issues. We used more controls at one point in time but I pretty much rewrote them from scratch so we have full control over how they paint and interact. I have written the following controls in Java for our product: Spinning hotdogs progress indicator, masked entry field, Checkbox list, font chooser dialog, color picker combobox, date selection combobox, Gradient panel, Link Label, Sizable toolbar (shows >> when buttons don't fit), Status view port (show status message when the table held is empty), Find panel (like those used in browsers), extended combobox with images and indenting support, spinbar, custom property grid with multiple level support.

That is a hodgepodge of stuff you probably would not find in a single collection of controls from another vendor which means you would have multiple JAR files and licences to deal with. Of course that list has grown over time and I have gotten pretty quick at writing controls. I have written them since the Win 3.0 days when it was one per DLL in C. Still they can be a bear to maintain and that is why there are companies out there that specialize in them instead of depending on one guy at their company to do the work in their spare project time. Since the C++ team already has a tool set any time the Java team needs one I just have to whip it up as part of my assigned task.

Now we are working on C# and we have to decide if we write our own or license some libraries. I really want to write our own as we have been bitten so many times in the past by 3rd party glitches but when you talk C# we have two areas: WPF and Silverlight. That could end up being a nightmare. It takes time to write them and it could mean we get a library to start and then write just the ones we use out of the library at a later time. Plus we are new to the language which slows you down even more. To make a lot of quick progress and get to demo stage we will probably have to go 3rd party. I hope it does not burn us too hard.