Skip to content

PoC: Mount CHAOSScon 2026 Europe content from chaoss/website#17

Open
Titas-Ghosh wants to merge 3 commits into
chaoss:mainfrom
Titas-Ghosh:poc-chaosscon-2026-submodule-mounts
Open

PoC: Mount CHAOSScon 2026 Europe content from chaoss/website#17
Titas-Ghosh wants to merge 3 commits into
chaoss:mainfrom
Titas-Ghosh:poc-chaosscon-2026-submodule-mounts

Conversation

@Titas-Ghosh
Copy link
Copy Markdown
Contributor

Summary

This is a proof of concept for importing CHAOSScon content from chaoss/website using a shallow Git submodule and Hugo mounts/cascade.

It follows the direction discussed in #15: start with a Git submodule approach first, validate the Hugo Mounts + Cascade pattern, and use CHAOSScon/2026Europe as the initial test case.

What Changed

  • Added chaoss/website as a shallow submodule under external/chaoss-website
  • Mounted selected files from CHAOSScon/2026Europe into Hugo content routes
  • Added cascade titles for mounted CHAOSScon pages
  • Mounted upstream images/slides/prospectus files as static assets
  • Marked the old WordPress-exported chaosscon-2026-eu.md page as draft to avoid URL collision
  • Documented lightweight submodule setup in the README

Generated Routes

This PoC generates:

  • /chaosscon-2026-eu/
  • /chaosscon-2026-eu/agenda/
  • /chaosscon-2026-eu/travel/
  • /chaosscon-2026-eu/faq/
  • /chaosscon-2026-eu/committee/
  • /chaosscon-2026-eu/event-details/
  • /chaosscon-2026-eu/event-location-time/
  • /chaosscon-2026-eu/info-for-speakers/
  • /chaosscon-2026-eu/speakers/

Testing

Tested locally with:

git submodule update --init --depth 1 --filter=blob:none external/chaoss-website
git -C external/chaoss-website sparse-checkout set CHAOSScon/2026Europe
hugo --cleanDestinationDir --printPathWarnings --printI18nWarnings

Build completed successfully.
Verified mounted content appears in generated output:

  • Homepage contains About CHAOSScon
  • Travel page contains Visiting Brussels
  • FAQ page contains Frequently Asked Questions

Screenshots

Mounted CHAOSScon homepage
chaosscon-homepage

Mounted travel page
chaosscon-travel-page

Build verification
Screenshot 2026-05-08 033303

Known Notes

The upstream CHAOSScon/2026Europe/schedule.md currently has a malformed HTML comment (<--! instead of <!--), so the agenda page renders that comment text. This PR leaves upstream content unchanged and focuses on proving the submodule + Hugo mount pattern.

The existing unrelated Hugo warning about duplicate governance/index.html still appears during build and is not introduced by this PR.

Signed-off-by: Titas-Ghosh <titas.ghosh7@gmail.com>
@Titas-Ghosh Titas-Ghosh force-pushed the poc-chaosscon-2026-submodule-mounts branch from 8893dae to 674819d Compare May 7, 2026 22:41
@MoralCode
Copy link
Copy Markdown
Contributor

MoralCode commented May 7, 2026

Sounds good! I'll probably take a closer look tomorrow, but one thing that may be good is to verify alignment with the official CHAOSScon 2026 EU pages on https://CHAOSS.community.

I suspect most of the subpages are fine, but I'm curious if theres any extra paths here that aren't present on the main site.

The sparse checkout can also cover all the CHAOSScon pages since those will eventually also need to be added anyway.

If theres a way to encode the sparse checkout in the .gitmodules settings (git submodule add) so that theres a simpler checkout and build process, that would also probably help with on boarding (even though this is always going to be the more technical side of the CHAOSS static website)

Signed-off-by: Titas-Ghosh <titas.ghosh7@gmail.com>
@Titas-Ghosh
Copy link
Copy Markdown
Contributor Author

Thanks for taking a look! @MoralCode

i pushed a follow up commit addressing the route alignment point. I checked the official CHAOSScon 2026 EU page structure and removed the extra generated subpaths that are not currently present on the main site. The PoC now only generates the public facing paths:

  • /chaosscon-2026-eu/
  • /chaosscon-2026-eu/agenda/
  • /chaosscon-2026-eu/travel/
  • /chaosscon-2026-eu/faq/

I also updated the README sparse checkout command to cover all CHAOSScon content instead of only CHAOSScon/2026Europe, since the other CHAOSScon pages will likely be added later too.

For the .gitmodules sparse checkout point: i kept shallow = true encoded there, but from what i can tell, Git does not have a standard .gitmodules setting that fully encodes sparse checkout paths. So the README now documents the sparse checkout step explicitly.

@MoralCode
Copy link
Copy Markdown
Contributor

re: route alignment, it looks like theres a event_location_time.md file in the website repo whose content is supposed to be part of the event "homepage" (/chaosscon-2026-eu/) underneath the navigation and description. Do you know if/how this can be accomplished with our hugo mounts setup?

@Titas-Ghosh
Copy link
Copy Markdown
Contributor Author

Thanks for pointing that out! @MoralCode, i looked into this on the official site, the event_location_time.md content (Where, When, Live Streaming, Registration) is rendered inline on the /chaosscon-2026-eu/ homepage below the About description, not as a separate page.

Hugo mounts map one source file → one content path, so we can't directly merge two .md files into a single _index.md. But we can handle this a couple of ways:

  1. Mount event_location_time.md into assets/, then use readFile + markdownify in a section specific layout to render it below {{ .Content }} on the homepage. This keeps the upstream file untouched and pulls it in at build time.

  2. Create a custom layout for the chaosscon-2026-eu section that uses readFile to append the event details block after the main content.

i think option 1 is the cleanest since it doesn't require any upstream changes, i can push a follow-up commit to implement this, would that approach work for you?

@MoralCode
Copy link
Copy Markdown
Contributor

it would be nice to not have "extra" pages be on the site just because this file is present, even though its being copied into another file.

can we use the config we are already using to mount the paths to set the front matter such that the page doesnt appear on the site, but also use a custom layout for these main pages (also through said mount settings) that will look for a specifically named file and readFile + markdownify it after the content?

@Titas-Ghosh
Copy link
Copy Markdown
Contributor Author

That makes sense @MoralCode , i'll implement it that way. So the plan would be:

  1. Mount event_location_time.md into the content tree as before
  2. Use cascade to set _build.render = "never" on it so it doesn't generate its own page
  3. Use cascade to assign a custom layout (e.g., chaosscon-home) to the section _index.md
  4. That layout renders {{ .Content }} (the About text) and then uses readFile + markdownify to inline the event location/time content below it

so shall i push this in a follow up commit.

@MoralCode
Copy link
Copy Markdown
Contributor

That sounds reasonable yea, go for it!

@Titas-Ghosh
Copy link
Copy Markdown
Contributor Author

sounds good, thanks for confirming!
i’ll push this as a follow up commit, will keep it scoped to the homepage behavior

Signed-off-by: Titas-Ghosh <titas.ghosh7@gmail.com>
@Titas-Ghosh
Copy link
Copy Markdown
Contributor Author

Pushed the commit @MoralCode, implementing the homepage inline approach we discussed:

  • mounted event_location_time.md into the Hugo content tree
  • added build.render = "never" for that mounted path so it does not generate a standalone page
  • added a chaosscon-home layout for the CHAOSScon 2026 EU section homepage
  • the layout renders the normal homepage content first, then inlines event_location_time.md underneath using readFile + markdownify
image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants