Files
feedkit/NAMING.md
Eric Rakestraw 0cc2862170 feedkit: split the former maximumdirect.net/weatherd project in two.
feedkit now contains a reusable core, while weatherfeeder is a concrete implementation that includes weather-specific functions.
2026-01-13 10:40:01 -06:00

2.0 KiB

Naming Conventions

This document defines naming conventions for the Feed-based ingestion daemons and shared libraries in the HomeOps ecosystem.

These conventions are intentionally simple and consistent, and are designed to make system behavior obvious from names alone.


Core Shared Module

Module / repository name maximumdirect.net/feedkit

Purpose

feedkit provides the domain-agnostic core used by all feed-processing daemons: polling, scheduling, filtering, routing, persistence fanout, and signaling.

It contains infrastructure primitives, not domain logic.


Feed Daemons

Naming Format

feeder

This name is used for both:

  • the repository / Go module name
  • the compiled binary name

Rationale

A feeder is an active agent that:

  • consumes one or more upstream feeds
  • normalizes new items into events
  • emits facts and/or signals into the system

Examples

Domain Repository / Binary
Weather weatherfeeder
RSS rssfeeder
News newsfeeder
NBA nbafeeder
Earthquakes earthquakefeeder
Patreon patreonfeeder

Non-Feed Daemons

Daemons that perform downstream work (downloads, archiving, transformation, etc.) should not use the feeder suffix.

Preferred naming reflects the primary action:

  • mediafetcher
  • videodownloader
  • archiver
  • syncd

This preserves a clear semantic boundary between:

  • feed detection (feeders)
  • work execution (workers)

Go Naming Conventions

  • All repository, module, package, and binary names are lowercase
  • No dashes (-) or underscores (_) in Go package names
  • Repository name and binary name should match unless there is a compelling reason not to

Summary

  • Core library: feedkit
  • Feed daemons: <domain>feeder
  • Downstream workers: action-based names
  • Names should communicate role, not implementation details