## Size

- The source code is more than 100 MB.
- If the source code also exceeds 100 MB when it is compressed

## Source Control

- There is no publicly available source control (e.g. cvs, svn, bzr, git)
- There is publicly available source control, but:
  - There is no web viewer for it
  - There is no documentation on how to use it for new users
  - You've written your own source control for this code
  - You don't actually use the existing source control

## Building From Source

- There is no documentation on how to build from source
- Documentation exists on how to build from source, but it doesn't work
- Your source is configured…
  - …with a handwritten shell script
  - …by editing flat text config files
  - …by editing code header files manually
  - Your source isn't configurable
- You source builds with…
  - …something that isn't GNU Make
  - …a third-party proprietary build tools
  - …something you wrote for this code

## Bundling

- Your source only comes with other code projects that it depends on
- Your source code cannot be built without first building the bundled code bits
- You have modified those other bundled code bits

## Libraries

- Your code only builds static libraries
- Your code can build shared libraries, but only unversioned ones
- Your source does not try to use system libraries if present

## System Install

- Your code tries to install into /opt or /usr/local without explicitly telling it to do so
- Your code has no "make install"
- Your code doesn't work outside of the source directory

## Code Oddities

- Your code uses Windows line breaks ("DOS format" files)
- Your code depends on specific compiler feature functionality
- Your code depends on specific compiler bugs
- Your code depends on Microsoft Visual Anything

## Communication

- Your project does not announce releases on a mailing list
- Your project does not have a mailing list
- Your project does not have a bug tracker
- Your project does not have a website
- Your project is sourceforge vaporware

## Releases

- Your project does not do sanely versioned releases (Major, Minor)
- Your project does not do versioned releases
- Your project does not do releases
- Your project only does releases as attachments in web forum posts
- Your releases are only in
  - .zip format
  - OSX .zip format
  - .rar format
  - .arj format
  - an encapsulation format that you invented
- Your release does not unpack into a versioned top-level directory (e.g. `glibc-2.4.2/`)
- Your release does not unpack into a top-level directory (e.g. `glibc/`)
- Your release unpacks into an absurd number of directories (e.g. `home/johndoe/glibc-svn/tarball/glibc/src/`)

## History

- Your code is a fork of another project
- Your primary developers were not involved with the parent project
- Until open sourcing it, your code was proprietary for:
  - 1-2 years
  - 3-5 years
  - 6-10 years
  - 10+ years

## Licensing

- Your code does not have per-file licensing
- Your code contains inherent license incompatibilities
- Your code does not have any notice of licensing intent
- Your code doesn't include a copy of the license text
- Your code doesn't have a license

## Documentation

- Your code doesn't have a changelog
- Your code doesn't have any documentation
- Your website doesn't have any documentation