I was not particularly in the state to blog after last nights cocktail dinner, so I didn’t try. Anyways, let me quickly run down the highlights of the sessions of the first day.
After the keynote by Arnold Van Der Weide, which was more of a scolding, Dave Lorenzo, the Development Director of the ITC took the stage. He presented the Development Roadmap for IntelliCAD 7. Much of Dave’s presentation was spent on the quality and performance. He quite frankly admitted, “Quality is an continuing problem with IntelliCAD“. This was mainly due to the highly disorganized state of it’s source code. He explained how it was not uncommon to find 5000 line functions the current source code. As a programmer I know that a 5000 line function is just bad programming. If you go to change something at the start of the function you are bound to break one or more things downstream. And that, admits Dave, was exactly what has been happenning over these years.
This time around, they have completely rewritten IntelliCAD keeping the tried and tested DRX SDK from the ODA as the foundation. I have programmed with the ODA’s DRX SDK and Autodesk’s Object ARX SDK, the foundation for AutoCAD. I can tell you that they are almost the same. In fact, the ODA has done an excellent job of cloning the ObjectARX SDK, and in some places improved it. For example, the DRX SDK uses smart pointers which virtually remove the responsibility of memory allocation and deallocation from the programmer, which is the main source of crashes and instability. The ObjectARX does not support smart pointers as much as the DRX SDK does. So in my opinion it is quite safe the assume that once done, IntelliCAD 7 will be far stable and faster than it’s predecessor.
Dave explained how they have built a full blown system to test as they develop. “We have more bugs that developers to fix“, he explained, “Thats why we first developed a full fledged automatated testing system.” To give you an example of what he was talking about, let me explain the Visual Comparison test. This is a system where in they have a set of scripts that automatically load DWG files into IntelliCAD, takes screenshots and saves the file. The files are then reopened and snapshots are taken. This is done all day, every day for hundreds of thousands of DWG files that they have in their database. These two screenshots are then automatically compared by software and differences are reported. This way ITC members can submit problem DWG files to ITC’s QA department and they then run these tests for each and every build of IntelliCAD. Modifying code to fix one bug can sometimes break something else. This system is designed to trap and report exactly such occurrences.
Besides the Visual Comparison test, they have a DXF Roundtrip test as well. This involves verifying the data at the level of bits and bytes. For example, the arc sweep angle for circle is 2 x PI. But 2 x PI is the same as Zero. So an arc with a sweep angle of Zero and 2 xPI will look the same and pass the Visual Comparison test. But this test will catch and report the problem. “Quality is an issue for us“, admits Dave and it seems that the ITC is doing everything it can to take care of this nagging problem. However he asserts, “We are not going to release IntelliCAD 7 till it is ready“. And by “ready” I guess he means “stable”. Sounds like a good decision.
Speaking further about the old source code Dave said, “The IntelliCAD 6.x architecture is killing us“, and added that the decision to build IntelliCAD 7 over the stable DRX platform was the wise thing to do. I completely agree. I can feel his pain because I know the difference in developing old style IntelliCAD plug-ins using SDS (equivalent of AutoCAD’s ADS) as opposed to developing DRX plug-ins. DRX is like a breath of fresh air.
Dave is also of the opinion that IntelliCAD needs to do something more than AutoCAD. “We are reactive by nature“, he admitted frankly. “We need to be proactive“. I could not agree more.
Next up was Mark Barrow, Dev Lead of the ITC. He gave an update of the current status of IntelliCAD 7 and a demo as well. “Overall stability is still poor but is improving quickly“, he explained. He sang the same tune as Dave, “The IntelliCAD 6 code was a nightmare to maintain“.
Mark went on to explain the IRX SDK of IntelliCAD. Basically, IntelliCAD 7 is built over the ODA’s DRX SDK which is a clone of Autodesk’s ObjectARX SDK. However the DRX SDK is meant to be used as the internal engine of a CAD application and leaves the developers to code the application specific functionalities separately, stuff like object selection, which can differ from application to application. So the ITC has developed another SDK to sit on top of DRX called IRX. This will allow plug-in developers to use IntelliCAD’s internal features that are not covered by the DRX SDK. Mark stressed on the need to tackle the performance problem. He mentioned that they have two developers working full time on nothing but performance related issues.
An ITC member asked whether the ODA or ITC would be developing a source compatible version of the DRX/IRX SDK so that they can simply rebuild their existing ObjectARX code to get an IntelliCAD plug-in. Mark replied in the negative and stated “legal reasons” as the rationale behind the decision. Later in the day I asked Arnold Van Der Weide, the President of the ODA, whether the ODA would be modifying their DRX SDK to make it source compatible with Autodesk’s ObjectARX SDK. He replied in the negative and cited the same reasons. “I prefer to spend the ODA’s money to pay programmers than lawyers“, Arnold told me.
After lunch, Dave Lorenzo had a two hour session on the details of IntelliCAD 7. Most of his presentation was spent in explaining the QA system that they had developed to tackle the stability and performance issues that have been tormenting IntelliCAD. I will not go into the details as they are highly technical.
In the question-answer session that followed I asked whether the ITC had plans to lay out guildelines for their members to follow so that third party plug-in developers like myself do not have to create different versions of plug-in DLLs for each flavor of IntelliCAD. At SYCODE, this is a nightmare. Since each ITC member gets the source code, they go ahead and add all sorts of features and in the bargain break binary compatibility with plug-ins developed for the “official” version of IntelliCAD supplied by the ITC to it’s members. Dave said that they “would look into it”. I certainly hope they do. It’s about time the ITC reigns in its members. I believe a key factor to IntelliCAD’s success is its adoption by third party developers to extend it’s capabilities by means of plug-ins. If the ITC lets it’s members run wild and allows them to create flavors of IntelliCAD that do not respect third party plug-ins, third party developers are not going to show the respect either.
Next up was Neil Peterson, the CTO of the ODA and he showcased the existing as well as the new and upcoming components being developed by the ODA. I will leave that for another post.
Today’s sessions include some training sessions on porting applications to DRX and a couple of sessions by ITC members. Shall keep you posted.