freckle / blammo

Batteries-included structured logging library

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Call for a new name

pbrisbin opened this issue · comments

The intent with the original name "logging" and the import Logging module was to present ourselves as "the" logging library you pull in to do logging in Haskell. We aim to be incredibly low overhead to get started, no reason to choose anything else, beautiful out of the box console output, and scale up to structured logging and JSON output with only a switch of an environment variable. I thought it appropriate to claim a short, obvious, and memorable name.

Such names are already taken, of course. Both logging and logger, as well as variations like simple-logg(ing|er) hslogg(ing|er) and log4hs all exist on Hackage. So we need to pick something new.

Some context to help our brainstorm:

  • Goal: meet all logging needs, from prototype to proper CLI to production web service, with an attractive "Getting Started" story, and low/no switching-costs for current MonadLogger users
  • Implementation: 95% of our functionality comes from fast-logger or monad-logger-aeson. The only novel things we do are a) hide it behind an opinionated interface and b) implement the pretty colors.

Here are some ideas I came up with:

1-monad-logger-structured / import Control.Monad.Logger.Structured

This boring option aligns with the established ecosystem and accurately reflects what's happening here: a layer atop Control.Monad.Logger(.Aeson). IMO though, it completely throws away the intent of stealing a memorable top-level name and could get lost in the sea of needless Control. this and Data. that, which I know some factions of the Haskell community consider a mistake.

Still, maybe boring is best here.

2- structured-logging / import StructuredLogging or Logging.Structured

(or the logg-er version)

Not too far off the ideal Logging name. However, when I imagine someone choosing this library, they would do so because of how easy it easy to get started and have beautiful console logging; not necessarily because they want structured logging. Maybe I'm wrong.

3- structlog / import Structlog

The format of the colorful console logging is taken directly from Python's structlog package, so this would be a nod to that. Meh.

4- Something cute, brand-like

Might as well be a brand, I suppose.

  • logly / loggingly
  • loggerd / logd / logctl
  • loggingful / logful
  • flogger / flog
  • hogger / hogging
  • Blammo! (maker of Log on Ren and Stimpy)

For all of these, we could still have the code be import Logging and not the brand name, or not.

import Blammo anyone?


Thoughts on these? Any other options? @mjgpy3 @danroyo

Blammo! (maker of Log on Ren and Stimpy)

I generally prefer memorable names over more ones that are more explicit about a project's function so this one is my choice (bonus points since my childhood was sufficiently scarred by Ren and Stumpy).

One of my favorite examples of this is the nodejs logging library morgan whose readme has this explanation:

Named after Dexter, a show you should not watch until completion.

I feel like I have to bring in @eborden for his thoughts as a counter-balance. I'm a reformed Rubyist, so my cute-name filter is broken.

I will say there is a massive amount of libraries with names derived from "logg(er|ing)". So if we wanted to stand out...

If you are going to go cute, then go full cute. Names like logly are just failed startups. Why not go with the name that is better than bad, it's good?

Wow. I did not not see Blammo! winning, but alright, let's do this.

Follow-up time:

  • Is the library blammo or Blammo? I assume including the ! would be a bad idea.

    I vote Blammo -- it'll sort to the top.

  • Should our module namespace stay Logging, or go with import Blammo?

    I'm conflicted. But moving all the modules down a level, so it's actually import Blammo.Logging is interesting.

Why not go with the name that is better than bad, it's good?

This is some A+ content for the announcement blog post on this on.

I dig Blammo as a name. I feel like there's an opportunity here. We write kids ed tech software, have cartoonish avatars... why not embrace cartoons?

And R&S is gold. Terrifying, disgusting, gold.

I generally like descriptive names, but if the descriptive namespace is saturated then there is no reason to fight for the canonical name logging-simpler-and-better.

It sounds like,

  • Package / library name: Blammo
  • Module: import Blammo.Logging

Last call before I start making moves.

There's definitely a meeting in the middle with logging-fitter-happier... :trollface: