On 08/10/14 09:18, Gert Doering wrote:
> Hi David,
> 
> please take a second to consider what your position on this is - "I like
> systemd a lot, I want to push support for it everywhere" or "I'm maintainer
> of OpenVPN and carefully consider what goes in there".

I consider myself an OpenVPN maintainer who carefully does consider what
we do apply.  But I also happen to primarily use Linux, where I see the
future will be dominated by systemd.  Thus I am concerned about our
systemd support.

> After that, please take a step back and actually *read* what I proposed:
> 
> On Wed, Oct 08, 2014 at 01:31:30AM +0200, David Sommerseth wrote:
> [..]
>>> OTOH, having a *generic* mechanism to run an external "askpass" mechanism
>>> - which could then be something x11-ssh-askpass, for example, on systems
>>> that are not Linux or have no systemd, is something I'd find generically
>>> useful.  On systemd systems, this would then point to systemd, of course.
>>
>> That is *exactly* what systemd-ask-password is.  And for Linux, this is
>> the mechanism which is designed for this purpose and it will be the
>> solution the majority of Linux distros will use.
> 
> So we seem to be in actual agreement that this is a useful thing - but
> the current code actually is *not* that.  It's "this useful feature, done 
> in a very particular way, which only works if systemd is running".

We've had several patches on pastebins which we've discussed in the
past.  A few times you have actually told me that my *generic*
implementations where over-engineered.  Once you even told me to make it
specific and we could broaden the scope once we see the need.  This is
what I am doing right now.

Currently I am not aware of anyone else needing an ask-password feature.
 But I'm willing to see how we can adopt the systemd implementation we
already have when that request comes.

> And this is my whole point here - it has nothing to do with "do I have
> experience with systemd or not" or "do I like systemd or not".  When you
> asked me to take over maintainership for 2.4, you put responsibility on
> my shoulders, more than just "be the commit-and-push dummy".
> 
> When I look at features and patches, I always try to have a broader view
> 
>   - will this come back and bite us?

In the current state, we will get complaints about usernames being
masked.  Enforcing --echo regardless of systemd version will come back
an bite us on those distros using a too old systemd base.  Hence, I try
to avoid these two scenarios.

I don't know about systemd versions in other distros than Fedora and
RHEL 7.  But Fedora 20 which will live alongside Fedora 21 ships with
v208.  Fedora 19 ships with version 204 but will go EOL some weeks after
Fedora 21 is released.  RHEL 7 has v208 as the base version.  So if we
don't consider systemd versions, we will get complaints about OpenVPN
not working with systemd on these releases.

In fact the --echo feature will come in a release after v216.  So you
see there is a gap until this feature will be available in systemd distros.

>   - is this code that is very narrow to a particular environment, but might
>     be more useful if done in a more generic way?

Okay, should we do the same for setting up IP addresses and routes in
tun.c too then?  Should we stop fixing issues, isolated to particular
platforms in that code because we need a more generic approach which
doesn't bloat the code with #ifdefs?   Because that is all I'm doing
here.  I'm not extending OpenVPN with new features, just fixing annoyances.

> So - running a configurable external program which *could* be systemd's
> ask-password, but could be something completely different on, say, FreeBSD,
> would give you what you ask for (systemd integration), but be of larger
> benefit to the OpenVPN project.
>
> Yes, it would be a bit more work to get that API right, well-defined and
> well-documented.  Should that stop us?

Agreed.  But it's damn hard to get the API right without a reference
implementation.  Currently we do have that in OpenVPN, but it is not
optimal.  And once we have requests for similar mechanisms for
non-systemd distros, yes, I agree we can make things more generic.

But to be honest, I am not convinced making OpenVPN execve() a wrapper
execve() the ask-pass program is the proper implementation, and then
pipe the result back and forth.  I think we should have something more
baked into OpenVPN, similar to what we do with OpenSSL and PolarSSL.

>> So you want a far more complex implementation to solve a situation which
>> is currently relevant to systemd?  
> 
> That is actually the point: I try to see the broader picture, and this is
> more useful than "just systemd".  But the way it's currently coded, with
> your last patch (which I admit that I ACKed - my fault, I should have 
> spend more thought on the design first, and discuss with you beforehand),
> it's "really just systemd".

One of the first things I did when I stepped up as the first community
maintainer of OpenVPN was to try to reduce the fragmentation of OpenVPN
on the Linux side.  Almost all distros had their own additional patches.
 The patches which are in the distroes now are, afaik, only adopting
things which is unique for that distro.  We added a lot of the distro
patches all could benefit from into the upstream OpenVPN.

I am seeing this from a broader perspective than you probably are aware
of.  And I want to avoid Linux distros patching OpenVPN on the systemd
implementation separately due to issues which has been reported or
issues which I see may show up in the future.

In fact, if systemd had had a library function called sd_version() which
would return the systemd version, you probably would have ACKed the
patch fairly quickly.

But because I touched m4/pkg.m4 you suddenly see a big problem.  You
even told me on one of the previous patches that as long as systemd
related stuff was isolated inside its own configure.ac block, you didn't
see any problems.  The pkg.m4 is the only change which is outside the
systemd scope.  Btw. I'm even considering to submit that patch to
upstream pkgconfig, to avoid fragmentation (and we can then remove
pkg.m4 from our repo in the future).

>> In addition, I've not seen any other distros requiring such a feature, but
>> I might just be misinformed.
> 
> If you're seeing this not from a RedHat angle but from an OpenVPN maintainer
> point of view, why do you care what "distros require"?  If a Linux distro
> *requires* something, they can very well patch it themselves.
> 
> We, as OpenVPN community, should aim for what is good for OpenVPN - both
> for all or user base and for the maintainers ourselves.

That is *exactly* what I try to do.  To reduce the risk of Linux distros
having to add additional patches separately.  To reduce the risk of
fragmentation among Linux distros.  Which means distros can work more
closely with upstream OpenVPN, because the gap is minimal.

>>> So fully independent from the patch at hand we have some discussion to
>>> do - and we might want to postpone this particular topic and patchset
>>> to the face to face meeting, as things tend to get out of hand when
>>> discussed purely by mail / IRC.
>>
>> I disagree to postpone this.  This is non-sense on such *clearly*
>> *defined* patches which are minimalistic and well contained.
> 
> If you think this is so important that the patches need to go in right 
> now, many months before we even consider a release of 2.4 (= many months
> before this will be relevant to any distribution), and it really can't
> wait to discuss the larger picture face to face, well, go ahead and 
> do so.  You have commit rights, and I won't stop you, as the project
> is too important to me to risk a schism right now.

I have too much respect for the community to go rouge.

But once patches are in our trees, if distros need to patch things
before a 2.4 release due to complaints from their users, they can pick
our upstream patches instead of having their own approach.  And this
goes well into the mantra of Fedora and RHEL, where we say: upstream
first.  Which is why I want to have this solved ASAP.

Fedora 21 currently in Alpha and the final release will be out in a few
months.  From a Fedora/Red Hat perspective, I want to avoid hacks into
that release.  For RHEL 7, OpenVPN is no longer part of the base
packages, but available via EPEL.  Which makes it possible to make
RHEL 7+ distributions have more recent versions of OpenVPN as well.

Having that said, I think we need to consider to apply some of the
systemd fixes which are already applied to the 2.3 branch.  Especially
the waitpid() patches.


-- 
kind regards,

David Sommerseth


Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to