Wednesday, 31 October 2007

Halloween and current developments

I'd hoped to do a release today, but a few things that we're working on just aren't ready and I'd like to wait until the next Sunbird/Lightning release. Meanwhile things are really moving forward with some great contributions from the community in the IMAP area. I've nearly finished with global addressbook integration (using OpenDS) including in the webmail side. The pieces remaining are:

  • Personal Addressbooks (working out how the security works)
  • Addressbook administration
  • Administration cleanup
  • Documentation

click for screenshot of address search in Meldware
searching for addresses in a global addressbook hosted by Meldware/OpenDS

This work is moving ahead now and we should be ready for its release shortly. Meanwhile, we've seen a lot of uptake in interest since you-know-who was acquired. I think people are really starting to see the difference between real open source and trial-ware/shareware.

click for a screenshot of displaying an address
showing an address

I never can help myself from looking ahead. I think there is a real need for better mobile integration in the calendar space. Particularly with scheduling. However, targeting multiple mobile devices is still a pain. With SuperWaba going closed source and already basically violating its GPL license (from what I can tell), I don't see any great solution.

I kind of think a scripting approach makes sense. That being said I'm not altogether sold on JavaME. One, who needs another proprietary platform (JavaME is not open source, or even apparently free as in beer or whatever). Secondly, it doesn't seem to have much in the way of ubiquity. My Treo doesn't even have it. I wonder if a scripting language geared for mobile devices and a set of widget peers might not work? Something like TCL/TK but not. The idea would be a tight subset for internet connected handheld devices, buttons, windows, grids and essentially sockets or http... I look at stuff like SynchML and it is a bit depressing to be honest. Why can't I have as robust of an experience on my phone as I have on my desktop (screen realestate aside) without selling my soul to any one vendor's "platform strategy"?

Technorati Tags:

Posted by acoliver at 12:00 PM in Buni.org

Tuesday, 16 October 2007

Not all code released under the Ms-PL and Ms-RL will be open source.

As I alluded to, without letting the cat exactly out of the bag, OSI approved two MS license. I liked Microsoft's blog statement on the matter and I have to say that I didn't care for Matt Asay's statement. Matt's posts frequently trouble me in that they confuse Open Source licensing with open source. Meaning you can use an open source license...and produce non-open source. The simplest way is to patent some technology or knowingly produce software that uses a (valid) patent by someone else and restrict how that patent is licensed in a way that is incongruent with open source. The cool thing about Microsoft's licenses is that they appear to confer such patents (where owned by MS). On the other hand, you can also do things like SuperWaba did and shut down your community site. The tough thing here is that it is less obvious in some ways. On one hand, the source to SuperWaba isn't readily available or developed in the open nor is it indeed easy to get at the binaries. It has the look, feel and smell of a proprietary product (they even make you register to download it), but is GPL. No way that is open source. Microsoft may end up throwing binaries over the wall, make the source hard to get at and potentially even license the binaries under other licenses. They might open source license that without actually doing open source development or distribution per se. This wouldn't be unique to Microsoft, so don't pick on them here, I'm just saying don't do what Matt Asay does, occasionally in his writing, and confuse open source licensing with open source.

Technorati Tags:

Posted by acoliver at 7:02 PM in Open Source

Sunday, 14 October 2007

Mobile at last, dang

First of all, I'd like to thank whoever stole my Blackberry that I left on the Helsinki to Kuopio train (my camera that my stepson left on the way back was returned). That dang thing never actually worked. That made me get off my butt and buy a new phone. My crackberry never worked. It crashed on the way home on the day I bought it, but I figured that was an update or something (which crashed my previous phone on its first startup without fail), but that dang thing crashed randomly all the time and often times without switching to the JVM error screen so that I didn't know it had crashed.

I thought about buying an iPhone, but I just don't want to be associated with those suckers, besides I was mad at Apple for disabling my MacBookPro from running Linux (this I fixed). Frankly Apple's advertising annoys me. I'm beyond caring about being cool. I leave being cool to emaciated 20 year olds that shop at the GAP. If I want to be that cool I'll buy my own 20 year old to do it for me, sheesh....two if I want to be doublekool. I also resent locked phones. Like I want to pay some ridiculous amount to use my phone abroad. No way dude, I'm buying a pay as I go GSM card so bite me! There is also my theory that the reason my MBP runs so hot is that Steve Jobs wants to solidify his position as Alpha male...

I didn't really think about another Blackberry. As much as I wanted to get Meldware working with it, I had enough time getting the freaking Internet to work with it. No cool telnet or ssh or whatever! All the dreams I had about checking server logs from the train never came true. So that was out. (if you don't have a dud then it should work with IMAP)

Instead I walked into the Palm store while I was in the Atlanta airport with time to kill and saw a bunch of phones that weren't locked for relatively little. With a 30 day no-risk return policy, I was doing that. The only problem was that Versa Mail was a piece of crap. It insisted on loading THE ENTIRE MAILBOX INTO RAM and thus threw an OOME since my mailbox is a few gigs over the 8mb. Today while waiting for Billy (12) to get a turn at the soccer ball, I downloaded another app and it worked with Meldware right off. I was pleased. It even let me decide not to download my whole mailbox but stick to newer mails (essential cause it couldn't hold it). The only problem is that a certain open source diva sends email in embedded apple-encoded mime format which it doesn't seem to like much.

Now I just have to find a better calendar app for it.

Technorati Tags:

Posted by acoliver at 12:02 AM in Meldware

Friday, 12 October 2007

Roll your own poor man's injection, dirty style..

So I have to be honest, I'm a big fan of dependency injection, declarative transactions and automated session management, but I'm not a great fan of the almighty container. One of the weaknesses of EJB3 in my view is that you don't get services ala carte. I want Hibernate session management, but do I REALLY need object pooling (which is oft bad for garbage collection on high performance multiprocessor systems)? I want resource injection or declarative transaction management, but do I really need a special interface? I understand some of the technical reasons for these, but the technology for going without the full monty exists. That is why I'm kind of excited by both the work that Bill Burke is doing on EJB 3.1 and Spring's embrace of annotations. Still sometimes both are way overkill. The other night I was explaining to someone that sometimes I do my own "dirty injection". Take the following example from the not yet committed LDAP integration code in Meldware:

        ClassLoader loader = Thread.currentThread().getContextClassLoader();
        Class handlerClass = null;
        XMLCommand cmd = null; 
        try {
            String classname = FULL_PKG+op+COMMAND_EXT;
            handlerClass = loader.loadClass(classname);
            cmd = (XMLCommand) handlerClass.newInstance();
        } catch (Exception ex) {
            // TODO remove stack trace, add formal error handling messages
            ex.printStackTrace();
            throw new RuntimeException(ex);
        }
...
        try {
        	Method m = handlerClass.getMethod("setUserProfile", new Class[]{UserProfileService.class});
        	m.invoke(cmd, new Object[]{this.ups});
        } catch (Exception m1) {
        }

The key part is at the end with the "Method m =" stuff. This is basically part of a servlet that delegates to command handlers, some of which need certain services and some of which don't. You could do this with annotations if you wanted, by calling getMethods(..) and checking them for the wanted annotation, but this isn't a general use framework so a naming convention is fine for us.

I'd probably be more inclined to use EJB3ish type stuff for things like this if I could just new up stuff sans container and get just the services I ask for. JBoss has the technology to do this in fact with CgLib and such, but I think Burke has an AOP and EJB mindset which means: classloaders and pre/postcompilers or the almighty container. On the other hand Spring wants me to learn about "The RequiredAnnotationBeanPostProcessor" which sounds just awful. Worse there still seems to be XML spawned, and I would possibly remove the angle brackets from my keyboard if they weren't so darn useful in if statements. I get the "I don't want to play tricks" but I dunno CgLib (used by hibernate to make its proxies) seems pretty solid to me and I realize I'll need some kind of factory that does essentially what the above does, but why does the amount of reading I have to do to use it have to exceed the length of the above code sample and this blog entry (which is full of bloviation to boot)? Could be the doc, could be that I'm in a cranky mood, or it could be that the implementation could still be simpler. I report, fair and balanced, you decide :-).

I guess my bias would be to go with Spring if I had to choose now a days. I love Burke and the gang but my tolerance for closed-committee design is low. I can tell that Burke wants that to change, his frequent and detailed technical blog entries virtually make EJB committee secrecy not worth the time, but unlike Burke, the rest of the committee isn't taking accountability for the ideas and all of the other BS that goes into a committee. Kudos to Burke for giving us an inside look into the witch potion making (I assume all secret committees are doing something unholy possibly involving bestiality and things that would make Hani blush)! I think that right now the representative to the EJB committee from Oracle must have just proven he doesn't understand relational databases! The representative from IBM has just insisted that we have 12 new required interfaces instead of none and that the EJB3.1 TCK contains terms which will prevent open source implementations. Why do I assume this? Because if they don't want me to know...they must be dirty and incompetent. Since I don't know -- I have a very vivid imagination. (And why has Sun made worshiping the "dark lord" a requirement of the EJB3.1 TCK license?)

Technorati Tags:

Posted by acoliver at 9:45 AM in Tech tips

Wednesday, 10 October 2007

appointed as an OSI board observer. Also new Program Manager position open.

I've been appointed as a board observer for OSI. To be clear, I do not back away from my earlier statements, I've just been called to help do something productive with them. While I'm only an observer, my goals continue to be:

  • encourage and pursue an opening of OSI's board and processes and general transparency
  • encourage accountability for board members and their delegates
  • pursue some form of representative voting for electing board members and officers

Meanwhile, Microsoft has submitted the "Microsoft Permissive License" and the Microsoft Public License for approval. These are pretty short and well-written licenses and on their face look like the MPL and BSD licenses that they were fashioned after with the added benefit of patent terminations similar to those in the Apache and Gnu Public License. The only semi-credible technical objection I've seen are mainly that Microsoft isn't giving an explicit trademark license regarding that license name itself. However, if I understand correctly this exemption is granted by US trademark law . The same exemption covers book titles. For instance I can call a book "Professional JBoss Development", without trademark license because trademark law in the US and other countries permits this and thus it does not need to be explicitly granted. I would assume that I can make non-commercial statements like "License: Microsoft Public License" so long as I don't misuse the trademark deceptively. I'd assume that titling our software "Microsoft Public License Meldware" would run afoul (speaking purely hypothetically we do not use MsPL, we use LGPL) where noting that the software is released under the license as a factual statement on a webpage would not.

Less credible objections, in my opinion include those that Microsoft is collectively a "poopy-head". I think a potential one is that these are kind of "vanity licenses"; however, I think that the benefit of approval outweighs this. Basically Microsoft participating in open source and SCO's defeat means that we have won Saratoga. there is always a threat of "Embrace, Extend and Extinguish" but engagement (China) has shown more general success than estrangement (Cuba). Especially given the relative sizes of Open Source vs Microsoft/non-Open Source.

Still to win the ideological war, so to speak, OSI needs to continue to move in the direction of openness, accountability and representation (including representing more working slobs and less of the "gentry") in order to lend to its own legitimacy. I think there is a genuine desire to do so, albeit it is some ways off. The "silent majority" may not be saying anything, but they haven't been asked anything either.

At todays meeting I mostly just asked that the last meeting's minutes be approved and published. Guess what my main issue will be at the next meeting? Ultimately, the point is that secrecy is not the default state but a special circumstance that can be called for when needed. To represent all of open source....you must be open.

Meanwhile in the more mundane department of "get things done" OSI has posted the "Mr. Execution" position. Think of the OSI board as Picard, and the Program Manager as Riker. The board is to say "Number One, Engage." and he's supposed to "Make it so".

Technorati Tags:

Posted by acoliver at 1:32 PM in Open Source