Web Origami, for making websites where you can understand how they’re made
76 comments
·December 13, 2024chefandy
zwnow
Whats wrong with just using HTML, Js and CSS for personal projects?
sabellito
I do that. Duplicating the header, menu, and footer manually on every page is a pain in the ass. Not to mention the lack of minification.
hereonout2
Not sure I follow, do you not use templates and scripts to generate the static pages?
I was a web developer 25 years ago and for the majority of projects we only made static sites, all templated and minified. My skills are somewhat "of that time".
Recently I was asked to build a site to demonstrate some new software. It consisted of over 10k pages that once built would rarely, if ever be updated.
I just scripted and templated the generation of every single page hosted it in S3. This may sound ridiculous in this day and age but it takes a few minutes to rebuild and update the entire site.
Guess my point is I don't really find duplicating things to be a pain in the ass
animex
I think this issue better addressed in HTML spec. Basic functionality to include html snippets files in other HTML files should be standard. What am I missing?
schwartzworld
Serverside includes are a thing in Apache or nginx.
If you don’t mind a little coding, it wouldn’t take long to build a tool that lets you store the bodies as template files, wraps them in the header/footer, and minifies them.
Even less effort is pandoc’s standalone mode which lets you provide a wrapper template.
plonq
Why do you care if your personal site is minified?
johnisgood
You can just have git submodules for that.
chefandy
Nothing, if they’re simple enough to do that. Not all of them are. I’m a commercial artist and designer, so things like layout are important and need to be updatable on multiple pages because individual pieces often have their own pages. Updating 15 nav headers in a gallery on your site to save a couple of hours setting up something better suited to the task is just terrible architectural planning. At the same time, I don’t need an embedded rich text formatter and CDN support and azure integration and blah blah blah. Use the right tool for the job, and my job often calls for something ostensibly like this, which fits a neat niche.
zwnow
Yea my point was that people love to overcomplicate their stuff. Having a whole infrastructure for a personal project that isnt even started yet is insane.
deanebarker
So... it's a static site generator? I've looked through the site, but I'm having trouble putting it in context. Sounds like it takes data and turns it into a static website. Is that right?
JeremyBarbosa
That's how I read it too? And while the documentation has lots of examples, I get a bit lost in that you start with some form of JSON file, which consumes either YAML or HTML files, who in turn can consume Markdown files. It doesn't seem (from my reading!) to have the level of abstraction I would expect from a SSG.
bryanrasmussen
so, you're saying the claim of making websites where you can understand how they're made doesn't seem to hold up?
null
turnsout
Interesting, and I love Static Site Generators (SSGs), but as soon as you introduce branching and logic to the page creation, you've effectively ruled out non-programmers. So I don't know how it will achieve the stated goal of "a language for making websites where you can understand how they're made."
The audience you're left with (programmers) will bristle at the DSL and wonder why they don't just use "___" <-- fill in their favorite SSG.
xrd
I love this.
And, I have my own take on it.
My static site generator Svekyll (https://extrastatic.dev/svekyll/svekyll-cli) has an option you can add to the _config.yml: "view_source"
If you do that, it provides a link at the bottom of each post which says "view source to this post" If you click on that, you can see all the files used to generate that post, and then download a zip which is a fully packaged tiny svelte app that builds into that blog page.
For example, this blog post on embeddings has a bunch of svelte components, embeds an embedding model right inside the page and runs it via JavaScript. If you scroll all the way down, you can download the zip file, unzip it and run "npm i && npm run build && cd build && npx http-server -o" and you can see the fully built blog.
https://webiphany.com/2024-04-29-distance-sean-shawn
PRs describing this feature:
https://extrastatic.dev/svekyll/svekyll-cli/-/merge_requests... https://extrastatic.dev/svekyll/svekyll-cli/-/merge_requests... https://extrastatic.dev/svekyll/svekyll-cli/-/merge_requests...
bqmjjx0kac
This site would benefit from a comparison with other static site generators.
I dare say it's not that difficult for a programmer to roll their own SSG with whatever is at hand.
Does it have any clever properties that naive solution wouldn't?
* Like reproducible builds or incremental/cacheable builds?
* Does it require the entire site fits in memory at build time, or can it generate terabyte-sized sites without breaking a sweat?
OuterVale
I'm using Origami on my website over at https://vale.rocks. I recently did a brief writeup about the implementation of my site, including touchings on Origami. I'm really loving it!
johnisgood
When I scroll down, the "VALE" stuff goes above the menu, making both unreadable. Might want to fix that.
OuterVale
Could you please elaborate on exactly what you're experiencing? Include your browser/OS if possible. Thanks for letting me know!
johnisgood
https://i.imgur.com/tfB0qsa.png
Does this help? This happens as I scroll down till it is over the menu.
I am using Vivaldi 5.7.2921.65 (Stable channel) stable (64-bit).
nullbyte
This looks great! I love the simplicity of the syntax. I feel like other static site generators can get too crazy with syntax and features, making it hard to learn. I think Origami is really nice in comparison. Also great looking docs.
weego
The metaphor is strained at best, and confusing at worst. It's a very high-concept pitch and so is the technical documentation, but the use case is aimed at people doing something, ultimately, very simple. I'm not sure that friction works at all.
null
j45
Unnecessary complexity can decrease the shelf life and lifetime of a piece of software.
Best to keep it simple to let any complex needs arrive on their own, instead of prematurely complicating things.
wackget
> The Origami language syntax is relatively simple and intended for people who have some experience working with HTML and CSS. Knowledge of JavaScript isn’t required, although if you do know JavaScript you can do a lot with Origami.
So you need to learn HTML and CSS so you can use Origami to... avoid building a site with HTML and CSS?
OuterVale
It isn't at all about not building with HTML/CSS. It's a language that makes building with HTML/CSS and other web standards easier.
msdundarss
Thanks for making it open-source!
My interest in this is piqued. I’m really happy to see people doing things to simplify personal standalone website authorship making it expressive and flexible without a bulky content management system or jumping through hoops for some front-end toolchain. I know when I’m developing things I’m often as or more concerned with satisfying multiple use cases or functionality extensibility, but having a nice focused tool polished for one use case is nice. When I was deep in web dev and had my machine set up with a selection of go-to docker setups for different dev needs and the knowledge of how that all needed to be orchestrated was fresh in my mind, deploying most of the SSGs or whatever seemed trivial. Now in the odd event that I have a personal project or whatever that indicates more than just a few static handmade pages, the first thing I do after looking up what todays web world consider to be the “obvious” best tools and practices is see how many people are asking about counterintuitive config issues or other getting-started type problems. As cool as whatever application might look, I know I’ve got about two good hours in me of recall, research and troubleshooting before I just say “fuck it. Guess I didn’t want to do that project anyway.” The point of those tools is to save time and energy — you don’t have to get very far outside “the loop” for it to take more effort than it’s worth to get back in for a lot of them. Simple tools for simple tasks are great when you know you’ll never ever need built-in hooks to wrangle graphql queries and automatically invalidate CDN caches and generate 10 sizes of images optimized for every conceivable device or whatever.