Hi Lukas, On Wed, Jun 19, 2019 at 01:44:26AM +0200, Lukas Tribus wrote: > Hello Willy, hello Tim, > > > On Sat, 15 Jun 2019 at 18:57, Willy Tarreau <[email protected]> wrote: > > > - ssl.cfg : 4 years with the most recent commit adding a > > > 'verify none' which is questionable. > > > > deleted, I agree with not spreading bad options by default. > > I disagree that the amount of the commits and its age are *the* metric > to measure the value of an example configuration. It's a fact that we > seldom make breaking changes to our config parser, that's a good thing > and it's why we don't need to update the example sections for every > stable release. We need to measure the merits of an example file based > on it's content. A short example configuration does not need frequent > updates and it's more useful, the *shorter* it is (as it focuses on > one aspect, allowing the user to quickly grasp the config-concept).
I generally agree with this. The problem I've had is that as usual, time for unimportant cleanups was only found at the end and that I stumbled upon these files again that I seldom find using git grep when looking for something and which have become mostly irrelevant or even misguiding users. So I preferred to get rid of them from this directory before these ones got packaged again and used as a starting point for many years, even if we reintroduce replacement files later. But I'm in favor of creating new files if needed, maybe better organized if needed, or even reintroducing a few of them after a lift up or as-is. We don't break any stable release by adding doc, we can by removing some in the stable cycle. I'd have gone even further to be honest if I could have sent earlier notification, and for example I think that the whole "tests" directory should be deleted now. > Of course we need to discuss the removal of obsolete ones, which > brings me to the second point: > > Could we allow some more time for such things to be discussed? A few > working days instead of less than 2 hours? I get it, you wanted it > done in 2.0, but that's not what I'd call asking for objections. Agreed, that's a direct result of my point above. I was checking the places where the linux2628 target was mentioned, ended up on the old spec file (which one person privately asked me to reintroduce since it does work out of the box for them, so at least it's a confirmation it's still OK even after so many years without any maintenance). I think this time we could try to perform more aggressive cleanup early in the cycle for 2.1 so that it's less of a last-minute surprise (for example the tests directory might still contain some junk). > In the specific ssl example, yes, the "verify none" directive does not > belong there, instead, it should have been a ca-file directive. Other > than that, I don't see neither why this example would be outdated, We can remove the global maxconn directive as well. > nor > where we could point people asking the extremely specific "howto ssl?" > question instead. Indeed. > > As history has shown the examples tend to be neglected. > > History has also shown that documentation is neglected. But we can > point people to specific examples, just as we can point people to > documentations. > > That's why we need examples. To point people to them when they ask. That's precisely why examples were added in the first place, though I remember having left some very old ones there for a while dating from before the frontend/backend split, doing horrors using cookies and chaining multiple layers this way, that I definitely didn't want anyone to discover anymore. > > if you start from the need to implement something, you search > > it in the architecture manual and you copy-paste a look-alike > > config that you can then extend. > > I was unaware that that's your intention with the architecture manual, > I always saw it as an explanation of basic load-balancing concepts > applied to haproxy (principal features like load-balancing and health > checking), but I realize now what you mean. The original goal of the architecture manual was to achieve something I've found in other product's architecture manuals that I had found extremely useful in the past : you've just unpacked and plugged your new product, you're in front of it with zero config, you open the manual and think "let's find an example looking more or like the architecture I'm trying to deploy", then you copy-paste a more or less matching example config, possibly have to deploy some config on external components as well, and from this you can continue to adjust your config. > However for a 1400 lines document with 4 commits in the last 10 years, > all 4 of which typo/spelling fixes only, we cannot exactly claim > success. That's why I wanted to kill it a long time ago and to replace it with the wiki. There's normally a note at the top of the architecture manual saying something like "this is obsolete, don't use it". > If we want to retire the examples/ directory and put everything in one > file, we probably need to revamp the architecture manual completely > and create something that Cyril can use for the HTML converter. I just want to totally kill this manual. *Everything* in it is obsolete. But when I suggested to kill it a few years ago someone told me "if you kill it before replacing it, nobody will be able to use it as an inspiration to create the new one". That's fair in my opinion, though over the years it didn't work well either. > Otherwise and in its current condition, people are probably not gonna > find it, and we'd also have a hard time referencing single examples in > there. > > I'm really not sure if this is all worth it and quite frankly, don't > get the problem with single example files in the examples/ directory. > Explanations can be inline with the configuration, so it's even > lighter to read than an example in the architecture manual. Sure. > I'm not sure about the gh-wiki, I don't know how it works technically I think that the usage doc (typically the arch manual) should not be specific to one version, otherwise it slowly dies like the arch manual that was written for 1.1.something. The wiki may continue to be updated (once it does contain enough value for people to be interested in improving/fixing it). > and I'm a bit afraid that we don't have the actual content in *our* > git repositories. Also unsure about if we really still own the content > once we put it up there. These are fair concerns. My understanding was that these are stored in a different git repo that we can download. It's just the wiki which creates the commits each time you update. Ah indeed, the repo is "haproxy.wiki.git" there. > This is different than feature requests or > issues, because those are processes that start and end, while > architecture guides and everything referenced in the "Proposed plan" > is mostly here to stay and they are also *a lot* of work. When I > scrolled through the "proposed plan" I felt like this could be the > content for 2 or 3 books. Agreed, and it's clearly obvious everyone is terrified by the idea of doing anything there, just like it was a pain for me to write a plan. > Of course, simple example configurations are > not that valuable, but still, I'm unsure about that wiki. In fact if you look at the existing (dead) architecture manual, you'll find lots of ASCII art architecture examples. We can't ask people nowadays to provide network diagrams in ASCII art. And such diagrams are really important for such a manual. That's why I do think that a wiki is a good trade-off for this. I do also like the format of what is displayed on projects using "readthedocs" (which looks quite a bit like Cyril's doc by the way). I just don't know how to do something like this. Do you think we should reintroduce some simple updated example files in the examples directory based on usage ? For example we could have : - ssl-offload - ssl-to-server - ipv6-to-ipv4 - h2-to-http1 - server protection (maxconn, timeouts, etc) - sidecar ? Also we should indicate in such files which minimal version is expected for these to work, and at what date they were significantly updated. I prefer that users ignore an outdated file than to use it then figure it's too complicated for their simple use case while easier options are available (still thinking about the old 3-layer cookie-based config at an era where we have use_backend and use-server...). If such contents may be produced, wouldn't they be copy-pasted into the wiki with a bit of explanation ? If not, why ? Maybe the proposed plan is too scary to get anyone started ? I wanted to move it on a side so that people don't feel forced to follow it too much that that we can start to re-arrange contents later. I'm still totally open to suggestions. While I actually *like* to write doc, I don't have enough time to assign to this task anymore these days, and I'm torn between starting some doc myself and becoming a huge bottleneck for the rest of the project, or ensuring most people with knowledge of use cases can participate to this doc. The thing is that in this last case it must be sufficiently organized so that we do not create too much deviation between various people's practices. Cheers, Willy

