Project folder organization

From DP

Jump to: navigation , search

Contents

Overview

This page shows the preferred format for project folders.

  • It is ok to use a single folder if a project is just a few files
  • If you don't need a folder, don't use it. Add it later when needed.
  • All code should have a license header
  • Each folder should have a copying.txt that matches the license
  • Yes, many things are duplicated, that's ok
  • For incomplete projects, they should have a version less than 1 (v0a is the first usually)

Naming Conventions

  • The name of the parent folder has to be the project name
  • Capitalize first character, and use underline ('_') to separate words.

Folders

  • Project (eg Logic Sniffer)
    • Art (All pictures, diagrams, artwork for the project article)
    • Bootloader (Bootloader source code, development)
    • Firmware (Firmware source code, development)
      • Firmware sub-projects (Firmware source for multiple projects, if needed)
    • Hardware (PCB, image, partlist all PCB versions, including development)
    • Software (Software source code)
      • Software sub-projects (selftest, etc)
    • Manufacturing_resources (NPI for Seeed)
      • v1.0 (Project version, if needed)
        • Firmware (bootloader+firmware dump hex file, usually has DUMP in the name)
        • gerbers (final PCB, Eagle files, partlist)
        • sales_page (text for Seeed sales page)
        • test_plan (test plant text or link, self-test or test utility)
        • programmer (any programming utility required, eg Bus Blaster SVF loader)
    • Package (stuff most users want)
      • firmware (compiled firmware, bootloader, bootloader utility)
      • inf-driver (driver, if needed)
      • software (compiled software executable)
        • software sub-project (individual apps, if needed)
      • PCBs_production (Eagle, gerber, and partlist for all production PCB versions)

Releases

It is easier for people to download the files as .zip than use SVN.

Package

Just the minimum files a user needs for upgrades and general use.

  1. Use SVN->export to export a project without the .svn directories
  2. For the package we just need the contents of the \package\ folder
  3. Use 7zip (open source) to make a .zip archive of the \package\ folder contents
  4. Name the release in a standard format: ProjectName.package.vX.X.zip
    1. Capitalize the first letter of each word in the name
    2. The version is specific for the package.
      1. If the package contains a firmware: use the firmware version.
      2. If no firmware: use the hardware version as the major number, and increment the minor number (eg Bus Blaster package is v2.x)
    3. Example:BusPirate.package.v6.0.zip
    4. Example:BusBlaster.package.v2.0.zip
  5. Upload to project page on Google Code
    1. Summary and description: {project name} release package vX.Y
    2. Example: USB IR Toy release package v22
    3. Tags: Featured, Archive
    4. Remove old version (Change one tag to Deprecated)
  6. Update the link on the wiki
  7. Update firmware change log on the wiki

Source snapshot

Everything from SVN. For developers.

  1. Use SVN->export to export a project without the .svn directories
  2. For the source we need the whole contents of the project folder
  3. Use 7zip (open source) to make a .zip archive of the folder contents
  4. Name the release in a standard format: ProjectName.source.rXXX.vY.Z.zip
    1. Capitalize the first letter of each word in the name
    2. The revision is the SVN revision when the snapshot was taken (eg r523)
    3. The version is the version number of the release package that goes with the source (eg v6.0)
    4. Example:BusPirate.source.r1280.v6.0.zip
    5. Example:BusBlaster.source.r528.v2.0.zip
  5. Upload to project page on Google Code
    1. Summary and description: {project name} complete source rxxxx vX.Y
    2. Example: USB IR Toy complete source r1611 v22
    3. Tags: Archive, Type-Source
    4. Remove old version (Change one tag to Deprecated)
  6. Update the link on the wiki
  7. Update firmware change log on the wiki

Downloads

The main page for every project should have a Download section. It should have at lease these three links:

  • [Bus Blaster package v2.0]
  • [Bus Blaster source r1094 v2.0]
  • [Browse the Bus Blaster SVN]

Link to the Google Code download page, not the file. Remove any variables from the page link.