I originally hoped one of us would buy the other out and launch the application, but we found a much stronger basis for agreement in a mutual desire to stop working together as quickly as possible.
If Share Your OPML was a Java project I would've been heartsick to destroy it, but I coded the application in PHP. I've never written anything in PHP I didn't want to completely rewrite six months later.
Some people think I'm an asshat for taking this public, and I won't argue with that, but I don't have the resources to fight an intellectual property lawsuit against a millionaire. Winer knows this -- he's been a guest in my home -- and it's clear his attorney was acting from the same assumption throughout the settlement negotiation.
I decided the best way to avoid court was to show Winer what it would be like to sue a blogger.
I figured the publicity would be a stronger motivator to resolve the matter than anything I could say through an attorney. He's one of the most galvanizing figures in the technology industry. If he ever sues someone, the publication of the case's motions and depositions will put a blog in the Technorati Top 100. Since publishing the letter from Winer's attorney, my traffic's through the roof, I'm getting fan mail and I received three programming job offers.
I'm extremely grateful for the public support and the offers to contribute to a legal defense fund on my behalf, which I was hoping might lead to a Free Kevin-style sticker-based political movement.
Some programmers have said that I was foolish to write the app on the basis of a verbal agreement, and I'll concede that wholeheartedly. I won't even do the laundry now without something in writing.
I'm not going to close the book on this debacle with any Panglossian happy talk about how it all worked out for the best. This was a completely unnecessary sphincter-fusing legal dispute that could have been settled amicably months ago without benefit of counsel.
But I'm glad to stop pursuing an application so closely associated with OPML, because I don't share Winer's enthusiasm for the format.
I used to feel differently, but now that I've worked with it extensively, OPML's an underspecified, one-size-fits-all kludge that doesn't serve a purpose beyond the exchange of simple data. There's little need for an XML dialect to represent outlines. Any XML format is a hierachy of parent-child relationships that could be editable as an outline with a single addition: a collapsed attribute that's either true or false.
Developers who build on OPML will encounter a lot of odd data because the format has been extended in a non-standard way. An outline item's type attribute has a value that indicates the other attributes which might be present. No one knows how many different attributes are in use today, so if you tell users that your software "supports OPML," you're telling them you support arbitrary XML data that can't be checked against a document type definition.
OPML's also the only XML dialect I'm aware of that stuffs all character data inside attributes. Now that OPML's being turned into a weblog publishing format, outline items will have ginormous attribute values holding escaped HTML markup like this:
<outline text="<img src="http://images.scripting.com/archiveScriptingCom/2006/03/16/chockfull.jpg" width="53" height="73" border="0" align="right" hspace="15" vspace="5" alt="A picture named chockfull.jpg"><a href="http://scobleizer.wordpress.com/2006/03/16/the-new-a-list/">Scoble laments</a> all the flamers in the thread on <b style="color:black;background-color:#ffff66">Rogers Cadenhead's</b> site, but isn't it obvious that the <i>purpose</i> of his post was to get a flamewar going? What non-flamer is going to post in the middle of a festival like that one? I'm not as worried about it as Scoble is, because I've seen better flamewars and I know how they turn out. In a few days he's still going to have to try to resolve the matter with me, and the flamers will have gone on to some other trumped-up controversy. The days when you could fool any number of real people with a charade like this are long past. And people who use pseudonyms to call public figures schoolyard names are not really very serious or threatening. <a href="http://allied.blogspot.com/2006/03/lynch-mob-security.html">Jeneane Sessum</a> is right in saying it's extreme to call this a lynch mob. It's just a bunch of <a href="http://www.cadenhead.org/workbench/news/2881/letter-dave-winers-attorney#46458">anonymous comments</a> on a snarky blog post. Big deal. Not. <a href="http://www.scripting.com/2006/03/16.html#When:11:21:10PM">" created="Tue, 16 March 2006 11:21:10 GMT"/>
I'd be amazed if XML parsers can handle attribute values of any length, but that's what's being done today with OPML.
Now that an agreement has been reached, Winer doesn't have to share Share Your OPML and I can flee in terror before any border skirmishes lead to another XML specification war.
Maybe this is the best of all possible worlds.
Update: Winer appears to have launched a new PHP-based implementation of Share Your OPML with Dan MacTough.
The sooner you can dissociate your name from Dave Winer's, the better.
I'm surprised there hasn't been an example featured on The Daily WTF.
Congrats on your disentanglement, Rogers.
And BTW, I share your view of PHP. Maybe it stands for Program Hacked to Pasta.
Rogers, we've had our agreements and disagreements over the years, but I can say unreservedly that I'm glad you're putting this behind you. (And that you came around on OPML!) Good luck, and don't let time erase the lessons you learned in this one...
I decided the best way to avoid court was to show Winer what it would be like to sue a blogger.
Rogers, I'm relieved you've managed to reach an agreement that doesn't require you to trawl through a legal system. Not sure how much your one third stake in the OPML idea is worth, but it sounds like you've extracted yourself without any financial sacrifices.
I think the secret with PHP is to treat it as if it were Java - build objects and methods (except perhaps for getters and setters unless you need to filter attributes). PHP is so easy just to hack away - that strength is also its weakness.
I think the past-beginner step is to move away from the "one php page that contains markup and code" towards a clean separation of markup and logic, perhaps using a template system.
Dude, I totally saw this coming from the get-go. I mean, how many times did I tell you that OPML's an underspecified, one-size-fits-all kludge that doesn't serve a purpose beyond the exchange of simple data?
Maybe you'll listen to me next time. Pff.
It seems like a reasonable outcome. Dave Winer can be reasonable after a suitable cool down. He never seems to admit fault but he does back away from the hard line he starts with.
Now you can join the small band of guerillas that reject Dave's requests for work on some new mission because they've learned painfully that Dave just doesn't do committee work well. He can lead but he often gets frustrated when he turns around and realizes that what he thought was his army of followers is actually an army of independent thinkers who can run with an idea who's time has come and they don't need much in the way of management: just some feedback when they do good work.
Regarding the work you did with Dave over the last few years... I'll tell you:
Rogers, you did good work.
The RSS Advisory board efforts,
the OPML site,
the weblogs.com programming effort that saved the service (sold for $2.5M),
the re-hosting of the weblogs.com users that needed a new service after Dave had to pull the plug on the free service he tried to manage himself,
the defense of Dave's work (and behavior) against a sea of critics
and a lot more we'll never know about becuase you didn't document much about Dave.
You do good work. You'll continue to do good work and the loss will be Dave Winer's. He misused a friend and a valuable technical ally in the last few months.
You deserved to be treated better by Dave, Mike Arrington and quite a few others in this kerfuffle... but as the dust settles I'm glad to see you save from a legal maze that could only waste a lot of your billable time and family savings.
I think it's safe to say that your opinion of OPML is tainted by your relationship with Winer :-)
OPML is a great format. I've been writing XML since 1997 and SGML before that. I've seen hundreds of XML formats. I even helped write the spec for some (HR-XML). The vast majority (99%) of them never made it into widespread use. Actually, that's rather weak. The vast majority (99%) never made it past the samples in the spec text. A few have. OPML is one of them.
I think it's safe to say that your opinion of OPML is tainted by your relationship with Winer
That's entirely possible. For simple data exchange on things like blogrolls, OPML's fine.
But for anything beyond that, you're layering an extra abstraction on top of XML that doesn't give you anything good in exchange for interop and escaped markup hassles.
I stopped following OPML 2.0 development when I read that it would be declared "frozen." One battle of that kind is more than enough for me. So I don't know if some of this stuff is being addressed, and I'm not going to find out.
However, if I were building stuff around OPML, I'd be hitting that spec revision effort pretty hard to get some of the issues resolved before it becomes a huge fight to touch as much as a comma in the spec.
This was all very interesting. Glad you avoided a legal quagmire.
Plus, I learned a new word: Panglossian.
"Asshat"? Are you a Don and Mike fan? That's where I generally hear that term...
Well played, Rogers. I was confident you weren't going to lose out in this. We know now that Winer's brain shrinks fast in the heat.
Winer wasn't being "reasonable" so much as cheap. When it was clear Rogers wasn't going to blink, that he doesn't fold under bluster-bullying, he finally decided throwing more money after bad in a stalemate situation was pointless.
There are great, classic lessons out of this debacle. If you consider yourself basically a good guy/gal, don't ignore that little voice telling you you've gone too far. Because no matter what kind of roll you're on, Karma *allways* wins in the long run.
Oh, and it's never too late to repent.
Rogers, I'm honestly not sure how problematic the length of the attributes is likely to be, but it does reflect a terrible design decision.
Text content in XML attributes is generally broken because of its space normalizing rules or attributes.
Escaping markup in content in XML is a bad idea, it hides the information from the processor and throws away many of the benefits of using XML in the first place. Oh yeah, and who's gonna cater for popular entities like ampersand-quot-semicolon...
More thoughts on OPML's extensibility
Way to go!
The only asshat in this issue has been Winer.
We all look forward to not reading about him on your blog in future.
Roger, it is good to see this conflict resolved although I am rather disappointed that you had to kick the dead horse before burying it. I think both you and Dave are two good people who had misunderstandings and miscommunications. It happens and not everyone knows how to resolve conflicts gracefully. I sure don't.
Anyhow, that is that.
Dare I ask -- what are your thoughts on Share Your OPML now going public?
So how long before Dan gets the shaft? Everyone that's ever had the misfortune to hang around with 'Uncle Dave' has gotten burned. Sheesh, the man's a blight on society.
I've yet to find an app from Winer that's worth using. OPMLManager is an exercise in mad frustration, OPML share is so limited that it's really useless, the editor is in dire need of a complete usability makeover, a most user unfriendly app.