Open Source Project Setup

Copyright © 2013 Bart Massey

  • Background

    • Proprietary practices have low dev efficiency
    • Agile borrows practices from OSS to improve
    • Open source achieves fairly high dev efficiency
  • OSS Practices

    • "Patch-driven" incremental development
    • Start with a small thing (1000 lines?) that does something useful
    • Start with something thrown over the wall
    • Code-centric development: "code is cheap"
    • Tool-driven development
    • Source code management and version control
    • Programming tools: PL tools, PL environments, debuggers
    • Communication / collaboration tools: IRC, email and email lists, forums, issue trackers
    • Build and config management: Make, autotools, ...
  • Set up your project

    • Meets technical targets
    • Meets community targets
    • How to
    • Figure out what you're doing
    • Pick a name
      • Unique, distinctive, "searchable", trademark-free
      • Interpretable, understandable, descriptive
      • Short, easy to pronounce
      • Interesting, amusing, fun
    • Pick a license
      • If your code needs to work with or interoperate with code under an existing OSS license, use theirs
      • If you think the hardest thing in your project is attracting many quality developers, or if you feel strongly about how other people use your code, or if you really think you'll need legal/license help later on, choose the GPL
      • If you think the hardest thing in your project is attracting many users, or if want to cause other users and developers minimal legal grief and concern, use the MIT license
    • Set up the project
      • SCMS repository
      • Choose:
        • If your code needs to work with or interoperate with code under an existing repository, use theirs
        • Pick something you're familiar with, if it's reasonable
      • Pick a distributed SCMS
      • Pick Git
      • Public SCMS hosting
      • Conditioned by choice of SCMS: GitHub for Git, etc
      • Get your programming tools / environment
      • Get your build environment set up
      • Get your web page / README.md / whatever set up and the links and text straight
    • Start coding!