Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F117922860
D214.1775437241.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Authored By
Unknown
Size
4 KB
Referenced Files
None
Subscribers
None
D214.1775437241.diff
View Options
diff --git a/docs/development_standards b/docs/development_standards
new file mode 100644
--- /dev/null
+++ b/docs/development_standards
@@ -0,0 +1,114 @@
+= Development Standards for the PACK Project
+
+This document describes the standard processes and practices used in the
+development of this project. All participation must be done in the spirit
+of these guidelines.
+
+Above all else, the goal is clear, elegant, high-performance code written,
+tested and maintained collaboratively in an open and inviting environment.
+
+== Technology
+
+PACK is written with Elixir (http://elixir-lang.org/) and Phoenix Framework
+(http://www.phoenixframework.org/), a language and web app framework designed
+for high reliability and scalability.
+
+The SQL backend used for structured data is PostgreSQL.
+
+== Team Coordination
+
+Development roadmaps, sprints, defect reports, code review and more all happens
+on http://git.kolab.org. This is our primary tool for day-to-day development
+and the best place to follow and participate in the project.
+
+Discussion between developers, designers, and users occurs on devel@kolab.org,
+the Kolab Community Hub web forums, and the #kolab irc channel on
+irc.freenode.net.
+
+We work in weekly sprints where we tackle tasks recorded on git.kolab.org. See
+development workflow below.
+
+== Tools and Practices
+
+=== Coding Style
+
+This project follows the Elixir community style guide:
+
+ http://elixir.community/styleguide
+
+Rule of thumb: write code that looks like the code that already exists in
+the repository!
+
+=== Development Workflow
+
+The basic workflow can be described as:
+
+ * create a task on git.kolab.org
+ * create a corresponding branch in git
+ * write tests and application code
+ * create a review request when ready
+ * iterate until consensus is the branch is ready for merging
+ * merge branch into main development branch (develop)
+
+All development should map to a task on git.kolab.org on the PACK project
+workboards. This allows us to keep momentum and focus collectively as a team.
+These tasks are priotized on the shared PACK workboard, from which we organize
+weekly development sprints.
+
+The main PACK workboard contains the epics ahead of us, and their status. Each
+actively developed epic has its own workboard as a sub-project, and these boards
+are populated with individual tasks which are claimed by developers and scheduled
+into sprints.
+
+Git Flow is used for daily development:
+
+ https://github.com/nvie/gitflow
+
+In practice this means that all new development happens in feature branches
+based on the develop branch. Features considered "ready" are merged into
+develop, and periodically a release is made which results in develop being
+merged into master. Bug fixes are also done in branches, with one branch
+per fix, and these can be merged down into develop as well; if it must
+be shipped immediately then it may be done in a hotfix branch (branched
+from master) and trigger a new release. Thankfully, all of this branch
+gymnastics is managed for us with the `git flow` tool.
+
+
+=== Code Review
+
+All new development goes through code review prior to acceptance. We use
+git.kolab.org for code review, and you can create/modify differentials using
+the arc command line tool or the web interface. Reviews are made available
+here:
+
+ https://git.kolab.org/differential/
+
+Tests are a must. While we are not obsessive about hitting 100% coverage,
+we are obsessive about useful and complete testing. Of course, being written
+in Elixir, we use ExUnit for testing. Also consider the use of property
+based testing with ExCheck when and where appropriate.
+
+Credo is included as a dev dependency and used regularly to "lint" the
+code base. Every contributor is encouraged to run `mix credo` from time to time
+and take action on the issues it notes.
+
+=== tsung
+
+We use tsung for performance and load testing:
+
+ http://tsung.erlang-projects.org/
+
+Every public API should have a corresponding tsung workload defined, and
+be classified into one of three categories of performance profiles:
+
+ * high concurrency, quick response: 100k+ simultaneous users with minimal
+ wallclock time to response
+ * high concurrency: 100k+ simultaneous users, response time not important
+ * low concurrency: less than 1000 simultaneous users, measure for response
+ time and correctness
+
+== Release Schedule
+
+As this is an embryotic project, there is currently no release schedule.
+
+
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Mon, Apr 6, 1:00 AM (1 d, 11 h ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
18831121
Default Alt Text
D214.1775437241.diff (4 KB)
Attached To
Mode
D214: Project standards
Attached
Detach File
Event Timeline