Unit 07 · lesson
Dependency and Portability Tradeoffs
Every dependency buys something.
Every dependency also becomes something your project must continue to resolve, build, and deploy.
Four questions before adding an extension
1. What problem does it solve?
If the answer is "I saw it in a tutorial," stop.
2. Can Jekyll already solve the need clearly?
Maybe Liquid, data files, collections, layouts, or a small amount of CSS already cover it.
3. Does the deployment environment support it?
A local plugin that cannot run in your GitHub Pages deployment path creates a portability gap.
4. What happens when it changes?
Consider:
- version compatibility;
- theme overrides;
- plugin APIs;
- generated markup changes;
- security/update maintenance.
Portability model
SOURCE REPO
+ GEMFILE/LOCK
+ JEKYLL VERSION
+ THEME VERSION
+ PLUGIN VERSIONS
+ DEPLOYMENT ENVIRONMENT
= REPRODUCIBLE BUILD
Remove one assumption and the project may still build — or may not.
Controlled comparison
Choose a feature you could implement two ways:
- hand-written Liquid/data;
- plugin;
- custom theme source;
- theme-provided behavior.
Compare:
| Option | code you own | dependency | portability | maintenance |
|---|
Checkpoint
Write one sentence beginning:
I am willing to add this dependency because...
and one beginning:
I am not willing to add this dependency because...
Use technical reasons, not vibes.