p4ws - Perforce Web Services ---------------------------- ## Project Structure Perforce Web Services is actually a suite of several different kinds of applications, client libraries, and utilities (like installers) that form a kind of microservice system for applications. Projects that are simple (they make one thing), have all their code directly underneath this directory. Projects that have clients, or are broken up into multiple related projects, have a subdirectory under this that groups these related projects together. See the p4_project_services tree as an example. ## Project Naming Because these projects may be distributed via RubyGems for heavily customized deployments, prefix everything with 'p4_'. ## Versioning Each project is versioned independently. The underlying p4_web_api is actually quite tied to the underlying P4 server version, since that's what defines all data. This will need to match the major/minor version of the Perforce instance. Other projects do *not* have to follow this convention. Instead, they should attempt to follow a strict semantic versioning mechanism: - Major version number indicate a breaking change in the API. - Minor version numbers indicate an addition, that shouldn't break any existing clients. - Release numbers just indicate a new release, probably for bug fixes.