Germ Design

Rationale

My goal with Germ is simple: provide a reusable framework for building Python applications. I’ve built several distributed Python applications and have ended up largely copying the base framework between them. This has led to a couple frustrations:

  1. I hate copy-pasting code. As I make improvements in one codebase I have to backport
those changes to the other codebase... or just let the old code rot.
  1. I waste time tweaking the base code that I could be spending on my problem domain.

I started using Flask for a few projects and fell in love. I began moving my Bottle & Django applications over and realized that the Flask philosophy could work for me.

Why not build a framework that handles the very basics and allows(encourages) building extra functionality on top as plugins?

Design

While Flask is a huge inspiration, I don’t intend to simply copy Flasks design. I am slightly more opinionated about the structure of plugins and how they integrate into Germ.

With that in mind, you won’t write an application and import Germ. Instead you would write your functionality as a plugin and tell Germ to run it.