> On Tue, May 8, 2012 at 11:28 AM, Samuli Seppänen <sam...@openvpn.net> wrote:
>>> Hello David,
>>>
>>> On Mon, May 7, 2012 at 10:33 AM, David Sommerseth
>>> <openvpn.l...@topphemmelig.net> wrote:
>>>
>>> <snip>
>>>
>>>> The reason I don't see the benefit of splitting out the plug-ins as
>>>> much is that they all depend on OpenVPN.  You can not make much use of
>>>> these plug-ins without having OpenVPN.  But with Windows TAP driver
>>>> and easy-rsa, they can be completely used independently.
>>>>
>>>> Another point is that the plug-ins we have in the source tree, is
>>>> officially supported plug-ins.  And especially auth-pam and down-root
>>>> are plug-ins which are very useful and we should encourage packagers
>>>> to always package those.
>>>>
>>>> Then the example/ and defer/ plug-ins, which are examples.  Maybe it
>>>> would rather make sense to merge them somehow?
>>> There are a lot of plugins out there, think about chrome extension or
>>> firefox extension, but also network manager plugins or similar, they
>>> are all depend on the core product, but extend its functionality, and
>>> have their own repositories.
>>>
>>> Plugins should be installed as separate package, aka rpm.
>>>
>>> So if administrator wants openvpn he does:
>>> # yum install openvpn
>>>
>>> Now, if administrator wants auth-pam, he should do:
>>> # yum install openvpn-plugin-auth-pam
>>>
>>> As there is no sense in keeping the auth-pam plugin in system if it is
>>> unused nor to have pam dependency of the openvpn core package.
>>>
>>> I would not encourage packages to always have them, it is also not the
>>> correct approach for plugins. Plugins should be optional in nature.
>>>
>>> All the above does not imply separate repository as in both cases we
>>> can either provide one .spec file that generate both rpms or two
>>> separate spec files.
>>>
>>> The real question is how do we provide proper build for this
>>> components. Currently it has poor-man-build, which I fixed to meet
>>> some level of quality, instead of ./configure&&make install, packager
>>> should go and figure own what else needs to be built in tree.
>>>
>>> So either these are officially supported and should be build properly
>>> using main build system, example:
>>> ---
>>> $ ./configure --enable-plugin-auth-pam PAM_CFLAGS=... PAM_LIBS=...
>>> ---
>>>
>>> Or have plugins as separate components with its own release cycle and
>>> should have their proper own build system and release cycle.
>>>
>>> I think that if we have proper interface (openvpn-plugin.h), there is
>>> no sense in providing the plugins within the tree, as it has its own
>>> release cycle.
>>>
>>> I also would like to discuss the "official" argument....
>>> A project can have several repositories all at equal "official" level,
>>> why on earth people think that having more than one repository around
>>> damage their "official" state? "officially supported plug-ins", can be
>>> official in the openvpn repository and can be official in their own
>>> repository, there is absolutely no difference between the two
>>> approaches in this regards.
>>>
>>> However, splitting the repositories, allow helping distro packaging in
>>> determine what needed to be packaged and provided to users, it also
>>> allow separate release cycle (new openvpn release does not force new
>>> plugin release), and can even help in maintenance as a plugin can have
>>> its own maintainer (commit access).
>>>
>>> If also has more advantage as now in github we can encourage people to
>>> host and maintain their plugin within the OpenVPN organization,
>>> attracting more skills.
>>> So bottom line:
>>>
>>> 1. Either we add the plugins to core build system, with its disadvantages.
>>>
>>> 2. Split plugins into their own repository, release cycle, packaging.
>>>
>>> I am for (2), as I don't afraid of the "official" argument nor do I
>>> afraid to commit to more than one repository, and the modular nature
>>> of the plugin interface allows optional components to be installed
>>> separately along with their own dependencies.
>>>
>>> Alon
>> I think there's some very good argumentation here. In my view,
>> separating plugins into their own repositories would have some important
>> advantages; excuse me for repeating some of Alon's arguments here:
>>
>> 1) Delegating maintenance tasks easily to (new) developers: this is now
>> trivial with GitHub
>> 2) Avoid having to make an OpenVPN release due to an important fix in a
>> plugin used by few. This also helps distro packagers, provided they
>> didn't bundle the plugins in their core "openvpn" package
>>
>> Afaik none of the official plugins are needed to create the official
>> Windows installers, so that platform is entirely unaffected. On *NIX
>> side we only release source code. If we don't want to force people to
>> fetch official plugin code using Git, providing tarballs would be trivial.
>>
>> I tend to agree that packagers should take care of packaging the plugins
>> as they see fit and making sure they're compatible with their version of
>> OpenVPN. For example, on Debian/Ubuntu the OpenVPN package includes
>> "down-root" and "pam" plugins by default. However, I've never used
>> those, and I know many others who don't either. Having the plugins in
>> separate repositories would steer packagers to the (in my opinion) right
>> direction of packaging optional functionality as optional packages. They
>> already do this for some of the off-tree plugins:
>>
>> <https://community.openvpn.net/openvpn/wiki/RelatedProjects>
>>
>> I believe the primary reason why the "pam" and "down-root" plugins are
>> in OpenVPN repository is that they seem to come from James, who has a
>> use-case for them. Personally, I would rather see the plugins in their
>> own repositories, even if only to see if it fosters collaboration.
>>
>> I guess that was my 5 cents :).
>>
>> --
>> Samuli Seppänen
>> Community Manager
>> OpenVPN Technologies, Inc
>>
>> irc freenode net: mattock
>>
> Hello,
>
> In order to break the fear I just went ahead and did this... maybe
> this will relax some of the concerns...
>
> A plugin in own repository, own build system, own rpm packaging of
> auth-pam[1] and down-root[2], even ebuilds[3][4]!
>
> Now we have the following packages for rpm based system:
>
> - openvpn
> - openvpn-devel (openvpn-plugin.h)
> - openvpn-plugin-auth-pam (introduces the pam dependency)
> - openvpn-plugin-down-root
>
> I've prepared a openvpn branch[5] to support this migration, I think
> that the best example is to see how the rpm spec file was
> simplified[6], no none standard statement, simple configure and make
> process, less dependencies for core package.
>
> I think that in the Gentoo ebuild[7] we can see more verbose example,
> especially the following statement that is about to be removed:
> ---
> if ! use minimal ; then
> cd src/plugins
> for i in *; do
> [[ ${i} == "README" || ${i} == "examples" || ${i} == "defer" ]] && continue
> [[ ${i} == "auth-pam" ]] && ! use pam && continue
> einfo "Building ${i} plugin"
> emake -C "${i}" CC="$(tc-getCC)" CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}"
> done
> cd ..
> ---
>
> I truly hope you see the advantage in building and packaging each
> independent component by its own, the simplicity it introduces in term
> of code maintenance and system administration. Again, there is no
> impact of the official level of the components.
>
> Best Regards,
> Alon Bar-Lev.
>
> [1] https://github.com/OpenVPN/openvpn-plugin-auth-pam
> [2] https://github.com/OpenVPN/openvpn-plugin-down-root
> [3] 
> https://github.com/alonbl/alon-barlev-overlay/blob/master/net-misc/openvpn-plugin-auth-pam/openvpn-plugin-auth-pam-9999.ebuild
> [4] 
> https://github.com/alonbl/alon-barlev-overlay/blob/master/net-misc/openvpn-plugin-down-root/openvpn-plugin-down-root-9999.ebuild
> [5] https://github.com/alonbl/openvpn/compare/master...plugins
> [6] 
> https://github.com/alonbl/openvpn/commit/0a9a1e1f234dcc81d4ed9ece5f894cfe5ec02d01#diff-0
> [7[ 
> https://github.com/alonbl/alon-barlev-overlay/blob/master/net-misc/openvpn/openvpn-9999.ebuild

Hi Alon,

Ok, so this is kind of a preview, which I think is fine. We should
definitely look at these plugin repositories and see how it all fits
together. I only got one minor nitpick... I think your own ("alonbl")
GitHub repos would have been a more appropriate place for these plugin
repositories for now, as they're not "officially" approved yet.

-- 
Samuli Seppänen
Community Manager
OpenVPN Technologies, Inc

irc freenode net: mattock


Reply via email to