Skip to content

The Player's Handbook

Hubert Tournier edited this page Jun 13, 2021 · 34 revisions

So you decided to play with us, that's insanely great!

If you are in just for fun, the first 3 steps below will be enough for the time being and you can safely skip all the other steps.

However, if you intend to take the full learning curve and eventually publish your work or submit it to the project, please keep on reading.

Selection

  • The first step is to decide on a Unix command to reimplement in Python 3.x.
  • You can use our suggested list in the front page, pick one from our Monster Manual, or just go for any other one (even from other operating systems!) that fits your whims and fancies.
  • If you have selected a POSIX command, you can start implementing the POSIX.1 version instead of the latest version available in your favourite Operating System. POSIX versions are simpler and more testing oriented.

Coding

As Mando says:

This is the way!

Tests

There are 3 kind of tests that you should do:

  • Security checks:
    • IT security is the concern of everyone. And it starts with the conception and the coding of your software (well even before with hardware or your compiler and interpreters, but that's another story).
    • You can check your code security with the bandit package utility.
  • Back to back testing:
    • You can provide a script for testing your new command against the installed one, if we don't already have one available.
    • We provide a dedicated tool to ease making sure that the two commands are performing exactly the same.
  • Portability testing:
    • You should also test execution under Windows for the portability goal.
    • The same tool allows you to compare Windows results with those of your Unix machine.

Documentation

  • The traditional Unix way for documenting things is to write a manual page (in the newer mdoc or classical man languages).
  • If you intend to publish your code on GitHub, also write a README.md file (in the GitHub flavour of the Markdown language).
  • Though probably unneeded when it comes to documenting small Unix commands, if you feel like you could write a novel, consider using the Read the Docs platform and the Sphinx generation tool (which can even generate manual pages). Here's a link to get you started if it's the path you choose.

Installation

  • Write an installation script or Makefile (check this excellent tutorial for Makefiles) to install your commands and man pages.
  • However, if you need something portable across multiple Operating Systems, you'll have to go for a Python package (more on this later).

Source code publication

Package publication

  • Eventually, consider making a pip package for your entry, so that it can be automatically installed on any Operating System supporting Python.
  • To publish your package, you'll need to create an account on PyPi and TestPyPi.
  • We provide a template with all the files required to make your own package. You can download a compressed archive file with everything inside in the assets of the releases section.

Maintenance

  • Check the issues section of your GitHub repository for bug reports, documentation suggestions, new feature requests. and questions.
  • If needed, correct things and make new releases.

Referencing

  • The PNU project itself doesn't include any code, beyond what we use for tutorials.
  • Instead we provide an "empty" Python package with dependencies on the best tools identified through the pnu-project GitHub topic or pnu-project PyPi keyword.
  • If there are multiple implementations to choose from for a peculiar utility, the one that will be referenced will be the first, most complete one. On your marks, get set, go!
Clone this wiki locally