Review Board and KDE!

Ooh, just saw this excerpt from Aaron:

in other news, Matt Rogers has set up a review board installation which i want to start using to streamline the patch review process in plasma. Matt has set up a group for Kopete already, i’ve noticed, too. if all goes well, we’ll find a permanent home for it and maybe even start getting other kde projects using it =)

Awesome! I can tell you from experience that Review Board is one seriously cool tool. Having been the initiator of the code review process at Rite Aid, I would have loved to have had it as an available option, but was stuck using cvs diff, a2ps, reams of paper each week, and large amounts of coffee. I firmly believe in code and peer review and love the results they bring. But doing it without a good tool-set is PAINFUL, and just wears you down. I’m excited to see our KDE guys using such a cool solution!

This just in: Keychain rocks

Seriously, Keychain, where have you been all my life?

… and friends were made

KDE and Chris DiBona

I had absolutely the most amazing time at this year’s Google Summer of Code Mentor’s Summit. I’m sure I’ll sound like quite the gushing fan-boy, but so be it.

I’ve been involved in the KDE project for the last couple of years. I can thank Adriaan deGroot fully for getting me hooked, and also for being a great mentor and friend throughout. Until this last weekend, I had not actually met any other KDE geek in the flesh. Living in the United States as I do, I’ve met many a GNOME zealot and developer, but nary a KDE kindred spirit. And so, I am still coming down off of the “high” of getting to spend this last weekend with both Thiago and Seb. Yeah, there were a bunch of other Open Source developers there too, and I’ll get to them in a second. But first, this weekend did much to further cement my feelings about the KDE project and our amazing community. We, the KDE geeks, are a really rare and cool thing. Oh sure, we have our share of flame wars, passionate people, and occasional un-professionalism. But at the end of the day, we have an extremely talented group of people who share a common vision, try to treat each other with respect and professionalism, aim to mentor and grow each other and new-comers, and can even have some serious, geeky fun together. I see a lot of Open Source communities (and no, I’m not going to point fingers) who don’t have all this going for them. And after a weekend like this last, I am once again excited about being a part of our community, the KDE team.

To add to the above, it was an absolutely amazing opportunity that I shared with Thiago and Seb to represent KDE at Google’s SOC Mentor’s Summit. It was a surreal experience. I mean, just being at the Googleplex and interacting with the Google staff was wild. Chris DiBona is a real, honest, down to earth, cool guy, and he spent a good hour at least chatting with a group of us about anything and everything that came up. You know… just like a real person. And then there was the opportunity to mingle with, talk to, make friends with, share ideas with, enjoy mass quantities of pizza with (thanks Leslie!!), have some drinks with, pay $44 for a less-than-stellar dinner with, and in general hang out with fellow FOSS developers… many of whom have written software that I’ve been using and enjoying for years! Too cool!!! Kind of like listening to Sting for the last 15 years of your life and then getting to go out to dinner with him and spend a day chatting. =:)

So (noticing that it’s now 1:47 a.m. and I have to be at work in 7 hours), to summarize…

  1. We, the KDE community, have a unique and amazing community. Let’s keep it that way!!
  2. Google’s Summer of Code project was a huge success for an awful lot of FOSS projects. Let’s all (FOSS community-wide, I’m talking) get even more involved next year. Let’s challenge ourselves to bring more students in and get more mentors involved! Check out the pix
  3. Oh yeah… I’m moving to Palo Alto.  You may now congratulate me and then go out and buy a VMware product of your choice (I recommend the free Player product).  =;)  I’m going to have a heck of a time hiding this smile….

What Microsoft Meant Was…

In an effort to catch up reading through the last 2 months of eWeek magazines that I have stacked on my dresser yet never find time to pick up, I read through the May 28 issue this morning and found this very insightful statement by Jason Brooks. The article is called “Free software shines on” and can also be found here

When Microsoft representatives state that everyone must play by the same rules, as they often have during recent months, what the company means is that the business and technological realities under which they’ve built their empire shouldn’t be allowed to change (emphasis mine).

Very true. Very insightful. Nice job as usual, Jason. Of course, I (and all Open Source developers) will strongly disagree with Microsoft on this one. =;) Thomas Jefferson was absolutely right.

“As revolutionary instruments (when nothing but revolution will cure the evils of the State) [secret societies] are necessary and indispensable, and the right to use them is inalienable by the people.” –Thomas Jefferson to William Duane, 1803. FE 8:256

“When patience has begotten false estimates of its motives, when wrongs are pressed because it is believed they will be borne, resistance becomes morality.” –Thomas Jefferson to M. deStael, 1807. ME 11:282

“Rebellion to tyrants is obedience to God.” –Thomas Jefferson: his motto.

Also, welcome back Adriaan! =:)

OS X + NFS+ OpenOffice = SUCK

Repeat after me:

I will never, ever, ever, ever, never, ever, never, never, ever, ever, ever, never, ever, never buy a proprietary (read: non Open Source) computer ever, ever, ever, ever, ever, ever again, no matter how attractive the packaging is.

I don’t know what from the bowels of hell itself possessed me to buy a Powerbook, but it was quite possibly one of the stupidest things I’ve ever done.  It has been nothing but trouble from the day I got it (though it was a nice little mental exercise and challenge for a while in getting Linux to run on it).

I have given up on it for my own personal use. I’m back to using my work laptop for all things at work and home.

But I thought that at least I could let my darling bride use it for her personal stuff. You know… it’s OS X… what could possibly go wrong?

So, 8 hours ago this evening, I started trying to get OS X (freshly upgraded to 10.4.9, don’tcha know) to allow my darling bride to edit OpenOffice files that are stored on an NFS server downstairs. Nope. Cannot do it. Everything comes up read-only. And yes, I did play (for hours) with all possible permutations of setting/unsetting SAL_ENABLE_FILE_LOCKING in soffice. I even tried the new version of NeoOffice (it’s the only one you can download, by the way, which is also teh suck), the new version of OpenOffice, and version 2.0.4 out of desperation. SUCK! I don’t know what the flippin’ problem is, but it’s sucked 8 hours too much out of my life, thank you very much.

Pissed off in general and getting no sleep again…

Love,

Me

BLEH!

Hello, I am an Open Source Developer

Zack Rusin’s blog post from a week ago really resonated deep within me on a couple of points. His post, titled “Disappointing”, was written in response to some negative feedback he got from some mis-guided souls who were commenting on one of his earlier posts about some very impressive Qt graphics results he’d shown. While blog-commenters behaving badly is not something new, certainly, nor is one (very) talented Open Source developer having to set said folks straight, that’s not what caught my eye. I was truly impressed with the benchmarking results that Zack reported with Qt, compared to some of the other toolkits, but that’s not what caught my eye either. What jumped out at me most was his definition of self and purpose, if you’ll forgive the generalization:

I am first and foremost an Open Source developer. Yes, I do prefer to write desktop code in C++ than C which was the basis for me joining KDE in the first place, but that’s all. If I’ll decide to quit Trolltech at some point and will get an offer from company supporting GNOME, I’ll start contributing to GNOME the next day. It’s all Free Software, that’s what’s really important to me. Qt is Free Software, that’s why I work on it. I’m an Open Source developer, I just happen to work on KDE. I moved half way across the globe, to a country where I knew I’m going to be hungry all the time, just to be able to work on Free Software full time so please skip my blog if you want to bring something as ignorant as that here.

Well-spoken, Zack!

Here’s a (lengthy) explanation of my affinity to this paragraph…

Zack speaks with the passion of an Open Source developer–a man who loves what he does, is passionate about it, and who gains meaning and joy from it. I completely share this passion with Zack. I have met plenty of folks who are in the IT industry who sort of landed here with not much thought–many of whom could care less about software (much less Free Software) and would just as soon be working in any other industry. That’s definitely not me. Ever since I first laid eyes on the Apple ][e’s in grade school, I knew that was what I wanted to do.

Fast forward 8 years or so from grade school, and you’ll find me buying the first computer that I could afford–a 486 with Windows 3.11 Workgroup. About a month or so after that, I discovered Linux and bought a Linux Unleashed book which came with Slackware and  kernel 1.2.13, and Windows was promptly forgotten.

I. Was. Hooked.

I started hanging out on the #linux undernet irc channel as Rembrandt and then vanRijn, and made friends with a bunch of like-minded geeks. I learned tons through living in #linux. One of my fellow geeks went by the nick of nyztihke (shortened later to nyz and seen lately as bhughes). He started writing his own window manager for X11. It was not nearly as feature-rich as the prevailing AfterStep back then, but I was intrigued and helped out where I could. Brad called his window manager blackbox and it has become one of the best, fastest, and most-enduring window managers. I joined in somewhere during 1999 and wrote the keyboard handling counterpart to blackbox, called bbkeys. Sometime later, I joined forces with xOr and we whipped together the bbconf blackbox-configurator in an astonishingly quick 2 months. The coolest part of all of this, though, was contributing to and being a part of a really fun Open Source community.

From there, I started using KDE and contributing to the KDE project in the PIM space (mostly kpilot), and still am. And again, the greatest part of doing so lies in the essence of being an Open Source developer–being a part of an Open Source community, being a part of a huge world-wide team, making quality Free Software, and supporting, helping, and providing features for users. If you know anything about me, you’ll likely know that I am passionate about Open Source and Free Software, as is demonstrated by what I spend my time doing, the solutions I bring to the table at my place of work, and the conversations that I constantly find myself in. It drives me nuts to see people (and companies) still paying money through the nose to the likes of Microsoft for the privilege of using software and services that are readily available from the global Open Source world for free. The most interesting area for me personally is the Free Desktop, which is why I’m spending my time there.

So, let me tailor Zack’s paragraph to my own place in life:

I am first and foremost an Open Source developer. It is who I am.  Yes, I do prefer to write desktop code in C++ rather than C which was the basis for me joining KDE in the first place, but that’s all. If I were ever to get an offer from company supporting GNOME, I’ll start contributing to GNOME the next day. It’s all Free Software, that’s what’s really important to me. I’m an Open Source developer, I just happen to work on KDE. I would gladly make some large life adjustments (pending wifely approval, of course) just to be able to work on Free Software full time.

So, please, if you are looking for an Open Source developer who has a history of working with Open Source communities, has corporate experience in providing large, mission-critical applications, has a demonstrated passion and commitment to Open Source solutions, and would like said person to work on Open Source desktop solutions, please, please please feel free to contact me. =;)

That Which Takes My Time

It’s a frustrating thing to not have enough time to do that which you want. Or rather, there are so many things that I do want to do and so many things that I do need to do that there are choices that must be made to be a responsible, loving husband, Daddy, employee, hacker, game-player, and Christian.

My greatest passion as a by-nature-geek is Open Source software. Specifically, the Open Source desktop.
Professionally, Open Source has SO much value to companies that I am constantly finding ways of showing those at work of how the various solutions Open Source provides are the best-fitting tool for the needs we have.

Personally (or “speaking from a not-getting-paid-for-stuff perspective”), I have been involved in several large Open Source projects throughout the last 10 years. And I love it. I am absolutely passionate about the Open Source movement and about the paradigm shift it is causing in the world. And I absolutely LOVE being involved in something that is enormously larger than myself. I love participating and helping and interacting with the various Open Source communities. I love coding on that which interests me–that which I use. I love being able to improve upon and provide missing functionality for that which I personally need and use; and I love being able to provide functionality that others look for as well. I have thoroughly enjoyed working with the KDE PIM project over the last couple of years and hope to continue to do so and find time to help even more than I have thus far.

However (you knew there was one coming, didn’t you), the frustrating reality of life is that there simply is never enough time for everything you need to do and everything you want to do. Choices must be made about what you invest yourself into and for me, those choices while frustrating are currently non-negotiable. I will put my God, my wife, and my children first. As it turns out in this present season of my life, the amount of time-leftovers from those is rather small. And therein lies the frustration. I sincerely want to spend more time working on KDE PIM. I see the project at a pivotal point, especially now, where most of the old guard (those who have built up KDE PIM to be what it is) is in the same place of life as me and have precious little time to fix bugs much less make the radical changes that are expected, needed, and desired. And that, dear reader, is frustrating.

My dream is to find a way to get paid (read: make a living to support my family) to continue to develop the Open Source desktop. I sincerely believe in my heart of hearts that we (KDE, especially) offer something extremely unique, functional, and overwhelmingly valuable to the computer-using world, and that the quiet revolution that we’ve begun has a very real chance of changing the face of computing for the next 10 years, if only we have the resources to see it through.

On this note (and this is something that’s been pressing heavy on my mind for months and months now), I have come across two other strains of the same thought and they both have resonated deeply with me. This, the first, is from Cristian Tibirna’s blog:

I started rather late in my life to work for a gain, at age 23. This was so given the political organization of the place I was then in and thanks to the invaluable care of my parents, who wanted us (me and my sister) to get solid education and be nondisturbed by external difficulties of any kind in the process.

Thus I carried some sort of idealism from my teen age way into my adult life. This makes that, in the last 15 years, there were only rare days in which a good amount of my time was not spent on productive activities having no immediate (or even projected) material output. I still call them productive because I dare think these activities usually made me a better being.

Since 1996, I was continually involved in KDE in varying measures, as such a productive (non moneyable) activity. My most active participation was between 1998 and 2001. I am definitely addicted to KDE. And I of course love to be so. Still, I think I have a problem. And this is related to lack of time through lack of discipline.

I usually work 8 to 10 hours a day on a job almost completely unrelated to KDE. I have a wonderful and understading wife and a marvelous son. I make it the most pleasant of duties to reserve to them at least 3 hours of my usual day. Starting with 1990, I used to sleep 5-6 hours a night, with frequent white nights. My health started to falter so in the last year or so I had to recede to 7 hours a night, the biggest concession I am likely to make. I need about 2 hours a day for eating, caring for my hygiene and other physical status and so on. This leaves me with 2 to 4 hours for “other stuff”, including KDE.

Thus, I think it’s easily understood why I can’t usually get more than one hour freed for KDE any usual day (perhaps a bit more on saturdays). This is after all not so bad. Still, I realized that, with time passing, I “evolved” to a stage where most of this hour is spent in reading. Around 500 emails per day need tending (well, 450 to 470 of them are simply thrown away…). There are about 200 RSS items (and this only in about 10 feeds) of which I carefully read half. The occasional informative/useful web page, documentation site, manual and so on, the well known piling “stuff”.

I try better time organization and harsher discipline (and I was raised by a father member of the military for most of his active life). Yet, I still can count on one hand’s fingers the times in a month when I directly do KDE production (usefully answering email, writing code, mending bug reports).

So, I know the problem: too much “stuff” reading. But I don’t have a solution, since not reading stuff would mean falling off the bleeding edge. I still look for the miracle solution.

And this, the second, is from Scott Wheeler’s blog:

KDE has slipped to the background of late and like many aging (Ok, so I just turned 26, but I got into this stuff when I was 20.) F/OSS hackers I’m left wondering if that’s a real transformation — a shift in priorities — or simply a phase that will be revisited once life settles down a bit. There’s still a desire to come home and code for hours on par with where I was at when I went through the last big transition — my move to Germany four years ago. But of late there’s, well, life going on.

I particularly appreciate the time-breakdown that Cristian goes through, and I echo his search for a miracle solution.  And I too identify with Scott’s ponderings as to whether or not this phase can be rejoined once life settles down a bit.

Well, here’s to you both, Scott and Cristian–and here’s to hoping that we can all find the time to continue doing that which provides us meaning and joy and purpose.  =:)

DANGIT it feels good to code!

FINALLY took a couple of hours late, late, late tonight and looked at the pesky little kpilot bug which caused a nasty little SIGSEGV with the vcal-conduitbase::slotProcess code during a “copy handheld to PC” sync. Turns out there was a single missing set for the fNextState in the case of ConduitAction::SyncMode::eCopyHHToPC, which as luck would have it, is exactly what I was trying to do.

So, yay me on fixing that annoying buglet which was niggling at the back of my brain for the last couple of months.

Secondarily, one of: gdb, PowerPC Linux, AAP sucks donkey elbows with regards to trying to debug this problem I was having. I could not for the life of me attach gdb to kpilot’s pid and get it to give me a decent backtrace, nor could I get it to set a breakpoint inside the source code for kpilot’s conduit libraries!@#$@#$%!!!!! I swear this used to be possible!

Tertiarily (?), both Eclipse 3.2/CDT and Kdevelop crash ENTIRELY too often for me, making them both just about darned un-useful. Had to revert to using vi and std::cout to track down this buglet!! And I was SO hopeful that CDT would finally give me a good IDE for C++, but either I’m doing something stupid or it’s still not able to resolve declarations and definitions on a consistent, useful basis.

So, in summation:

  • Darnit, it feels REALLY good to get a chance to code on KDE again!
  • Darnit, it was frustrating to have Eclipse/CDT and Kdevelop crash so stinking much on me
  • Darnit, it’s late!

Good night, Gracie.

LDAP, Microsoft Exchange, and KAddressBook or Thunderbird

My current employer uses Exhange 2003 as its current groupware solution. I have on-and-off-again been beating my head against the proverbial concrete wall in trying to get it to work nicely with LDAP and addressbooks other than Evolution or Outlook, for obvious reasons. Today, my geeky noggin’ has broken through the proverbial concrete wall and I now have both KDE’s kaddressbook and Thunderbird’s address book successfully using the Exchange server here at work.

Yay, me!

Two things I’ve found this morning that have helped my noggin’ and I’ll list them here for future reference for myself as well as in hopes of helping some other poor concrete/geek/proverbial/noggin’-banging soul.

First, I’ve found this post which lists a very helpful step-by-step approach for getting things almost working:

OK, here is how Mozilla/Thunderbird LDAP works with Exchange 2000-2003:

1. The default LDAP port for Active Directory is 3268 (not 389) so make sure you’ve got this port open thru the firewall, and make sure to configure it in your LDAP account settings in Mozilla/Thunderbird.

2. For Base DN, you MUST enter something like dc=yourdomain,dc=com (whereas Outlook Express lets you get away with putting NULL).

3. For Bind DN, you must enter a domain user which has permission to search the directory. You should enter it qualified by the NetBIOS domain name, for example: mydomain\username

4. For some reason, Thunderbird doesn’t always seem to recognize that it needs to log on before querying. The easiest, most reliable way I have found to force it is to go to the Offline tab in the Directory Server Properties and click the Download button. This function seems to “see” that Active Directory wants a logon, so Thunderbird will display the logon dialog to let you enter your domain credentials. For the username, specify exactly the same thing you put into Bind DN.

5. Results are returned asynchronously to the Thunderbird Address Book, so you might see “No matches found” immediately after clicking the Search button. Wait a few seconds, and your results should show up.

6. Mozilla and Thunderbird default to a Search Filter of (objectclass=*) which will return lots of useless (non-email address) entries from Active Directory. You can override this with something like (objectclass=person) on the Advanced tab of Directory Service Properties. Depending on what kinds of addresses are in your Active Directory, you may need to refine this filter more (for example, if you’ve got mail-enabled Public Folders which you want to display).

7. The Address Book UI in Thunderbird is just clumsy. You CANNOT search an LDAP directory by simply selecting it on the left hand side and then entering your search in the “Name or Email contains” textbox. You MUST click the Advanced button to define an LDAP search. After you find your desired address(es) in LDAP, you “should” be able to copy it to your local addresses but the stupid UI only lets you look at the Properties or add it to the recipient list for a new message (by clicking the Write button).

And then there’s this page that helped me finally get it all working:

You can add a new address book with the following properties:

General tab:

Name: …
Hostname:
Base DN: dc=company,dc=com
Port number: 389 (non-secure) or 636 (secure)
Bind DN: YOURWINDOWSLOGONDOMAIN\yourwindowslogonuser

Advanced tab:

Don’t return more than [ 100 ] results
Scope: Subtree
Search filter: (objectClass=person)

If your organisation is large you may have to change the Bind DN so it only returns your unit (e.g. ou=yourdept,dc=company,dc=com) as otherwise Thunderbird may decide to act a bit strange.

You can force a read by clicking the Download Now button on Offline tab, although you won’t see any contacts afterwards, you have to search in the Compose window.

If you still get no joy you can download and install Windows Server 2003 Service Pack 1 Support Tools and run ldp.exe against the exchange server. You don’t even need to install it if you decompress with WinRAR (or possibly WinZip) and look for the executable.

http://support.microsoft.com/kb/892777

That way you can find out the Bind DN and search filter. First use Connection > Connect against the server, then Connection > Bind with your user and password then use View > Tree with a blank string and you can find a tree view of your Base DN and go into departments and retrieve user data to find out their objectClass if it’s not person.

Finally in Tools > Options > Composition > Addressing tick Automatically add outgoing e-mail address to my [ Collected Addresses ] as it’s much faster than searching the server.

Granted, these are instructional in getting Thunderbird to work with Exchange, but the same applies to KDE’s kaddressbook.

In general, I think the sticky wicket that really got things working for me was using Microsoft’s ldp.exe tool to browse the Exchange LDAP tree and see its innards. Specifically, I had to do this:

server: [active directory server]
base dn: CN=Users,DC=XXX,DC=XXX,DC=com (important to start with Users for me!!)
port: 389
bind dn: [windows domain]\[username]
search filter: (objectclass=*)
scope: subtree

The trick was, I think, that I had to provide a more specific base dn to the address books.

Hope this helps someone else out there, wherever your geeky proverbial concrete-bashing noggin’ may find you. =:)

Converting a CVS Repository to Subversion

I had thought that this would be a straight-forward mission, but it was not. While the front-end tools look and feel very much the same between CVS and Subversion, the back ends are VERY different. Honestly, I much-prefer the CVS approach (all flat-files, predictably placed in $CVSROOT), but since that’s probably part of the problem of CVS’s lack of flexibility with file/directory moves, etc., it’s understandable that Subversion does it differently.

Anyway, in using cvs2svn to convert my existing CVS repositories, I faced a problem that was covered in cvs2svn’s FAQ: (more…)