RE: Query on Serf vs Neon - documentation License etc
"John Dougrez-Lewis" <[email protected]> Tue, 15 Sep 2015 19:18:49 +0100
| Newsgroups | gmane.comp.apache.apr.serf.devel |
|---|---|
| Organization | Psychopompos Ltd |
| Message-ID | <1a0901d0efe2$f80726d0$e8157470$__34973.0852795348$1443916120$gmane$org@eu> |
------=_NextPart_000_1A0A_01D0EFEB.59CB8ED0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Greg, =20 Many thanks for the info! =20 I will dig into to it and subscribe to the [email protected] list. =20 Regards, =20 John =20 From: Greg Stein [mailto:[email protected]]=20 Sent: 15 September 2015 08:58 To: [email protected] Subject: Fwd: [serf-dev] Query on Serf vs Neon - documentation License = etc =20 Forwarding: it looks like you won't get my response via either mailing = list. Please reply to [email protected], and we can cc: you on any = replies if you note that you're not subscribed. =20 ---------- Forwarded message ---------- From: Greg Stein <[email protected]> Date: Tue, Sep 15, 2015 at 2:56 AM Subject: Re: [serf-dev] Query on Serf vs Neon - documentation License = etc To: [email protected] [ our mailing list has moved to [email protected]; bcc: old serf-dev ] =20 Response inline below: =20 On Tue, Sep 15, 2015 at 1:08 AM, <[email protected]> wrote: Hi, I'm working on a hobby application & I'd to use WebDAV. I've read Lisa Dusseault's WebDAV book and this pointed me in the = direction of Neon, which in turn pointed me in the direction of SVN = which pointed me to Serf. I'd like to be able to use a fully-featured WebDAV client side and = possibly server side library. =20 As I'm sure you've discovered, Serf and Neon are just the client side. =20 Neon was my initial choice, but since my app uses Apache/MIT licensed = libraries, I was concerned that the LGPL license of Neon would rule that = out, but then I noticed that SVN was using an Apache License but was = using Neon, although use of Neon was then depreciated in favour of Serf. Some questions to you guys: 1) Is there any documentation for a seasoned C/C++ developer on how to = use the Serf library. I can't immediately find any. Is it simply a case = of reading the source code and then looking at the SVN source code to = see how it drives Serf? =20 We are lacking that documentation. There are some sample programs in our = 'test' subdirectory, and libsvn_ra_serf, of course. You could also dig = into Apache OpenOffice, as it uses serf too. =20 The API is quite different from Neon, as serf is asynchronous. It can = run multiple connections, pipeline requests, etc. Neon has a higher = level API, but is synchronous: one API call performs a request and waits = for the response before returning. In serf, the API is low level, where = you queue connections and requests, and then "run" the serf context = repeatedly until completion occurs. =20 The test programs are good for giving you an idea of the basic pattern = of operation. =20 2) How was SVN able to use the Neon library without running into license = issues? =20 The larger work (svn) is ALv2-licensed. Components within that larger = work have different licenses. The svn code files are ALv2, and the bulk = of its dependencies are permissively-licensed. =20 Neon is the one non-permissive license, and it was always *optional*. = The user building svn would choose to incorporate Neon into their local = build. At that point, they are aware and have accepted the reciprocal = terms of the LGPL, should they decide to make any changes within Neon, = for its use within svn. =20 And to be clear: the licenses have no bearing, unless a (re)distribution = occurs. Only at that point, do the licenses kick in, and the = permissive/reciprocal/whatever terms become important. =20 If you have any further questions in this space, I'd be happy to answer. = I've been doing licensing for too long :-P =20 3) How does Serf stack up against Neon for WebDAV support? e.g. how well = does it interact and adhere to server modules provided by Apache's = mod_dav and Nginx's equivalent? =20 serf is a low level library. You queue requests on one or more = connections, and run them. The requests are built/defined by the = application code. Thus, it is the app which specifies the PROPPATCH = method, the HTTP header values, and provides the body of the request. = serf does not have helper functions (today) to assemble such requests. =20 Neon has both low and high level interfaces, so it is easier to use. Its = HTTP capabilities are limited to that single synchronous connection, = however. Some of us consider its license to be a "mis-feature", which we = "fixed" when starting serf :-) ... to be clear: many of us are friends = with Joe Orton. I've known him for 16+ years. Our libraries just have = different goals, rather than better/worse. :-) =20 Both libraries are HTTP conformant. In serf's case, the application must = properly construct DAV requests and must parse the DAV responses. In = Neon's case, it will help with the request/response handling. Neon is = certainly compatible with mod_dav (speaking as mod_dav's original = author). I don't know anything about nginx's DAV support, let alone = compatibility matrices. =20 Hope that helps! =20 Please feel free to subscribe to [email protected] (see = http://serf.apache.org/contribute), if you decide to use serf and would = like assistance driving the serf API. =20 Cheers, -g =20 =20 ------=_NextPart_000_1A0A_01D0EFEB.59CB8ED0--