Getting Excited about KDE4 All Over Again

http://kde.org/img/kde40.png

It started to hit me yesterday as I spent 3.5 hours in this year’s KDE Google Summer of Code mentor’s meeting (thanks again sebr!!). KDE4 just plain rocks, and it feels good to start getting excited about it again. And I don’t just mean KDE 4.0. Don’t get me wrong, KDE4.0 is a nice little release. It’s not perfect and there are some things that are irritating about it and keep me from using it as my main DE. But like Aaron has been saying over and over and over again, KDE4.0 is not KDE4. KDE4.0 is more of a preview of things to come, and what I see coming just plain kicks butt.

I am finally getting excited about our PIM space again, and that feels really, really good. KMail, KOrganizer, KPilot, and the rest of our PIM suite was what drew me to KDE in the 3.x series. (Well, that and quite honestly I find the intentional dumbing-down and lack of configurability of the other large, free DE irritating to the point of exhaustion.) But lately our PIM apps have suffered from lack of care and have started to look seriously unsexy compared with Thunderbird, Sunbird, and even *gasp* Evolution. But KDE4 gives us a chance to remedy that, in my mind, and looking at this year’s Summer of Code projects, I’m hoping we get some really nice improvements done. There’s a few really sweet ones that I’d love to see get accomplished: the Google Contacts/Calendar integration into Akonadi and thusly KDE PIM, the enhanced KMail view, and (nearest and dearest to my heart) getting KPilot fully functional, and rock solid for KDE4.

And going through the SOC-sorting meeting made me realize all over again how fantastic a community it is that we have in KDE. There’s a lot of respect and comaradarie and friendliness that I just don’t see in some other communities. Not to mention the quality of talented people that we have. PIM might have drawn me to KDE, but it’s the people and our awesome community that we have that has kept me. =:)

Anyway, I just had to say that it feels really, really good to be excited about KDE4 again. In my mind, it’s a really unique opportunity to do something fresh and new and fun and exciting again. It’s a chance to learn from past mistakes and do better. It’s a chance to take the fantastic functionality that we have and rethink how our users can best interact with it. It’s a chance to not be bound to the past and to not have to be stuck with the same old presentation layer we have just because we don’t want to make drastic changes to our applications.

As the pretty graphic says, KDE4 is truly a chance to be free. =:)

KPilot Hackery of Sorts (or How To Sync Your Work’s Exchange Calendar To Your Palm, Part III)

It felt darned good to hack on KPilot just a wee bit today! Actually, it was less hacking on KPilot directly and more on some utility code that I’ve written that allows me to sync my work Exchange calendar into my personal calendar and subsequently to my Palm. I’ve blogged previously about this, but since my last post, I’ve switched employers (YAY!!!) and I now have to deal with Exchange 2007 OWA, with Forms-Based Authentication (FBA). FBA has managed to break the nifty little Ruby Exchange (RExchange) code that I’d been using, since RExchange doesn’t do FBA. So, I’ve gone back to Graham Cobb’s tremendously useful little OWASync package which has been updated to handle Exchange 2007’s schema and FBA, WOOT!

So, anyway, if you, like me, need to sync your Exchange calendar to your Palm, and you don’t want to have to keep your personal Calendar also in Exchange just for the privilege of being able to sync both work and personal calendars to your Palm, you might find some of this useful. The right answer for this, of course, is to get KDE PIM to be able to speak to Exchange, show it in kontact, allow 2-way manipulation of your Exchange calendar, and then get KPilot to know how to merge multiple calendars into 1 view and 2-way sync them. But that’s a whole lotta work. =:)

I’m actually thinking that it might be a long-term idea to have KPilot be able to sync to multiple calendars on its own. But, again, that’s a whole lotta work.

And what’s more… while it might not be the prettiest solution, what I have now works and does what I need it to:

  1. Retrieve my calendar out of Exchange
  2. Display my calendar in Kontact (or Sunbird–I just checked and it works fine too!) so I don’t have to deal with OWA for checking my calendar
  3. Have my work calendar remind me of appointments via my Linux desktop
  4. Sync my Exchange work calendar with my Treo

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!

Memorable Moments/Randomeness From Day One

We Meet At Last!101_4493New shoes!My new Corto Maltese Swatch watch!

Woohoo!

Day one from the KDE Launch Event at Mountain View, CA, and I’m tired, stoked, tired, excited, and… tired. Memorable spots include:

  • Waking up at 3:00 a.m., EST, flying all day, getting stuck in Silicon Valley traffic for 2 hours, etc.
  • Visiting a beautiful, big mall in Santa Clara. My eldest would LOVE this!
  • Walking into an actual Swatch store and buying a new, nifty, unique watch. (I used to wear no watch unless it was a Swatch but haven’t had one in a few years. Love them!)
  • Finding the new version of my old Nike Prestos and buying a pair!
  • Finally getting to meet and talk to Adriaan, after having worked with him for 4+ years.
  • Drinking a sip (a really wee sip) of Adriaan’s scotch (I think).
  • Eating peanut butter cookies that Adriaan made for us all, and drinking milk with my fellow KDE brethren, late into the night.
  • Getting my KDE business cards (2 boxes, mind you!!) (thanks again, Thiago!!!) =:)

Looking forward to more fun at Days 2 and 3 at the KDE4 Launch Event.

Special thanks to Jerry Gartner for the pics, since I sucked too much to actually take any thus far. =:/

KDE NetworkManager workaround

In case anyone else hits this…. In one of the more recent releases of our beloved KDE, code was added to more smoothly integrate with networking. Namely, the attempt is now made to be aware of NetworkManager-initiated network connections, as well as know when NetworkManager doesn’t think it’s connected so as to not keep trying network activities when there might not be a network connection. Excellent idea, honestly.

However (you knew there was one), I have a love/hate relationship with NetworkManager and knetworkmanager. When they work, they work great. When they don’t it’s supremely irritating. Case in point: I’m at a friend’s house. He’s using standard WEP and a non-broadcasted ESSID. I tried all manners of asking NetworkManager nicely for a good 10 minutes to join the network to no avail. In the next 30 seconds, I manually iwconfig’d, ifconfig’d, and dhclient’d my way onto the network and things are working swimmingly. Almost. You see, with the changes we made (see paragraph #1), now KMail and Konqueror, etc., think that I don’t have a network connection because NetworkManager told them I don’t. However, I’ve discovered that I can coax KMail, Konqi, and friends to try using the network connection that I really do have (honestly!) but NetworkManager couldn’t provide for me by doing this on the CLI:

dcop kded networkstatus setNetworkStatus NMNetwork 0

It’s hack, but it seems to do the trick for the time being. I’ll hunt Will down later and ask him how to do this properly…

[UPDATE:]  I caught Will and here’s the real skinny:

Either extend your manual connection script to register a fake network with kded that is online, or shoot the networkstatus system down by disabling it in kcmshell kcmkded.  You can also unregister NMNetwork; the system should be fail-safe.  Or not run knetworkmanager.  The system figures the best connection status, so you can also register your own network.  0 is ‘no information’, 6 is offline, 8 is online in the status enums.

Will rocks, btw.  =;)

… 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….

Got (KDE) Shirts? (part deux)

So, I received my custom-made KDE and KPilot shirts from spreadshirts.com yesterday, and am very, very impressed. 5 days to get the shirts printed and shipped is pretty darned impressive. Nice job, spreadshirt!!! The shirts seem to be well-made and of good quality. I’m just hoping that the logos and printing doesn’t start coming off for at least another 5 years… =;)

Custom-made Spreadshirts Custom-made Spreadshirts
And yeah, my witticisms are perhaps not the greatest, but I was a bit thin on pop culture references at the time, and Adriaan was asleep. So bite me.

But I can say that if you’re in the .us, and you’re looking for some nice KDE swag to wear out on your next hot geeky night on the town and can’t find any, you might just want to take a look at spreadshirt.com. If you can’t find something you like, you can use their custom designer to create it yourself.

Now… back to getting KPilot release-ready….

Got (KDE) Shirts?

So, after searching for some cool KDE swag online and finding none (found some shirts and stickers of dubious quality at cafepress.com, but has anyone actually ordered anything from them and had good or bad experiences to share??), I found spreadshirt.com and tried their T-shirt designer thingey. After thoroughly enjoying watching their Flash-based designer crash Firefox about 10 times in a row (definition of insanity: doing the same thing over and over again, expecting different results), I admitted defeat and switched to my darling bride’s Powerbook and Safari. Long story short, I custom-made 2 shirts (black, of course, is there any other shirt color?) and am now waiting eagerly for them to arrive.

If anyone has any thoughts on better places to get KDE shirts and stickers, I’d LOVE to hear them (comment please!).

tshirt-kde4-yeahbaybeetshirt-kpilot

Wrapping up the Summer of Code

I wrote this for this last week’s commit digest and didn’t want to steal Danny’s thunder, but here’s my thoughts on this year’s SOC KPilot project…

The KPilot summer of code project is winding down to a close, with this Monday being the “pencil’s down” date. Bertjan Broeksema has done an outstanding job and has accomplished all that we said we wanted to on our Summer of Code proposal. The problem that we faced in KPilot was that each of our conduits did a lot of things in common, but all of them had their own code for doing these things. This has made maintenance a much harder job than it should be, and has led to some conduits being less feature-complete than they should be–not to mention having too many bugs from the duplicate code. So the idea was that each of our record-based conduits should be doing the same sorts of things as far as algorithm, process, and flow, and that we should pull as much of this common code out of the conduits and into some base classes as possible. This leaves our conduits to be responsible mainly for data transformation (turning a PC calendar vcal record into something that can be synchronized with a Palm database record), and should address the problems listed above.

But while we were at it (and while we were taking the time to think through and design how KPilot should work), we also put as much effort into making it as hard as possible for our conduits to destroy our user’s data. It’s something that needs to be carefully included in the design process, since it simply doesn’t happen by accident (not destroying data during edge cases, etc.). So we made some intentional design decisions that should hopefully result in fewer “KPilot ate my future” e-mails.

We officially had 3 main goals for our Summer of Code project:

Classdiagram1. Sequence Diagrams and Class Diagrams

We used a loose interpretation of the Rational Unified Process for our project this year. We spent 5 weeks at the beginning of the project, creating the Use Case for our upcoming work, and then laying down some Class and Sequence diagrams which showed how all of the requirements and flows from our Use Case would be realized. We used BOUML for our UML diagrams (I’d have rather used Umbrello, but Bertjan had some difficulties in getting it working on his Gentoo box). All in all, though, I believe we found a good balance between spending enough time to make sure we had a well-thought-out design and having enough time to implement it all.

2. Implementation of the abstract record framework

Since our Use Case focused almost entirely on the functionality required for all of our conduits, Bertjan was able to fairly quickly write the code for the base conduit classes. We found very few design challenges and misses during the code-writing phase, which I credit largely to the thorough work we did on our Use Case and UML models. It goes against the typical Open Source Hacker mindset to spend so much time preparing to code and not actually coding (I mean, coding is the fun part, right?). But Bertjan patiently worked with me through this phase and I think we have some really good quality code as a result. Bertjan also wrote a series of unit tests to help verify his code in the base classes.

exciting new kpilot keyring viewer3. Implementation of a new conduit as proof of concept.

Early on, we weren’t sure which route to go–whether we should try to port one of our existing conduits to the new base classes or whether we should just create a new conduit. As it turns out, we did our SOC work in trunk, which means we didn’t have a very stable code base (we’re still working on getting KPilot stable in trunk) to start from. So we decided to create a new conduit to use as an implementation for our new base classes rather than struggle with porting code and also trying to fit it into the new base system. I’ve been wanting to have a way to sync with the Keyring Palm application (encrypted, multi-purpose Palm database for storing passwords, account numbers, etc.) for a long time now, so we decided to create a new conduit in trunk to test and verify the new base classes. We’re just finishing up a few minor nits with it and hope to have it fully functional by EOD, Monday.

So, to summarize, thanks to this year’s Google Summer of Code KPilot project, we now have a solid base conduit framework that is implemented in a new Keyring conduit. Our next steps in the KPilot team are:

  • stabilize the daemon and user-visible portions of KPilot
  • finish porting the old conduits over to the new KDE4 APIs
  • port the old/existing conduits over to our new base record framework
  • stabilize, test, wash, rinse, repeat
  • look at OpenSync framework again and (now that we have a common conduit framework in KPilot) see if we can leverage OpenSync’s libraries for the underlying syncing algorithms.

KPilot progress(!!) and a fatal Plucker error

First, Bertjan is doing a wunderbar job with the keyring conduit in KPilot/trunk! I stayed up a bit last night and hacked for a while. Felt darned good. One annoyance that we’ve found, though, is that it looks like KWallet::Wallet (the KDE wallet subsystem) assumes that every program that wants to access the Wallet subsystem will have a top-level window. This assumption is not true with KPilot’s syncing daemon (kpilotDaemon). So I’ve sent an e-mail off to kde-core-devel, and hope to hear something back on it soon, but does anyone in lazy-web-ville know what the Correct (TM) way is to work around this?

Secondly, my darling little Treo 650 just this morning decided to start vomiting on my blue suede shoes every time I tried to open a Plucker document. Mind you, it worked absolutely perfectly fine before today. And I’ve installed no new software, etc., between when it worked and now. The error I was occasionally getting was this: “DataMgr.c,Line:11231, Index out of range”. Helpful, huh? Fortunately, I found another poor soul who has hit the same problem and found a solution. So I downloaded an alternate version of ZLib for my Treo (no idea whether it’s the same one that comes with Plucker–it’s 4 years old), installed it to my Treo and now things seem to work properly again. I’m not sure what the exact problem was, but installing the zlib ARMlet Port seems to have fixed some portion of the problem.

PDA’s are amazingly cool little things, when they work. When they don’t, however, and insist on rebooting themselves without telling you what broke or how to fix it, you quickly start wondering whether they’ll flush cleanly down the toilet or not….