selfdogfood

😋selfdogfood is a stronger form of dogfooding, that is, using your own creations on your own personal site that you depend on, as an aspect of your primary online identity, day to day.

Build what you need. Use what you build.John Seely Brown quoted at eLearning 2015[1]

Metaphorically speaking, a person's ideas must be the building he lives in - otherwise there is something terribly wrong. Søren Kierkegaard, introduction to Provocations

Why

What do you really need? Selfdogfooding helps you better understand what you really need rather than just what you think you need.

By building what you need, it constrains what you think you need with the practical limits of time, ability, and cost, thus forcing you to come up with a more efficient design than you likely thought you needed originally.

Fix more important problems first. Selfdogfooding helps you empathize as a user and fix the important problems first.

By using what you build, you see and feel the impact of problems in what you have built, and in particular feel the difference between minor problems and major problems, thus helping you prioritize fixing the more important problems.

Fix the more important problems faster. Selfdogfooding helps motivate you to fix the important problems faster.

By using what you build as your personal identity on the public web, when there are visible problems, you will feel self-conscious about it, and strongly motivated to fix them quickly.

...

Why not

If you don't build it, you're just talking theory.

If you design/architect etc. without building, you'll likely come up with ever higher level abstractions, AKA the architecture astronomy anti-pattern. That being said, it's helpful to publicly brainstorm what you're thinking of building because others can review, provide feedback, help you simplify, etc.

If not you, then who? [should bother using your stuff]

If you're not willing to use your creation on your own primary personal website, why should anyone else use it on their primary personal website?

Creations tend to break (stay broken), when their creators don't use them.

In general it is a good idea to use code that the author is using themselves. Those are less likely to be broken.

use of what you create (e.g. by your company, on your company's site, your club's site, etc.)

self - what you must do above and beyond dogfooding, to be selfdogfooding

personal - use of that creation - you yourself personally using your creation for your own personal uses - it's not (just) a job use (i.e. that you can shut off when you go home), it's a personal use.

identity - use of that creation in what you identify as your self. The act of creation alters an aspect of the public "self" of the creator. On the web, this means use of that creation actively on your personal website that you primarily use to identify yourself to others. I.e. not on a test site, nor a hobby site, nor an occasional use site, but your primary personal site and thus as part of your primary identity on the web.

IndieWeb Examples

In rough order of when IndieWeb community members started selfdogfooding at least some part of what they build, using their own primary web identity presence with their own domain.

Tantek

He often deploys and tests CASSIS updates on his own site as a final live test before committing them to the cassis github repo, figuring if its going to break in production, he'd rather it break first on his site, than someone else's site who is depending on CASSIS.

"any web server software that isn't actively selfdogfooded by its creators on their own personal domains is fragile and should not be trusted. and if web software creators themselves don't have a personal domain they use on the web then the web software is categorically untrustworthy." (speaking to the unfortunate demise of Open Photo, e.g. on Barnaby's site, and the screenshots on there that he'd linked to from patterns/note-list#Documented_Examples & patterns/note#Documented_Examples) Tantek Çelik 2014-05-12 in IRC

If I make software for [someone else], am I ever going to rely on it? Unlikely If I make software which solves my own problems in a useful way, might others find it useful? Much more likely. - Barnaby Walters (2013-08-21 in iRC)

I have a higher tolerance for my own stupidly designed interfaces than [another person] would, but at some point I'm going to get frustrated by inefficiencies in my interface and make it better for me, which then makes it better for everyone. - Aaron Parecki (2013-08-21 in IRC)

"Another shift happened a few years ago, when I decided it was okay to develop just for myself, with no intention of ever releasing the stuff I was working on. That led to a new style of product, and a happier developer. I was always doing it for myself, and fooling myself into believing it was for other people. I'm no less a narcissist than anyone else. Once you own that, you get a lot more powerful I have found. 🚀" - Dave Winer on 2017-08-07

Lightsaber

In the Star Wars mythology about lightsabers, you (a Jedi) have *only* one, that you are expected to have *built* it *yourself*, and that you *depend* on as an extension of your *self*.

Contrasting examples:

dogfood: In Ep1, Anakin is merely dogfooding C3P0, which he built to also help his mom. Even though he cares about it, C3P0 is not part of Anakin. No aspect of identity/self.

selfdogfood: In RoJ, Luke is selfdogfooding his own lightsaber that he made. It's his only lightsaber, he made it, he depends on it as an extension of himself.

FAQ

Use and development

Are there two dimensions to selfdogfooding: use and development?

A: There are many required aspects of selfdogfooding, use and development only two of them.

Content updates but no commits

Would a site that is regularly updated with posts but not have commits for a while qualify as selfdogfooding?

A: At some point if there are no creative (code, UX, design) commits by the self-identified primary user of said site, then they've shifted from dogfooding (which requires a creation/use feedback loop) to simply being a user. No, eventually, after "a while", that should not be considered selfdogfooding.

Unverifiable commits

What about sites that are running non-open-source software (no way to directly verify commits)?

A: Even web sites running software that is either little or not at all open sourced can still be analyzed for what features they use in terms of :

Thus even if specific code commits are not transparently visible, there are plenty of other direct and indirect sources of evidence for creative (code, UX, design) changes, and thus the create/use pairing can still be verified to some extent.

testing your code in production

Whilst testing your code in production is a good part of selfdogfooding, security precautions should still be taken. Showing errors, warnings and notices usually reserved for dev environments is a huge security risk due to the fact that things like paths, usernames, secret keys, etc. might be inadvertently shown to anyone who cares to look. It’s also not a great idea to have confusing error messages intermingled with content.

Rather, you should log all such messages somewhere where only you can see them, or only show them in-page if you’re logged in as an admin.