Replace Wikitcms(?) #893
Labels
No labels
agile
anacondawebui
arm
blockerfe
Closed As
Duplicate
Closed As
Fixed
Closed As
Invalid
Closed As
Wontfix
Closed As
Worksforme
coreos
criteria
defect
easyfix
enhancement
iot
meeting
meta
onboarding call
proventesters
retrospective
silverblue
sponsor
test cases
test days
wiki
ai-review-please
Backlog Status
Needs Review
Backlog Status
Ready
chore
documentation
points
01
points
02
points
03
points
05
points
08
points
13
pr2jira
Priority
Critical
Priority
High
Priority
Low
Priority
Medium
Sprint Status
Blocked
Sprint Status
Done
Sprint Status
In Progress
Sprint Status
Review
Sprint Status
To Do
Technical Debt
Work Item
Bug
Work Item
Epic
Work Item
Spike
Work Item
Task
Work Item
User Story
No milestone
No project
No assignees
4 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
quality/tickets#893
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Wikitcms is my semi-tongue-in-cheek conceptualization of the longstanding system we have for doing release validation testing via the wiki. Starting way back in the mists of time with small, hand-written-and-schlepped-about pages of wiki tables, we've over time developed a wacky and somewhat-sophisticated mechanism that essentially (ab)uses the wiki as a programmatic and interactive interface for both displaying and submitting test results.
This is, on one level, clearly insane, but on another level, works so irritatingly well that every time we've previously thought about replacing it, we've decided against it.
The Age Of AI Scrapers might be another time it's worth thinking about replacing it, though, because the wiki is a very attractive target for them. It's also a big, awkward, and fundamentally-kinda-insecure thing that infra dearly wants to get rid of, but which Wikitmcs is one of the larger reasons they can't.
So...thoughts?
In the past we've tried various 'off-the-shelf' TCMSes, many of which don't exist any more. Nitrate is one that still exists. We've generally found these both too big and too opinionated for our needs, though; they tend to be designed around workflows that don't really match what we do with validation testing.
Extending testdays-web to also handle release validation is another option.
A third is to build something specific, as light as possible, probably based around resultsdb for result storage and...what, maybe a static site generator?...for interactive display and submission.
There's kinda a few elements to consider here:
relval report-results. Potentially we could add other methods too, but not sure it's needed?This is really more of an epic than a task, but for now, filing this ticket so we can kick it around. If we come to any decisions we can split up the work into more tickets, obvs.
@kevin FYI
@adamwill wrote in #893 (comment):
Wow, I have never expected this to be coming, yet it's here. I support the idea, as I have always found Wiki (not Wikitcms) too complicated to navigate. So yeah, I am in for it.
This problem has not disappeared. We still will have it. We have expectations about stuff that has been preventing us from using anything else. Therefore, I'd not try to adopt another TCMS out there, but I'd vote for something new, tailored to our needs. In the time of vibe-coding, this does not have to be too much of an obstacle any more. As I have seen, models are very good in doing web stuff. I am not sure if vibe-coding is the preffered way here, though, but it could help us get an AI task.
I would, personally, go this way. I love static site generators because they are easy to work with, powerful in terms of web building, and they build safe pages where attackers have nothing to do.
Asciidoc supports tables, such as
so it could be used to generate the output through some Asciidoc builder. With static generators, however, I have been using markdown or ReST, which I'd prefer. ReST offers something called a
list-tablewhich is used to generate a table out of a list which would be pretty easy to generate and probably also quite easy to read as a code. Or edit in a template.However, I am not sure at the moment, how the static page would handle results reporting? From the top of my head, I could think of a back-end that would accept the result from a link generated for each field, so clicking the link would report the result. In that case, we'd need a login, I suppose. I am not sure about it though.
Can resultsdb entries be edited? Or is it just dump a result and show it later?
I would like to also support a CLI non-interactive (programmatic) submission of the results, such as
relval report --matrix Installation --group Virtualization --testrow Libvirt-42 --result pass, or via a json file, etc.I agree that the current wikitcms system is getting complicated for writing/reading results, so I'm glad we're thinking about this for the future. I've also noticed that when I submit results from cloud automation, I sometimes get randomly blocked for a few hours. So I'm glad we're thinking about this for the future.
On one hand, this will be used primarily by our team, so I understand that using a full TCMS (I think its dead now) or something like ReportPortal (used here internally) might be "too big" for our needs.
On the other hand - is building this from scratch really simpler than adapting an existing solution? Maybe worth checking how ReportPortal is used internally and whether they could set it up publicly for us (including maintenance).
😑
Aside from that, reading the install guide makes it look a lot like it's focused around agglomerating and doing stuff to automated test results, which is not what we're doing here.
Possibly you can submit results via the REST API, but then, the tool isn't really giving us a whole lot, I don't think? We'd still have to build a UI people could click on to generate an API call to submit the result to the tool...
Yes, this is why I like the idea too.
I wasn't talking about the layout of the matrix pages, which should indeed be fairly easy to achieve in various formats. I was talking about test cases themselves. Some of them use dynamic template transclusion quite heavily - that is, the final test case pages are built out of templates and the behavior of the templates themselves depends on arguments they're passed. https://fedoraproject.org/wiki/QA:Testcase_upgrade_dnf_current_workstation_encrypted is a good example - look at the rendered version of that, now here's the 'source':
and here's the "source" of one of the templates it uses:
aside from being a nightmare to write (whitespace is significant in wikitext, so you can't split it across lines and indent, so you wind up counting sets of two and three curly braces in your head a lot...), it works quite neatly, and is probably hard to replicate in less-insane but also less-capable syntaxes. (Jinja might actually do most of it? Not sure, and not sure about asciidoc). But if that's the biggest problem we can just bite the bullet and live without it, I think.
edit: oh, it's dynamic because if you change one of the template pages in mediawiki, the pages that use that template instantly reflect the change. This is handy for e.g. release numbers, as soon as we update CurrentFedoraVersion , all test cases that refer to it are instantly updated.
I was figuring we'd sort of cheat here, and the 'report' button (or whatever) would be a link to...something that lets you submit a report into resultsdb and somehow handles the authentication. Maybe that specific little bit needs to be dynamic, the way people write mostly-static sites with dynamic comment sections...
This is entirely possible in Asciidoc. At the basic level, it provides attributes, which act as variables that are substituted during rendering. You can define them in the document or pass them externally, making them suitable for simple parameterization.
It also supports conditional logic (if/else style constructs), allowing limited dynamic content based on attribute values.
For reuse and composition, AsciiDoc offers includes, so you can build documents from modular parts while sharing variables across them.
So that would work exactly as I'd have expected. Thanks.
@lruzicka wrote in #893 (comment):
Yes, but the actual rendered docs that people read aren't magically updated when you update the templates. You have to do a render+publish cycle. That's the bit that's different with mediawiki, which I'm using the term 'dynamic' for. It's less of an issue than it used to be now we have nice tools for doing automatic rendering and publishing, of course.
A year ago I'd say that there's no chance we can create a custom solution (outside of a Google Sheets wrapper). But recently the Jaroslav+Claude duo have been so productive that we might actually be able to 😀️ Whether it's a good idea, that's a different question. It depends on how desperately Infra wants to kill wiki. Because if we invest time into replacing something that works, we won't be able to do lots of other useful (and perhaps even more useful) stuff instead. This might be a good topic for a team Flock discussion.