Monday, April 30, 2007

Parallel or Serial...

Steve Trefethen has been posting some great information about our use of the Subversion source code control system and Cruisecontrol.NET.  One thing that I've noticed is that over the years version control systems are becoming more and more sophisticated and have finally begun to realized that version control is not just about files.  It is also about configurations.  They're also starting to realize that files are islands unto themselves.  How many larger projects have you worked on where adding a feature, fixing a defect, or refactoring operation affected only one file?  Project changes come in the form of “change-sets” or a group of interrelated files and configurations.

Prior to coming to work for CodeGear (and Borland), I was using a stand-alone version of PVCS and was manually doing check-ins and check-outs on a per-file basis.  So I already knew the value of version control systems, even ancient and early systems like PVCS and it's predecessor, RCS.  One of my first tasks on the day I arrived at work, was to “check out” the development tree from the PVCS archives.  What was different was that there were a whole suite of internally developed tools and wrappers around the PVCS command-line with other command-line tools.  These tools allowed “scripting” of the check-in process whereby the developer would fill in a “script” text file that contained the references to all the files to be checked in along with a space for a comment associated with each one.  There was also a global section for adding a summary comment that was a suppose to describe in higher-level terms what was included in this check-in.  This information was appended to a running log file that was used by QA to assist them in figuring out what R&D was actually checking in.

The one key point to all of this was that we never employed any kind of locking model that seemed to be so prevalent among the vast majority of version control systems, including PVCS.  So I learned the modify-at-will and merge-when-needed mode of working with the source trees.  I remember getting into philosophical discussions with folks regarding the overall merits of the lock-modify-checkin modal compared to the modify-at-will model.  I came to refer to these models as the Serial and Parallel models, respectively.  Over the years, there was a lot of effort put into layering tools over the existing version control systems in an attempt to “fix“ many of their drawbacks.  When working in a parallel model, nobody is ever blocked from making changes, but that does require a little bit more from the tools.  The issue of an atomic checkin becomes way more important since the archives can be changed by one person while another is in the midst of a bulk checkout.  The chances of getting a partial check-in has greatly increased.  Some folks tend to use these “drawbacks“ as a reason for staying in the stone ages of lock-modify-checkin.  However, with the proper discipline, toolsets, and overall mindset, the parallel model is very liberating for a team.

It seems that after many years of debate, the parallel model is beginning to hit more mainstream.  It kind of started with the introduction of CVS.  However, CVS suffered from one major problem; the lack of an atomic check-in model.  It also suffered from not being able to handle binary files in a very efficient manner.  Subversion was introduced to solve these (and other) issues.  In fact, Subversion's main charter was to supplant CVS as the dominant open source (or otherwise), version control system.  I must say that after using Subversion on the Developer Studio team for a little over a year, they have a real shot at retiring CVS.

So, how does your team work?  Serial or Parallel and why?  I do understand some of the virtues of the lock-modify-checkin model.  But as your team grows and/or becomes more geographically disperse, you may begin to notice that team members are forcefully breaking locks in order to get their stuff checked in.  One bit of advise I can give you and your team should you ever move to a parallel model is to get yourself a very good source code differencing/merge tool such as Beyond Compare or Araxis Merge.  Make sure *all* your .dfm files are checked in as text (this allows easy diff'ing and merging of changes).

So, there's your assignment.  Let me know how your team works, what version control system you use and why?  One's choice of VCS systems can sometimes elicit nearly the same passionate responses as one's choice of development tool.  I'm looking for objective analysis and an understanding of why you came to that descision.  Things like, “I use XXX because everything else sucks!” are simply not helpful. 

I'll start with why we chose Subversion.  It closely matched our overall development process, had true atomic check-ins, extensive and growing number of supporting tools, it also handled renames, moves, and deletes very well.  Every check-in is represented by a single revision number which can be used to check-out the entire source-code tree by using only one number.  No need to use error-prone dates or create a tag/label for every checkin.  It was also a natural fit for our extensive use of CruiseControl.NET continous integration server.

Friday, April 20, 2007

C++Builder field test now open...

Do you want to help test the next version of C++Builder?  If so, we need your feedback.  Go here to apply to be a C++Builder field-tester.

E-Staff dinner and oh the thoughts we think...

Evening dinners with colleagues and friends is always a great opportunity to just get to know each other and to more informally discuss some of the issues and concerns of the day.  Last night was such a dinner.  What made this dinner more special what that CodeGear advisor and former CEO, Ben Smith was present.  It is always great to hear his stories about different goings on in various sectors of Silicon Valley.  The best conversation was in the parking lot after the dinner where Ben, Michael and myself stood in the mild drizzle for nearly 30 minutes discussing things like Borland moving their HQ to Austin, blogging, team focus, and some various radical thoughts about Delphi and it's market.

Throughout the various conversations, I was reminded of how much we all think about the CodeGear business from such varying perspectives and insights.  It is always great to bounce ideas off other members of the team because they always put a new spin or insight on that thought.  Which is another point of this post.  What kinds of things do we think about all the time?  In no particular order or even priority; Win32/64, Aspects, Generics, Dynamic languages, PHP, Ruby, Python, Perl, Rails, ASP.NET, .NET, Vista, MacOS, Linux, WinMobile, GC in Win32, Multi-Core, DirectX, XML, XAML... I think I could continue for several more paragraphs with just listing all the things that I and the rest of the team thinks about.  The number of technologies in the developer tools space is staggering, just as the number of developers out there continues to significantly grow, especially in various emerging markets such as Russia, India and China.

As CodeGear continues to charge ahead, you will start to see some actions taken surrounding some of the above items and even some I didn't.  I got various comments to my post about Borland moving its HQ to Austin saying that CodeGear can finally bring back the “old Borland.”  I agree that it would be nice since there is a lot of excellent things about those times.  However, what we are doing is have CodeGear define its own identity and culture.  Sure, we'll take a lot from the “glory days” of Borland,  but the developer and technology landscape has changed, so we also need to change.  I think we've got a good start and are continuing to refine and define things.

Oh, what were those radical thoughts about Delphi?  It's way too early to say.  I'll just say that we have radical and crazy thoughts all the time and some of them we actually take action on.  Delphi 2007 was one such thought only 5 months ago.

Tuesday, April 17, 2007

The parents moved to Florida and left the house for the kids...

Well not really Florida, but Texas... and the parents have been out of this house for a while here in Scotts Valley... but I think the analogy is apropos.  What am I talking about?  In case you've not heard, Borland has decided to relocate their headquarters from Cupertino to Austin, Texas.  First of all, WE HAVE ABSOLUTELY NO PLANS TO RELOCATE CodeGear FROM SCOTTS VALLEY, CALIFORNIA.  Did you get that?  I hope that was as crystal clear as I could make it.  I know the conspiracy theorists will completely ignore that statement, but I just had to say it anyway.

One thing this change clearly highlights is the difference in priorities and directions that CodeGear is heading compared to Borland.  I had an informal meeting with Tod Nielsen last friday over a beer and we discussed the implications of this announcement.  At first I'd asked to meet with Tod since it had been over a year since our last one-on-one meeting and with all the changes over the last year, I wanted to just have a chance to clarify some things.  I figured what is better than shooting for the top.  We talked about the leadership change with bringing Jim Douglas in, about the product strategies and directions, how the development teams were doing and the impact of the Delphi 2007 release.

I had the whole weekend to think about the impact that this move will have on CodeGear.  Basically, it has little to no impact.  Nobody that works directly for CodeGear is impacted (ie. they're not moving to Austin).  We were already in different locations and, since the formation of CodeGear, have had no need to even visit the Cupertino facility.  When we did need to interact with the Borland folks, it was done via email or tele-conference.  There are still some shared services still in place, but we're on track to having those separated prior to the completion of the Austin move.  So, all-in-all, we're good.

With that out of the way, another point I'd like to mention is that I was pleased to hear Tod continue to express that he still believes in the CodeGear strategy and that creating this separation was the best move for the dev tools.  So CodeGear is looking after the parent's house here in Scotts Valley.

Tuesday, April 10, 2007

The APAC trip, the new CEO; a recap.

This always seems to happen;  I go out of town for a while and major things happen at Borland and now CodeGear.  First of all, let me recap my trip to the Asia/Pacific region.  I started by heading down to Sydney, Australia.  I flew out on Sunday, March 25th and arrived early in the morning on Tuesday, March 27th.  (It was a 14 hour flight... so what happened to my Monday ;-).  I spent the next day getting acquainted with the folks in the Sydney Borland/CodeGear office.

Picture 194

I met up with Malcolm Groves, who works out of that office. We then flew to Melbourne on March 28th and met up with Tim Jarvis.  I spoke at the ADUG Symposium the following morning.

Picture 096Picture 097Picture 098

After that, Malcolm and I caught a plane to Brisbane and did the same thing the following day.  You can see Marco Cantu at the far right in the first photo.  He had two sessions each day.

Picture 103Picture 104

Then it was back to Sydney where I had that Saturday, March 31st to explore Sydney.  So I took the ferry across Sydney Harbor from Circular Quay out to Manley.  I got some good shots of the city, the famous Harbor Bridge (including some good shots of several groups of bridge climbing tour groups) and the famous Sydney Opera House.

Picture 147Picture 109Picture 133Picture 077

Early the next morning I boarded a flight heading out to Tokyo, Japan.  Geez, there are Starbucks Coffee shops everywhere!

Picture 018Picture 014Picture 017

I also visited the Borland/CodeGear offices there in the Shinjuku district where I was staying.  Fujii-san and Yaegashi-san were both excellent hosts. They had lined up an interview with a local Delphi magazine, a customer visit and later that evening we had a very good dinner meeting with some Delphi community members.  I found it very interesting to speak through an interpreter.  You have to be very conscious of how much you've already said so that the interpreter doesn't get lost.

Picture 005Picture 003

Once finished there in Japan, Malcolm and I then boarded a plane to Bangalore, India. We had to stop in Bangkok, Thailand to change planes so I got some photos of their new airport.

Picture 022

From there we landed in Bangalore, India.  That's a different world...  This is a photo from the hotel room, which was very new and modern.  The contrast between the two was remarkable.

Picture 002Picture 025

Then there was the traffic!

Picture 011Picture 014

Like Japan, I had a very full day with a customer meeting, met with members of the India Delphi Users Group (InDUG), and finally had two interviews with a couple of Indian IT magazines.  Arul, from the Indian office, did an excellent job of getting all of these events lined up.

Picture 009

A new CEO.

I had my first one-on-one meeting with CodeGear's new CEO, Jim Douglas (who is in the process of setting up a blog for himself, which is excellent news!).  Besides the fact that I'd been out of town when he started, it was actually good that I had my meeting with him just yesterday.  I was able to read all the press and various comments from the community.  I was able to ask some very hard and specific questions, like “what is your agenda?  Why did you take this job?  What are your long-term and short-term goals?  Are you in it for the long-term or is this just a stepping stone to something else?”  The good thing is that he didn't flinch at any of these very pointed questions and was very candid.  The good news is that he definately took this position with an eye for ensuring the long-term viability of CodeGear.  There is no “pump and dump” agenda here.  So far, I was duly impressed and appreciated his candor as well.  It will be good to hear what Jim has to say in his blog.

I was actually very disappointed when I got word that Ben was leaving.  However, after speaking with Ben the Friday before the announcement and thought about what had transpired over the last year, it was clear that CodeGear was entering a new phase of it's development.  Ben was key in setting CodeGear up and making sure the key positions are filled with the right folks.  But now we need a more of an operational leader that can help drive things that standpoint.  The good news is that Ben is still local and has offered to remain available in an advisory capacity.  His experience and insights will continue to be welcome.

Now that I've got my first international tour done, I'm eager to start visiting some of the other regions and meet even more folks from the community.  Hopefully my next trip takes me to the EMEA and/or South American regions.

Tuesday, April 3, 2007

Now in Bangalore, India

I'll have to post some short video clips of my ride from lunch after meeting with a large Delphi shop.  The turn signal is so passe' while the horn is the main signaling device.  It's a good thing that traffic moves at a reasonably slow pace because with all that is going on, I can't imagine navigating the streets at anything more than 30mph...

I had a good meeting with some of the InDUG (India Delphi User's Group) folks.  Then a meeting with that large Delphi shop, as mentioned above.  Finally, I'll be finishing up the day with a couple of local press interviews.