If you want to learn something about developing software look at Jamie Zawinskis funny story about Hula. I know I'm not the first one to reference Jamies blog and I'm also not the first one to mention Hula, but I still have the hope that I will get a bunch of flowers and a voucher for three free downloads for being the one millionth. Other than that I'm serious, Jamie's lesson is one of the most focused contributions about software development I have ever read.
Why that? Because Jamie bluntly tells what should be the goal of each and every software developer: "Help a 22 year old student living in the dorms getting laid.". You can imagine variations of this for other target groups but it essentially comes down to the one an only requirement for software: "Be useful" or stated differently "Make your users happy". Being useful doesn't include protecting the operating system from viruses, spyware or dialers, helping to move around files between the internet and home or defragmenting your harddisk. These are all solutions to problems I never would have had if I wouldn't have started to use a computer, they are trying to cure unhappiness instead of striving for everybody's happiness. I'm really fed up with this kind of software that only addresses software-related problems. I want software that actually is useful and helps "the 22 year old college student living in the dorms getting laid." or whatever is really important to the user.
Now talk about groupware, wait, let's call it collaboration. That's what Hula is all about and that's what Jamie is talking about in his blog and it's just so right. Calendering is the key. That's why I started to work on KOrganizer five years ago. I felt that calendaring was the one missing piece making a computer useful. Ok, email already worked and it still somewhat works, despite of spam, but all the difficulties when bringing together people, trying to remember dates or planning events are crying for a real solution. Whole forests have been chopped down for producing paper calendars, post-it notes and plain paper to be scribbled with unrecognizable symbols. We all know that this doesn't work, but if we had the right software addressing the needs of people and not the buzzword requirements of managers, we could imagine a future where the computer would actually be useful to organize your time without constanty getting in your way.
There is a long way to go. I remember that some years ago I was sitting at a pub at Heidelberg together with this crazy guy wanting to write a virtual community system, drinking beer, discussing. He was a freelance software developer, said he was a server guy and painted his plans to write a calendar server in bright colors. He talked about iCalendar and CAP and it all sounded great. A couple of weeks later he even sent me a big tarball with code (a very nice C++ implementation of iCalendar) and then he vanished from the planet.
That's kind of prototypical for calendar servers. There just isn't a good sustainable solution and that for years. Sure, there are lots of groupware servers providing calendaring functionality, but they all suck. I have personally implemented support for at least five different calendar servers in KDE Kontact, I have used almost every conceivable technology for talking calendar with a server, but I'm still not convinced that there currently exists a single good solution. The answer I put most hope into is GroupDAV, because it's a pragmatic solution driven by implementations. That could work. We already have support of multiple servers (OpenGroupware.org and Citadel) and multiple clients (Kontact and Evolution).
So there is hope. But the fundamental reasoning that software must be really useful still is valid, so I'm hoping that in the future my collaboraton client will help me with getting people together for drinking beer, prevent my wife shouting at me because I have forgotten a date with her and let me know when I have to turn up for club duty. If Hula is part of it, ok, great, time will tell, but I certainly know that KDE right now provides a great base for this. Jamie says: "Our focus in the client group had always been to build products and features that people wanted to use. That we wanted to use. That our moms wanted to use" and KDE is just that, it's developed by users not by companies and it's going down to the point where it is becoming useful and making users happy. If you have dreams about the future of software you have to look at KDE.