It’s taken a while for the JAMstack terminology to sink in, compared to how I have used web publishing terminology throughout my career (dating back to the 90s). Here’s how I currently see my “stack,” with key terminology in italics:

a) I use Hugo as my framework; aka it’s my Static Site Generator. (Another framework I’m familar with at this point is Gatsby.) So when I start a new post, such as this one you’re reading now, I type this into my terminal:

hugo new posts/terminology.md

That creates a new Markdown file, which sits in my local file system in the ‘posts’ folder.

In ye olde web days, I would do that part (creating a new file and putting it in a certain folder) in a ‘website builder’ or a CMS - like Dreamweaver in the 90s, Wordpress a decade later. Web CMS’s like Wordpress or Movable Type didn’t even need you to save the file to your local directory, you could just save them direct to the internet.

b) I then open the .md file in Atom, the text editor I’m now using. I either edit directly in there, or in the Bear app. I choose the latter when it’s a longer post (like this one); i.e. when I want a WYSIWYG interface that ‘speaks markdown’. If I use Bear, I copy the resulting text across to the Atom file and save it. That process isn’t ideal, since I’m using two different apps…so I may end up switching to a headless CMS at some point, so that it’s all in one app.

Okay, so most of the terminology here isn’t that different: it’s write and edit, same as always. I used text editors in the past too, as well as website builders like Dreamweaver.

But “headless CMS” is new - it basically means just the frontend of the CMS. Hugo, the framework, and Netlify (getting to them) handle all the backend stuff which I used to do with either a) a full-function CMS like Wordpress, which handles everything, or b) I’d manually connect to a web server via FTP or some other mechanism.

c) I then build my site again using the Hugo command: hugo.

This creates the static HTML file for my ‘terminology’ post.

d) Then comes commit, as in I commit my changes (in this case a new post) to GitHub or another Git repository. This is version control, an older term but especially important in this era (because everything is getting de-coupled, so you need to keep better track of all the bits and pieces).

e) Finally there is deploy. An old word in dev, but it has renewed importance in the JAMstack era. Netlify automatically deploys my new post (and any other changed page) to its edge network. This replaces the old ‘web server’ terminology.

Build plus commit plus deploy is basically the equivalent of ‘publish’ - the same end result as clicking that Wordpress button, or in the olden days FTPing the file to the web server. Either way, you publish the post (there are benefits to not just clicking a button, like in Wordpress, but that’s for a different post).

In JAMstack I’ve found myself replacing the word ‘publish’ in my head with ‘deploy’. Just because that’s the final part of the process, and Netlify (for me) handles it. I don’t think of Netlify as ‘publishing’ the file…maybe it’s semantics.

So that’s how I understand the process currently, but it’s still early days for me and I wrote this post quickly - so don’t take this as gospel.

In summary: words like ‘publish’ and ‘server’ have gone out of favor in the JAMstack era, other words/names have been morphed into something new (CMS -> Headless CMS), some words have been borrowed from programmer language and made relevant for web creation (framework, build, deploy), while completely new terminology has also sprung up (Static Site Generators).