* user-space xtables ABI [was Re: [Fwd: Re: iptables pull request]]
[not found] ` <1242566196.3996.23.camel@dogo.mojatatu.com>
@ 2009-05-17 14:46 ` Pablo Neira Ayuso
2009-05-17 15:14 ` jamal
2009-05-17 16:01 ` Jan Engelhardt
0 siblings, 2 replies; 13+ messages in thread
From: Pablo Neira Ayuso @ 2009-05-17 14:46 UTC (permalink / raw)
To: hadi; +Cc: Netfilter Development Mailinglist, Jan Engelhardt,
Patrick McHardy
Jamal,
I'm cc'ing netfilter-devel.
jamal wrote:
> Hi Pablo,
>
> On Sat, 2009-05-16 at 12:37 +0200, Pablo Neira Ayuso wrote:
>> Hi Jamal!
>>
>> Jan Engelhardt sent a couple of patches a couple of weeks ago. He is
>> changing the API that is being exported by iptables. I think that your
>> tc ipt thing is concerned. Could you let us know your opinion? The main
>> problem that I see is possible ABI breakages.
>
> I am really hoping that we are going to end up with a stable API.
>
> With tc the desire is even stronger because we try to maintain
> backward compatibility i.e an old tc should still be able to
> use current ipt and a newer tc should still be able to use older
> kernels. So breaking ABI in such a way that this becomes hard
> to achieve IMO should be once in a blue-moon-sighting event.
Indeed, I agree.
> [Essentially with the last changes, this backward
> compatibility broke and i had to change even the name of the
> binary so people dont continue to use it on old scripts.]
Yes, aware of those.
> I have had to "discover" that the ABI was broken 7 different
> iptable releases in the past, when my users whine (it seems to
> happen with some strong coincidence when i am busy at work);
> this is an unfair expectation of me and i hope at least you
> guys get to improve on.
Now that we have a public API for extensions and your tc ipt thing uses
it, I would not expect more breakages as long as we're aware of it.
> maybe we can have some simple working relationship rules:
>
> a) whoever breaks ABI (hopefully there are good reasons
> to intentionally break it) should also fix ipt, just like they
> fix iptables.
> b) whoever breaks the ABI should consider both backward and
> forward compatibility. I will review patches to make sure this
> is still so.
I think that, now that we have a public API, ABI should be not broken.
In case that some interface has limitations, we can add a new one while
keeping the old. The result is not nice since you end having two
functions that do the same with different interfaces but this doesn't
break binary backward compatibility. Of course, the change would need
some justification, eg. some client code do need something that the
current interface does not allow in any way.
With this policy, design errors accumulate along time so we learn the
lesson from our own mistakes and, then, we work on a new version 2 of
the API to resolve the accumulated issues after some time. This is how
I'm managing existing netfilter libraries. This policy makes the
developement of libraries/public interfaces slower but I think that
users are way happier (no binary breakages).
--
"Los honestos son inadaptados sociales" -- Les Luthiers
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: user-space xtables ABI [was Re: [Fwd: Re: iptables pull request]]
2009-05-17 14:46 ` user-space xtables ABI [was Re: [Fwd: Re: iptables pull request]] Pablo Neira Ayuso
@ 2009-05-17 15:14 ` jamal
2009-05-17 15:40 ` Pablo Neira Ayuso
2009-05-17 16:01 ` Jan Engelhardt
1 sibling, 1 reply; 13+ messages in thread
From: jamal @ 2009-05-17 15:14 UTC (permalink / raw)
To: Pablo Neira Ayuso
Cc: Netfilter Development Mailinglist, Jan Engelhardt,
Patrick McHardy
Pablo,
On Sun, 2009-05-17 at 16:46 +0200, Pablo Neira Ayuso wrote:
> Now that we have a public API for extensions and your tc ipt thing uses
> it, I would not expect more breakages as long as we're aware of it.
[..]
> I think that, now that we have a public API, ABI should be not broken.
That would be fantastic.
> In case that some interface has limitations, we can add a new one while
> keeping the old.
And maybe spit out some warning somewhere that the interface being used
is deprecated (the way the kernel does it so well currently).
> The result is not nice since you end having two
> functions that do the same with different interfaces but this doesn't
> break binary backward compatibility.
Would be an improvement - currently i have to find out over configure
scripts at compile time i.e write a little program using old API and if
doesnt compile, try the next thing etc.
I think if you also depracate over a period of time the old interface
by giving ample warnings the API users are surely going to migrate.
> Of course, the change would need
> some justification, eg. some client code do need something that the
> current interface does not allow in any way.
Indeed.
> With this policy, design errors accumulate along time so we learn the
> lesson from our own mistakes and, then, we work on a new version 2 of
> the API to resolve the accumulated issues after some time. This is how
> I'm managing existing netfilter libraries. This policy makes the
> developement of libraries/public interfaces slower but I think that
> users are way happier (no binary breakages).
I think there will always be challenges and lessons learnt but i dont
see the approach you outline as making "development slower" - it just
forces whoever introduces a new interface thinks at least twice ;->
An evolution instead of a revolution is a lot more acceptable
i.e build on existing interface and give it more features than totaly
changing it like you change your socks.
cheers,
jamal
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: user-space xtables ABI [was Re: [Fwd: Re: iptables pull request]]
2009-05-17 15:14 ` jamal
@ 2009-05-17 15:40 ` Pablo Neira Ayuso
2009-05-17 16:48 ` jamal
0 siblings, 1 reply; 13+ messages in thread
From: Pablo Neira Ayuso @ 2009-05-17 15:40 UTC (permalink / raw)
To: hadi; +Cc: Netfilter Development Mailinglist, Jan Engelhardt,
Patrick McHardy
jamal wrote:
> On Sun, 2009-05-17 at 16:46 +0200, Pablo Neira Ayuso wrote:
>
>> Now that we have a public API for extensions and your tc ipt thing uses
>> it, I would not expect more breakages as long as we're aware of it.
> [..]
>> I think that, now that we have a public API, ABI should be not broken.
>
> That would be fantastic.
>
>> In case that some interface has limitations, we can add a new one while
>> keeping the old.
>
> And maybe spit out some warning somewhere that the interface being used
> is deprecated (the way the kernel does it so well currently).
There is an __attribute__((deprecated)) in gcc that displays a message
during compilation time to warn that the software is using obsolete
interfaces. Then, we can remove it 1 or 2 years later.
>> The result is not nice since you end having two
>> functions that do the same with different interfaces but this doesn't
>> break binary backward compatibility.
>
> Would be an improvement - currently i have to find out over configure
> scripts at compile time i.e write a little program using old API and if
> doesnt compile, try the next thing etc.
> I think if you also depracate over a period of time the old interface
> by giving ample warnings the API users are surely going to migrate.
Yes, that will help, however some lazy users wait for the breakage to
move on, but who cares about them ;)
>> Of course, the change would need
>> some justification, eg. some client code do need something that the
>> current interface does not allow in any way.
>
> Indeed.
>
>> With this policy, design errors accumulate along time so we learn the
>> lesson from our own mistakes and, then, we work on a new version 2 of
>> the API to resolve the accumulated issues after some time. This is how
>> I'm managing existing netfilter libraries. This policy makes the
>> developement of libraries/public interfaces slower but I think that
>> users are way happier (no binary breakages).
>
> I think there will always be challenges and lessons learnt but i dont
> see the approach you outline as making "development slower" - it just
> forces whoever introduces a new interface thinks at least twice ;->
Right :)
> An evolution instead of a revolution is a lot more acceptable
> i.e build on existing interface and give it more features than totaly
> changing it like you change your socks.
In my case, it's been four years with the current library APIs and
following an evolution approach as you have mentioned (adding new
functions and obsoleting old ones but keeping them in the tree for a
while). Now I'm doing more like a full re-design that needs the
"revolution", no way to keep backward compatibility to resolve several
issues.
Still, people would be able to have both version 1 and 2 of the
libraries installed in their computer so they can keep attached to old
versions without breaking binary backward compatibility. I've been
discussing this with a friend of mine that maintains a couple of
critical libraries in the gnome project, it was nice to expose him my
ideas and see that I was on the right track.
--
"Los honestos son inadaptados sociales" -- Les Luthiers
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: user-space xtables ABI [was Re: [Fwd: Re: iptables pull request]]
2009-05-17 14:46 ` user-space xtables ABI [was Re: [Fwd: Re: iptables pull request]] Pablo Neira Ayuso
2009-05-17 15:14 ` jamal
@ 2009-05-17 16:01 ` Jan Engelhardt
2009-05-17 16:12 ` Pablo Neira Ayuso
1 sibling, 1 reply; 13+ messages in thread
From: Jan Engelhardt @ 2009-05-17 16:01 UTC (permalink / raw)
To: Pablo Neira Ayuso
Cc: hadi, Netfilter Development Mailinglist, Patrick McHardy
On Sunday 2009-05-17 16:46, Pablo Neira Ayuso wrote:
>jamal wrote:
>> On Sat, 2009-05-16 at 12:37 +0200, Pablo Neira Ayuso wrote:
>>
>> maybe we can have some simple working relationship rules:
>>
>> a) whoever breaks ABI (hopefully there are good reasons
>> to intentionally break it) should also fix ipt, just like they
>> fix iptables.
>> b) whoever breaks the ABI should consider both backward and
>> forward compatibility. I will review patches to make sure this
>> is still so.
>
>I think that, now that we have a public API, ABI should be not broken.
>In case that some interface has limitations, we can add a new one while
>keeping the old. The result is not nice since you end having two
>functions that do the same with different interfaces but this doesn't
>break binary backward compatibility. Of course, the change would need
>some justification, eg. some client code do need something that the
>current interface does not allow in any way.
>
>With this policy, design errors accumulate along time so we learn the
>lesson from our own mistakes and, then, we work on a new version 2 of
>the API to resolve the accumulated issues after some time. This is how
>I'm managing existing netfilter libraries. This policy makes the
>developement of libraries/public interfaces slower but I think that
>users are way happier (no binary breakages).
With that policy we end up with the same crap that is happening
in the kernel.
Just because we magically managed to stuff lots of functions into an
.so file does not make it public. It just so happens to save a bunch
of kilobytes in all of the binaries that were previously statically
linked to xtables.c, and was deemed one way to figure out how to deal
with intrusive m_ipt. Sorry, but in all efforts that went in so far,
I discharge libxtables having a stable API. For that, the iptables
code is not beauty enough yet.
Now, I had to just think of Xtables-addons that has a similar issue.
For the kernel modules, it uses a separate compat_xtables.c glue
module that hides the hacks needed for older versions.
Would tc profit from something similar for libxtables? It would gain
the capability to work with iptableses potentially older than the
reference point. But is that truly required? Upgrading userspace is a
lot easier than the kernel. If a newer tc is installed on one's
system, the user might just as well do so for iptables in the same
run.
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: user-space xtables ABI [was Re: [Fwd: Re: iptables pull request]]
2009-05-17 16:01 ` Jan Engelhardt
@ 2009-05-17 16:12 ` Pablo Neira Ayuso
2009-05-17 16:39 ` Jan Engelhardt
0 siblings, 1 reply; 13+ messages in thread
From: Pablo Neira Ayuso @ 2009-05-17 16:12 UTC (permalink / raw)
To: Jan Engelhardt; +Cc: hadi, Netfilter Development Mailinglist, Patrick McHardy
Jan Engelhardt wrote:
> On Sunday 2009-05-17 16:46, Pablo Neira Ayuso wrote:
>> With this policy, design errors accumulate along time so we learn the
>> lesson from our own mistakes and, then, we work on a new version 2 of
>> the API to resolve the accumulated issues after some time. This is how
>> I'm managing existing netfilter libraries. This policy makes the
>> developement of libraries/public interfaces slower but I think that
>> users are way happier (no binary breakages).
>
> With that policy we end up with the same crap that is happening
> in the kernel.
I didn't say that this was nice, it's functional :)
> Just because we magically managed to stuff lots of functions into an
> .so file does not make it public. It just so happens to save a bunch
> of kilobytes in all of the binaries that were previously statically
> linked to xtables.c, and was deemed one way to figure out how to deal
> with intrusive m_ipt. Sorry, but in all efforts that went in so far,
> I discharge libxtables having a stable API. For that, the iptables
> code is not beauty enough yet.
I think that we should prioritize backward compatibility versus beauty.
> Now, I had to just think of Xtables-addons that has a similar issue.
Indeed, actually I think that a stable ABI would make this easier for you.
> For the kernel modules, it uses a separate compat_xtables.c glue
> module that hides the hacks needed for older versions.
>
> Would tc profit from something similar for libxtables? It would gain
> the capability to work with iptableses potentially older than the
> reference point. But is that truly required? Upgrading userspace is a
> lot easier than the kernel. If a newer tc is installed on one's
> system, the user might just as well do so for iptables in the same
> run.
Sorry, I don't like that policy at all.
--
"Los honestos son inadaptados sociales" -- Les Luthiers
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: user-space xtables ABI [was Re: [Fwd: Re: iptables pull request]]
2009-05-17 16:12 ` Pablo Neira Ayuso
@ 2009-05-17 16:39 ` Jan Engelhardt
2009-05-17 16:59 ` jamal
0 siblings, 1 reply; 13+ messages in thread
From: Jan Engelhardt @ 2009-05-17 16:39 UTC (permalink / raw)
To: Pablo Neira Ayuso
Cc: hadi, Netfilter Development Mailinglist, Patrick McHardy
On Sunday 2009-05-17 18:12, Pablo Neira Ayuso wrote:
>Jan wrote:
>>jamal wrote:
>>> With this policy, design errors accumulate along time so we learn the
>>> lesson from our own mistakes and[...]
>>
>> With that policy we end up with the same crap that is happening
>> in the kernel.
>
>I didn't say that this was nice, it's functional :)
I am saying if we had learnt something then we should not do the same
in userspace.
>> Just because we magically managed to stuff lots of functions into an
>> .so file does not make it public. It just so happens to save a bunch
>> of kilobytes in all of the binaries that were previously statically
>> linked to xtables.c, and was deemed one way to figure out how to deal
>> with intrusive m_ipt. Sorry, but in all efforts that went in so far,
>> I discharge libxtables having a stable API. For that, the iptables
>> code is not beauty enough yet.
>
>I think that we should prioritize backward compatibility versus beauty.
And put a halt on evolvement. Compatibility is the ultimate killer
argument against about anything. Not that I am fuzzing over the
smallish int->bool changes, but potential larger changes.
>> Now, I had to just think of Xtables-addons that has a similar issue.
>
>Indeed, actually I think that a stable ABI would make this easier for you.
Not really. The currently release cycle of iptables is long enough.
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: user-space xtables ABI [was Re: [Fwd: Re: iptables pull request]]
2009-05-17 15:40 ` Pablo Neira Ayuso
@ 2009-05-17 16:48 ` jamal
2009-05-17 17:06 ` Jan Engelhardt
2009-05-18 14:18 ` Pablo Neira Ayuso
0 siblings, 2 replies; 13+ messages in thread
From: jamal @ 2009-05-17 16:48 UTC (permalink / raw)
To: Pablo Neira Ayuso
Cc: Netfilter Development Mailinglist, Jan Engelhardt,
Patrick McHardy
On Sun, 2009-05-17 at 17:40 +0200, Pablo Neira Ayuso wrote:
>
> There is an __attribute__((deprecated)) in gcc that displays a message
> during compilation time to warn that the software is using obsolete
> interfaces. Then, we can remove it 1 or 2 years later.
Also something runtime maybe on syslog (example what packet socket
used to do - complaining about tcpdump until they changed it).
I did forget to mention one thing which may sound extreme,
Documentation:
A document aptly named "ABI breakage" which outlines all revisions and
what they break. Maybe even an extra document called
"Deprecation" which announces what is going to break and when.
> In my case, it's been four years with the current library APIs and
> following an evolution approach as you have mentioned (adding new
> functions and obsoleting old ones but keeping them in the tree for a
> while). Now I'm doing more like a full re-design that needs the
> "revolution", no way to keep backward compatibility to resolve several
> issues.
I think there is room for revolutions with the caveat of ample warnings.
Like you said if you have been giving warning for 2 years about
something deprecating then you are absolved of dropping the interface.
> Still, people would be able to have both version 1 and 2 of the
> libraries installed in their computer so they can keep attached to old
> versions without breaking binary backward compatibility. I've been
> discussing this with a friend of mine that maintains a couple of
> critical libraries in the gnome project, it was nice to expose him my
> ideas and see that I was on the right track.
Good motivation to migrate from version 1 to 2 is always a key
factor. Give me some compelling reason to migrate. At the risk of
sounding politically incorrect: Example, IPV4 works just fine; add
NAT and you address the major sticking point and i dont care about
the fact that IPV6 has the insurance that i can slice bread with it
someday when i need to. OTOH, pay me some $$ per packet
(a .01 Canadian penny would do) and i will migrate to IPV6;->
On Sun, 2009-05-17 at 18:01 +0200, Jan Engelhardt wrote:
> For the kernel modules, it uses a separate compat_xtables.c glue
> module that hides the hacks needed for older versions.
>
> Would tc profit from something similar for libxtables? It would gain
> the capability to work with iptableses potentially older than the
> reference point. But is that truly required? Upgrading userspace is a
> lot easier than the kernel. If a newer tc is installed on one's
> system, the user might just as well do so for iptables in the same
> run.
If you give me a backward compat i would be happier. I think providing
backward compat in general is important for the reason that the API is
public.
If it is not public, then dont put it in libxtables otherwise I will
use it (and you should not complain;->)
The other side of the coin (point i am trying to make to Pablo above) is
once i get to be backward compat, I have zero reason to upgrade.
The only reason i would want to upgrade is the fear factor that in time
my old binaries will not work. And for that it is polite to give the
user ample warnings...
cheers,
jamal
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: user-space xtables ABI [was Re: [Fwd: Re: iptables pull request]]
2009-05-17 16:39 ` Jan Engelhardt
@ 2009-05-17 16:59 ` jamal
2009-05-17 17:11 ` Jan Engelhardt
0 siblings, 1 reply; 13+ messages in thread
From: jamal @ 2009-05-17 16:59 UTC (permalink / raw)
To: Jan Engelhardt
Cc: Pablo Neira Ayuso, Netfilter Development Mailinglist,
Patrick McHardy
On Sun, 2009-05-17 at 18:39 +0200, Jan Engelhardt wrote:
> Compatibility is the ultimate killer argument against about anything.
Once you have user of an API, that arguement becomes hard to defend.
It is certainly a lesson learnt on the development of the
internet: You cant just replace IPV4, TCP, NAT and a lot of other
protocols and practises that people are using. You can incrementally
"fix them". You can the parallel provide the new way (IPv6).
cheers,
jamal
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: user-space xtables ABI [was Re: [Fwd: Re: iptables pull request]]
2009-05-17 16:48 ` jamal
@ 2009-05-17 17:06 ` Jan Engelhardt
2009-05-17 17:11 ` jamal
2009-05-18 14:18 ` Pablo Neira Ayuso
1 sibling, 1 reply; 13+ messages in thread
From: Jan Engelhardt @ 2009-05-17 17:06 UTC (permalink / raw)
To: jamal; +Cc: Pablo Neira Ayuso, Netfilter Development Mailinglist,
Patrick McHardy
On Sunday 2009-05-17 18:48, jamal wrote:
>
>If it is not public, then dont put it in libxtables otherwise I will
>use it (and you should not complain;->)
Then let me submit this one...
parent e55cc4aaa6e35448c14370e5261c3387d26b257d (v1.4.3.2-3-ge55cc4a)
commit ec1794f80034c4cc0c99937d6208dcdaa3d87267
Author: Jan Engelhardt <jengelh@medozas.de>
Date: Sun May 17 19:01:10 2009 +0200
Move functions out of xtables.c which would contain the public API
---
Makefile.am | 14 +++++++-------
xtables.c => xtables_internal.c | 0
2 files changed, 7 insertions(+), 7 deletions(-)
rename xtables.c => xtables_internal.c (100%)
diff --git a/Makefile.am b/Makefile.am
index fd99098..5c883ba 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -18,17 +18,17 @@ lib_LTLIBRARIES += libiptc/libiptc.la
libiptc_libiptc_la_SOURCES = libiptc/libip4tc.c libiptc/libip6tc.c
libiptc_libiptc_la_LDFLAGS = -version-info 0:0:0
-lib_LTLIBRARIES += libxtables.la
-libxtables_la_SOURCES = xtables.c
-libxtables_la_LDFLAGS = -version-info ${libxtables_vcurrent}:0:${libxtables_vage}
-libxtables_la_LIBADD = -ldl
+lib_LTLIBRARIES += libxtables_internal.la
+libxtables_internal_la_SOURCES = xtables_internal.c
+libxtables_internal_la_LDFLAGS = -version-info ${libxtables_vcurrent}:0:${libxtables_vage}
+libxtables_internal_la_LIBADD = -ldl
# iptables, dynamic
iptables_SOURCES = iptables-standalone.c iptables.c
iptables_LDFLAGS = -rdynamic
-iptables_LDADD = libiptc/libiptc.la extensions/libext4.a libxtables.la -lm
+iptables_LDADD = libiptc/libiptc.la extensions/libext4.a libxtables_internal.la -lm
-iptables_xml_LDADD = libxtables.la
+iptables_xml_LDADD = libxtables_internal.la
iptables_multi_SOURCES = iptables-multi.c iptables-save.c \
iptables-restore.c iptables-xml.c \
iptables-standalone.c iptables.c
@@ -54,7 +54,7 @@ iptables_xml_SOURCES = iptables-xml.c
# ip6tables, dynamic
ip6tables_SOURCES = ip6tables-standalone.c ip6tables.c
ip6tables_LDFLAGS = -rdynamic
-ip6tables_LDADD = libiptc/libiptc.la extensions/libext6.a libxtables.la -lm
+ip6tables_LDADD = libiptc/libiptc.la extensions/libext6.a libxtables_internal.la -lm
ip6tables_multi_SOURCES = ip6tables-multi.c ip6tables-save.c \
ip6tables-restore.c ip6tables-standalone.c \
diff --git a/xtables.c b/xtables_internal.c
similarity index 100%
rename from xtables.c
rename to xtables_internal.c
--====
>The other side of the coin (point i am trying to make to Pablo above) is
>once i get to be backward compat, I have zero reason to upgrade.
If you have no reason to upgrade, you could use the exact iptables version
m_ipt was written for.
^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: user-space xtables ABI [was Re: [Fwd: Re: iptables pull request]]
2009-05-17 17:06 ` Jan Engelhardt
@ 2009-05-17 17:11 ` jamal
0 siblings, 0 replies; 13+ messages in thread
From: jamal @ 2009-05-17 17:11 UTC (permalink / raw)
To: Jan Engelhardt
Cc: Pablo Neira Ayuso, Netfilter Development Mailinglist,
Patrick McHardy
On Sun, 2009-05-17 at 19:06 +0200, Jan Engelhardt wrote:
> On Sunday 2009-05-17 18:48, jamal wrote:
> >
> >If it is not public, then dont put it in libxtables otherwise I will
> >use it (and you should not complain;->)
>
> Then let me submit this one...
[..]
> If you have no reason to upgrade, you could use the exact iptables version
> m_ipt was written for.
Ok, next steps is to convince all distros to continue support iptables.
If they did there would be no problem.
Surely, apart from trying to make the world a better place, you have to
feel some responsibility in this as well, no?
cheers,
jamal
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: user-space xtables ABI [was Re: [Fwd: Re: iptables pull request]]
2009-05-17 16:59 ` jamal
@ 2009-05-17 17:11 ` Jan Engelhardt
2009-05-17 22:09 ` jamal
0 siblings, 1 reply; 13+ messages in thread
From: Jan Engelhardt @ 2009-05-17 17:11 UTC (permalink / raw)
To: jamal; +Cc: Pablo Neira Ayuso, Netfilter Development Mailinglist,
Patrick McHardy
On Sunday 2009-05-17 18:59, jamal wrote:
>On Sun, 2009-05-17 at 18:39 +0200, Jan Engelhardt wrote:
>
>> Compatibility is the ultimate killer argument against about anything.
>
>Once you have user of an API, that arguement becomes hard to defend.
>It is certainly a lesson learnt on the development of the
>internet: You cant just replace IPV4, TCP, NAT and a lot of other
>protocols and practises that people are using. You can incrementally
>"fix them". You can the parallel provide the new way (IPv6).
The hurdle with IPv6 is just like patches that would add a copy of a
function with a slightly different signature or semantics: it would
be met with reluctance. I already given up on submission of
Xtables-addons modules to upstream for the same reason because there
are so much "no no"s coming back. I don't get it.
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: user-space xtables ABI [was Re: [Fwd: Re: iptables pull request]]
2009-05-17 17:11 ` Jan Engelhardt
@ 2009-05-17 22:09 ` jamal
0 siblings, 0 replies; 13+ messages in thread
From: jamal @ 2009-05-17 22:09 UTC (permalink / raw)
To: Jan Engelhardt
Cc: Pablo Neira Ayuso, Netfilter Development Mailinglist,
Patrick McHardy
On Sun, 2009-05-17 at 19:11 +0200, Jan Engelhardt wrote:
> The hurdle with IPv6 is just like patches that would add a copy of a
> function with a slightly different signature or semantics:
> it would be met with reluctance.
I think v6 is met with reluctance because it is a _revolution_.
It is a slight exageration on my part to equate the API churning
challenge to be of the same magnitude as protocols deployed in the
internet, however, conceptually the pain for someone who has to deal
with API changes is similar.
Imagine a user re-learning to remember the v6 addressing semantics
(analogy would be a user of an API having to learn new semantics).
And then factor in people who have already invested a gazillion $ and
time in V4 applications, equipment and infrastructure (anology will be
some corp who has deployed applications using old API).
NAT, OTOH, would be analogous to a patch on top of V4 which solves an
immediate problem - hence an evolution. NAT is so popular that even the
IETF has given up on trying to get the cat back into the bag.
What i am trying to say is: netfilter (hate to use marketing-speak) has
created an ecosystem; and with huge power comes huge responsibility;
every time ypu make small changes like APIs, you are providing guidance
to the distros about what you are no longer willing to support and
unintentionally screwing me (make me do more work).
> I already given up on submission of
> Xtables-addons modules to upstream for the same reason because there
> are so much "no no"s coming back. I don't get it.
It doesnt sound right to reject them if they dont kill backward compat.
cheers,
jamal
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: user-space xtables ABI [was Re: [Fwd: Re: iptables pull request]]
2009-05-17 16:48 ` jamal
2009-05-17 17:06 ` Jan Engelhardt
@ 2009-05-18 14:18 ` Pablo Neira Ayuso
1 sibling, 0 replies; 13+ messages in thread
From: Pablo Neira Ayuso @ 2009-05-18 14:18 UTC (permalink / raw)
To: hadi; +Cc: Netfilter Development Mailinglist, Jan Engelhardt,
Patrick McHardy
jamal wrote:
> On Sun, 2009-05-17 at 17:40 +0200, Pablo Neira Ayuso wrote:
>> There is an __attribute__((deprecated)) in gcc that displays a message
>> during compilation time to warn that the software is using obsolete
>> interfaces. Then, we can remove it 1 or 2 years later.
>
> Also something runtime maybe on syslog (example what packet socket
> used to do - complaining about tcpdump until they changed it).
> I did forget to mention one thing which may sound extreme,
> Documentation:
> A document aptly named "ABI breakage" which outlines all revisions and
> what they break. Maybe even an extra document called
> "Deprecation" which announces what is going to break and when.
That seems fine, although I'm not sure that users usually look at these
sort of files. I think that they wait until things break so they have to
put out the fire :).
>> In my case, it's been four years with the current library APIs and
>> following an evolution approach as you have mentioned (adding new
>> functions and obsoleting old ones but keeping them in the tree for a
>> while). Now I'm doing more like a full re-design that needs the
>> "revolution", no way to keep backward compatibility to resolve several
>> issues.
>
> I think there is room for revolutions with the caveat of ample warnings.
> Like you said if you have been giving warning for 2 years about
> something deprecating then you are absolved of dropping the interface.
>
>> Still, people would be able to have both version 1 and 2 of the
>> libraries installed in their computer so they can keep attached to old
>> versions without breaking binary backward compatibility. I've been
>> discussing this with a friend of mine that maintains a couple of
>> critical libraries in the gnome project, it was nice to expose him my
>> ideas and see that I was on the right track.
>
> Good motivation to migrate from version 1 to 2 is always a key
> factor. Give me some compelling reason to migrate. At the risk of
> sounding politically incorrect: Example, IPV4 works just fine; add
> NAT and you address the major sticking point and i dont care about
> the fact that IPV6 has the insurance that i can slice bread with it
> someday when i need to. OTOH, pay me some $$ per packet
> (a .01 Canadian penny would do) and i will migrate to IPV6;->
Well, shiny new features is the only thing that I can "sell" in this
case. Something like: "if you migrate from version 1 to 2, you will get
these set of new features in return". Of course, if they don't need
them, it's a hard sell ;).
--
"Los honestos son inadaptados sociales" -- Les Luthiers
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2009-05-18 14:18 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <4A0E9786.8060407@netfilter.org>
[not found] ` <1242566196.3996.23.camel@dogo.mojatatu.com>
2009-05-17 14:46 ` user-space xtables ABI [was Re: [Fwd: Re: iptables pull request]] Pablo Neira Ayuso
2009-05-17 15:14 ` jamal
2009-05-17 15:40 ` Pablo Neira Ayuso
2009-05-17 16:48 ` jamal
2009-05-17 17:06 ` Jan Engelhardt
2009-05-17 17:11 ` jamal
2009-05-18 14:18 ` Pablo Neira Ayuso
2009-05-17 16:01 ` Jan Engelhardt
2009-05-17 16:12 ` Pablo Neira Ayuso
2009-05-17 16:39 ` Jan Engelhardt
2009-05-17 16:59 ` jamal
2009-05-17 17:11 ` Jan Engelhardt
2009-05-17 22:09 ` jamal
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.