This document lays out general guidelines regarding the development of polymer components and applications based on it in the atom ecosystem.
The objective is to allow for parallel development of applications and the components used by it.
The package manager used is bower since all the development in polymer and atom ecosystem is centered around it.
Tags in a git repo are used by bower to represent versions, hence the two terms will be used interchangeably throughout this document.
The versions must follow the semver spec,
the spec is very informative please ensure that you have read it before continuing with this document.
Development of either component or application should adhere to following guidelines.
The guidelines presented here are a simplified version of gitflow.
- Master must always contain stable code.
- As a result of above requirement every commit on master must be tagged.
- Any merges being made into master must be explicit merges even if they are fast forward changes.
- A branch named develop should be used to make merges, it contain the latest code which will be released.
- There are other branches like release-* or hotfix-* which are used to make releases and bugfixes for that release.
It must be noted that in some cases following such an elaborate workflow may not be effecient, in those cases following rules must be adhered to while making changes.
- Master must always contain stable code.
- As a result of above requirement every commit on master must be tagged.
- Any merges being made into master must be explicit merges even if they are fast forward changes.
As of now all the components can be categorized into two sets from the perspective of depenedency management.
- General components
- Specific components
A lot of elements in the organization atomelements should fall under this category.
Their characteristics can be listed as following.
- Independent development and testing.
- Don't contain any domain specific logic
Any application using these components is should make use of tilde ranges or caret ranges to specify the dependencies. This method of specification ensures that you can easily update your dependencies.
Almost all the components in the organization travelnxtelements fall under this category.
Their characteristics can be listed as following.
- Partly interdependent development and testing.
- Contain domain specific logic.
As a result of above characteristics application development may entail changes in these components, also these changes may be best tested along with other components in the application itself.
There is also scope for inter-component tight coupling, which means changes in one component may require changes to be made in another component.
Following rules should be applied while specifying the dependencies in either an application or a component.