# Changes between Version 4 and Version 5 of DRM4G/Development

Ignore:
Timestamp:
Dec 7, 2016 2:37:13 PM (5 years ago)
Comment:

--

### Legend:

Unmodified
 v4 In this section you'll find the guidelines of how we tackle the development process. As mentioned above, to us, our ''central'' repository will be a private one hosted by '''''!GitBucket''''', but in addition we have a second public one hosted in ''!GitHub'' to make the DRM4G accessible to anyone that might want to contribute to the project. As mentioned above, to us, our ''central'' repository will be a private one hosted by '''''!GitBucket''''', but in addition we have a second public one hosted in '''''!GitHub''''' to make the DRM4G accessible to anyone that might want to contribute to the project. Both this two repositories have at least two branches, the '''master''' and the '''develop''' branches, that must be synchronized at all times. * Commits in the '''master''' branch represent all the stable versions of the DRM4G. This means that merges to this branch are only done when ready to publish a release. Commits in the '''master''' branch represent all the stable versions of the DRM4G. This means that merges to this branch are only done when ready to publish a release. * The '''develop''' branch reflects the whole evolution of the project. It shows all of the new features and bug fixes that have been included. This is the main branch where all of the work will be done. The '''develop''' branch reflects the whole evolution of the project. It shows all of the new features and bug fixes that have been included. This is the main branch where all of the work will be done. === Adding new features === Each time some big change or a new feature is going to be implemented, a new branch has to be created from the '''develop''' branch Once all the new changes for the next release have been added to the '''develop''' branch and it is at a stable point, it's time to publish a new release. From this point on, all the following changes done on this branch will be for the following release. So, to avoid halting the development of the project a new branch is created indicating the new release number. * The nomenclature will be a string followed by the new version in numbers in the form of '''__DRM4G-MAJOR.MINOR.PATCH__''' and will have its number increment following this guidelines: *   '''MAJOR''' version when you add some new functionality or you make incompatible API changes, From this point on, all the following changes done on the '''develop''' branch will be for the following release. So, to avoid halting the development of the project a new '''__release branch__''' is created indicating the new release number. * The nomenclature for all '''release branches''' will be a string followed by the new version in numbers in the form of '''__DRM4G-MAJOR.MINOR.PATCH__''' and they will have their numbers increase following these guidelines: *   '''MAJOR''' version when you add some new functionality or you make incompatible API changes *   '''MINOR''' version when you improve some part of the DRM4G's functionality in a backwards-compatible manner *   '''PATCH''' version when you make backwards-compatible bug fixes. === Hotfixes === As an exception to the normal flow of the development, in the cases when an important error is discovered only after the release has been published, a branch can be created from the '''master''' to fix it. * This is done like this as to not disrupt the teams working on the '''develop''' branch. * The nomenclature followed would be '''__hotfix-MAJOR.MINOR.PATCH__''' * The version number would only have to bump up by one the '''PATCH''' version. * All of the files would have to have their version numbers modified. After the problem was solved, you'd have to follow the instructions [wiki:DRM4G/Development#Gettingreadyforarelease to publish a new release], except considering the '''hotfix branch''' to be the '''release branch'''. * That means that a new release branch shouldn't be created. But this branch would have to be merged back into the '''master''' and the '''develop''' branch following the instructions set in the previous section. If it turns out to be a __critical error__ and not something fixable in a few hours, __the release would have to be retracted__ until the issue got resolved. [[br]] * Run the command python setup.py sdist upload [[br]] ''or'' * Run the command python setup.py sdist and then upload the package though PyPI's user interface. At the end, the last step is to update the [wiki:DRM4G/ChangeLog realese wiki page] and the references in the section "[wiki:DRM4G#Newreleases New releases]" of the DRM4G's main wiki page.