On Wed, 2011-02-23 at 20:21 +0000, Chris Cannam wrote: > On 9 February 2011 16:49, David Robillard <[email protected]> wrote: > > new librdf-free slv2 > > Entirely Redland-free, or still using Raptor?
Entirely Redland free. I hand-wrote a Turtle parser and serialiser. > And: why? In short, it's been a PITA for everyone in numerous ways since day one. Some abandoned SLV2 entirely because of it. Others were in the process of doing so, until I decided enough was enough. Clearly SLV2 was deficient somehow if people were abandoning it, and they were abandoning it explicitly because of Redland... Redland is great if you really need a fully featured RDF implementation, and I still use it in such cases. To simply implement LV2, however, you don't, and such a heavyweight dependency certainly doesn't induce the best knee-jerk reaction. Often the librdf packages would pull in ridiculously massive mysql libraries and such - to implement a simple LADSPA based plugin API?! That this left a bad taste in people's mouths is completely understandable. It has definitely hurt LV2 adoption. (Because of historical reasons, "RDF" can seem bloatey, but it's really just an elegant abstract data model, and we are using a terse and simple syntax for it. The new lean-and-mean SLV2 implementation shows that there is no bloat inherent in LV2, and it's all a much easier pill to swallow in practice). Some less hand-wavey practical reasons: there were mysterious and very un-fun problems with librdf-in-librdf that crop up when you have plugins that load plugins (e.g. Ingen, NASPRO(*)). Portability was also an issue. Stefano D'Angelo (of NASPRO) and myself are now cooperating on LV2 implementation rather than duplicating effort because of Redland related problems (e.g. he'll be helping with win32 portability, and Ingen now depends on NASPRO for LADSPA support). I am all about resolving any fragmentation that has happened in the LV2 world, and dropping Redland has been a big positive step in that regard. The new implementation is thousands of times smaller, lighter, and faster. The entire thing is much smaller than libxml2 alone, for example. I should have just written one like this from the get-go, and the initial reception of LV2 would have been a lot better. Oh well, live and learn. SLV2 is now based on two new libraries: Serd (RDF syntax) and Sord (RDF store). Both are roughly 2 thousand lines of C, solid and thoroughly tested (about 95% code coverage, like SLV2 itself). Serd has zero dependencies, Sord depends only on Glib (for the time being, possibly not in the future). There is still some optimization to be done, but it's already so much leaner it's not a huge priority for me. The new SLV2 should be appropriate for, say, implementing LV2 on embedded hardware with limited resources. The old one, frankly, smelled of bloat even on a desktop system. Unfortunately, this ground-up reimplementation thing consumed the majority of my January, but I am very happy with the outcome. -dr (* For the unfamiliar, NASPRO is a bridge which transparently exposes LADSPA, VST, etc. plugins as LV2 plugins, among other things) _______________________________________________ Linux-audio-dev mailing list [email protected] http://lists.linuxaudio.org/listinfo/linux-audio-dev
