Portable sites beat platform lock-in

Lock-in is a product feature (for them)

Platforms love your content when leaving hurts. Proprietary blocks, opaque databases, export tools that “almost” work — that’s not an accident.

Portability as a design constraint

If the CMS is a folder + a SQLite file + uploads/, moving hosts is an afternoon, not a quarter.

Forma’s site packages lean into that:

manifest.json # format + schema versions
data.json # portable content
database/forma.db # the CMS
uploads/ # media

Future app versions can migrate using schema_version. Packages newer than the running app get rejected — better than silent corruption.

Practical ritual

Before any brave deploy: download a site package

Keep database/ and uploads/ when you replace code

Test restore on a scratch vhost once, so you’re not learning under fire

Freedom isn’t ideological

It’s operational. Portable sites mean you can fire a host, fork a design, or hand a client their whole world on a USB stick without apologizing.