PlatON development code of conduct
Background: PlatON developer community has attracted more and more teams globally, till now PlatON has issued over a hundred grants, millions of LATs distributed. I have observed a lots of great questions from excellent developers, and their solutions could help the community, but didn’t got any exposure yet. It is a waste of resource.
PlatON is an open sourced community, a public chain ecosystem, the openness and transparency of developer community is the first we should have. In this article I have listed up a few items as a simple guide.
The open source development model has unique characteristics when compared to the traditional software engineering cascade model. It is fully github driven.
Typical development life cycle
-
collect requirements, confirmation of requirements
-
design
-
implementation and swift testing
-
release, and maintenance
Collect requirements, confirmation of requirements
For self driven DApps with independent implementations, can skip this step. Do you best to come up with brilliant design, you own and run DApp economy, and enjoy it
Here I am more focus on projects which impacting heavily on existing PlatON users, this step is VERY important, and we suggest
-
set up a discord channel for timely Q&A, which will help you understand requirements, get efficient feedback, and have deep discussions with experts
-
make sure environment requirements, build up proper testing environment
-
fork the proper branch of proper project from github, you name it Kickoff project with records open online
Design
-
hot topics to be published and debated in forum
-
documentations to be published on the web via github for community feedback, since there are always great comments from smart guys, we could keep improving
Implementation and swift testing
This part is more developer specific, we should follow open source github development steps. For example
- assume the team has picked the proper project, proper branch as base. PlatON takes develop branch as base for all projects.
Here is an example: GitHub - PlatONnetwork/browser-server at develop
- ask github admin to create YOUR working branch under proper project, your name it
admin create: GitHub - PlatONnetwork/browser-server at feature-rich based on above develop branch
- each developer in your team fork this project to your own github, enter developing mode
a) star it by click right top “star”
b) fork it by click “fork”
c) linux commands below to have source code in sync locally
> git clone git@github.com:<your-githubid>/browser-server.git
> cd browser-server
> git remote add forkfrom git@github.com:PlatONnetwork/browser-server.git
> git fetch
> git branch -v -a
Till here, you should have all the branches available on your local working folder
in case you have forked too early without having this new working branch, then do the following to catch up
> git checkout feature-rich
> git merge forkfrom/feature-rich
> git push origin feature-rich
d) switch to target branch (here is the feature-rich branch), get up to date by merging with develop branch
> git checkout feature-rich
> git fetch forkfrom
> git merge forkfrom/develop
e) add tasks, issues, assign to proper developer, working on it
f) once task complete or issue fixed, submit to personal github respository, test it out
> git add ...
> git commit ...
> git push ...
also record issues found during local test, breakdown and record tasks on github with assignees
g) submit PR and ask to merge to proper branch
> submit PR from github web, to ask admin merge new features to forkfrom/feature-rich
Release and maintenance by admin
- merge into a test branch (for example: feature-platon-1.1.5)
- complete front to back test, send back feedback or issues to developers
- merge into develop branch to staging the release
follow ups
- when all work done, remove current working branch
- if still want to continue, you need to
> git fetch forkfrom
> git merge forkfrom/develop
> git merge forkfrom/feature-rich
(two useful status confirmation commands here)
> git status
> git log --all --decorate --oneline --graph
after confirm your working branch up to date, continue the rest of the work ...