Hi David, thanks, I see your points, I have just a few acknowledgements/comments to add
On Tue, Dec 21, 2021 at 7:42 PM David Jencks <david.a.jen...@gmail.com> wrote: > > Hi Zoran, inline after extracting a couple of concrete proposals. > > 1. I’m going to open a website issue and PR for publishing the site manifest > with the site, to enable immediate quick local “xref check” builds without > needing to build the full site. +1 > 2. I’m going to open a website issue proposing checking in the build UI > bundle. This is a different solution to the problem than PR#537[1], and is > certainly open to debate. +1 I see the difference between PR#537 and what you're suggesting; and the convenience build/setup wise your proposal brings, in the end a `raw` url from GitHub will give us the same advantage of publishing the artifact as proposed in PR#537. So let's give it a try and see if we actually do notice any downsides. > 2. I’m going to open a website issue to move the site publishing to a > separate repo +1 if we're arguing that the website source repository should be lighter to checkout; the keeping of history I'm a bit hesitant about because of the size increase of the git repository with every/most changes > 3. I’m going to start on a PR for the user manual to document how to do local > builds. +1 thanks! > My comments on why below... One more comment inline asking for other folk on the ergonomics of documenting the workflow, it'd be nice to hear from others > > On Dec 21, 2021, at 1:55 AM, Zoran Regvart <zo...@regvart.com> wrote: > > > > Hi David, > > > > On Mon, Dec 20, 2021 at 10:23 PM David Jencks <david.a.jen...@gmail.com> > > wrote: > >> > >> (Mostly general info, everyone please read) > >> > >> Hi Antonin, > >> > >> Sorry, somehow I missed this earlier! > >> > >> This work should help with that issue. I’m finding it really great for > >> stuff I do, it’s also really easy to adapt to create a website PR for > >> integrating lots of branch changes, cf. > >> https://github.com/apache/camel-website/pull/729 > >> <https://github.com/apache/camel-website/pull/729>. > >> > >> I’m going to be working on my “referential integrity” idea next (unless > >> more documentation fires break out :-). This will touch every active > >> branch of every subproject, and unless someone objects I’m going to > >> install the local-build stuff everywhere to make it easier for myself :-), > >> so it should soon be pretty easy for everyone to try it on their favorite > >> parts of camel. > > > > +1 this is great work and it'll help us in the long run. I think > > you're doing it carefully and conscientiously taking into account not > > to be disruptive. Did we already update the README's, so folk > > understand how to use `local-build.sh`? > > Not yet, but I think this is going well enough to assume we'll keep it. I > think the best will be if I have detailed instructions in the “working on the > website” page in the user manual and very short directions in each subproject. > > Would it be a good idea to make the local instructions named so they are > obviously instructions, maybe README_local_build.adoc? I never know what to > expect from a README :-) Any thoughts from others, I think it's important that folk find the instructions where they'd expect them first > > > >> It’s not a problem for me since I basically only work on the website, but > >> I would imagine two major annoyances of the current system for everyone > >> else are: > >> > >> (1) You have to build the full site at least once, which takes annoyingly > >> long (7 minutes?). > >> (2) You have to build the UI locally, which is tricky on non-linux systems. > >> > >> For (1), building the site manifest as part of the regular website build > >> so the latest can always be downloaded would make it so you can always do > >> a quick local partial build, although you won’t get a very usable local > >> website: just the local stuff will be there locally. It would detect the > >> same errors as a the current local build, but not xref problems into the > >> local changes: this (currently) requires a full build. > > > > Still, I think this is a great step forward, we can detect some issues > > early and quickly, I'm sure we can improve to detect most issues in > > subsequent refinements > > I think there are 3 cases for local builds: > > 1. You just want to check for errors as quickly as possible. I think this is > what most people want to do most of the time. We might even be able to get > maven to run this. Having the site manifest served from the live site (or > some other location) is needed for this. > 2. You are actually working on the docs and want a quick continuous build of > a subproject, and don’t mind having to do a full build first (maybe 7-8 > minutes). This is what the current `./local-build.sh` does, after a > `./local-build.sh full`. This detects xref problems out of the subproject but > not into the subproject. > 3. You want to check for all xref and other problems with your local changes. > This is what the current `.local-build.sh full` does. > > We don’t support (1) yet, likely by far the most common case. So, I propose > we start by publishing the site manifest. I can’t see any downside…. we can > always stop. > > > > >> For (2), one simple option is just checking the built UI bundle into git. > >> > >> A further annoyance that I experience is that the built website is checked > >> into a branch of camel-website. This means whenever you pull > >> camel-website, you get the latest published website which is a lot of > >> changes, along with the tiny changes that might or might not have occurred > >> since your last update. > > > > Nicola touched upon this in PR#537[1], would that be a better option? > > #537 is about publishing the UI bundle, not whether the asf-site branch to > publish the website is in the same repo as the antora and hugo build > machinery. > > I think that #537 would be materially less convenient and slower and harder > for everyone. It’s definitely a possibility. Here’s my comparison, checking > in bundle vs. publishing bundle > - The main build can continue to rely on the yarn workspace coordinates for > the bundle, as can local builds… vs…. either the main build and local builds > use different playbooks or the main build has to deal with getting the > released bundle. > - A camel-website clone or pull/update will come with the latest (or at least > recent enough) UI for local builds… vs… an additional fetch operation is > needed for all builds, which is slower for everyone. > > However, IMO some way of doing a local build without having to locally build > the UI bundle is needed. I think by far the easiest is to check in the built > bundle, but I don’t really care how we do it. > > > > >> I would like us to move the published website to a different repo. This > >> would also allow us to keep the website history, which would partly solve > >> the problem of docs for outdated component versions that we’ve dropped > >> from the active website. I also think from some comments about the old > >> svn site publishing system that infra expects website history to be > >> preserved, although I haven’t asked explicitly. I’ve set this up in a > >> couple other projects, and it’s pretty easy to do. > > > > I've chatted with INFRA a while back about the size of the git > > repository that was causing issues with the publish, and the > > workaround for that issue was to do what we do now and squash the > > commits before pushing. If we preserve history I think we'll end up > > with the same issue again. I don't understand the need of having the > > history of the website build result preserved, given that the output > > is optimized, changes can be seen much clearer and easier in the > > website sources. And I don't think there is much difference in having > > a separate repository vs a separate branch for publishing. > > > > My main motivation for proposing this now is that we’re going to have > everyone working on the docs cloning or pulling the camel-website repo, and > no one needs the publishing branch. Even if there are no changes in the > antora or hugo stuff, there’s still a several-second download of the latest > site content. This is, at least to me, annoying and confusing. I’d like it > if, when there are no changes to the stuff that builds the site, nothing is > pulled: I can be confident that I don’t have to investigate anything further. > Therefore I want to move the published website to a separate repo. > > If we do this, we have the option of keeping history or continuing to squash > it. > - Either way, we only need to get the repo at depth 1, with no history. > Therefore I think the git traffic and speed would be the same. Does Jenkins > have some caching that invalidates this argument? > - We’ve discussed somewhere the problem that we want to keep the website > build reasonable fast but by pruning old doc versions we make old releases > undocumented. If we keep the website history then one solution to this is to > check out an appropriate vintage commit and look at it with a local httpd. > There’s no practical way to build an old version of the site, and this would > give the docs as they existed. Something else we might do is to tag > published site commits just before we remove a doc version. Even if we > squashed history, this would keep those specific versions available. If we > kept history, tags would provide some way to find the revision you are > interested in :-). > > So, I want to move the publishing to a separate repo to make local builds > quicker: doing so also provides room for discussing keeping history, which > might or might not be a good idea. > > > 2c > > > > zoran > > > > [1] https://github.com/apache/camel-website/pull/537 > > -- > > Zoran Regvart > -- Zoran Regvart