Comments (9)
* [ ] What is the lifecycle of a problem/task?
I like the idea of trunk-based development, as you don't end up with long lived feature branches that are difficult to merge - you can use feature flags to hide a feature until it's ready to deploy -
https://trunkbaseddevelopment.com/
* [ ] What will be our milestones? Release milestones? Feature milestones? Both? * [ ] How exactly we will use projects?
i'll have to read those links...
* [ ] What versioning do we use? SemVer?
yeah - we're still on v0 as things have been liable to change, but could probably go to v1 soon.
Could we use the same version for all apps and libs?
* Currently, each microservice seems to be versioned separately:
versioning has just been used with adapter and relay so far. i'm okay with them all having the same version - currently v0.10.1 - I guess this would be an option in Nx?
* [ ] Use GitHub Releases to publish our releases.
not sure what we would publish there? we mainly have docker images published to docker hub. we could use github actions to build the cross-platform docker images, manually triggered. currently the 'l99 build ' command does the image builds.
from ladder99.
* [ ] What is the lifecycle of a problem/task?
I like the idea of trunk-based development, as you don't end up with long lived feature branches that are difficult to merge - you can use feature flags to hide a feature until it's ready to deploy -
Yes, I agree. Just a small notes on my preferences that might be a bit different that what is written on that website:
- Let’s have a single development branch (I’d call it
dev
branch) where we develop and merge all commits. - Each commit made to the
dev
branch would create a new dev release (e.g.${major}.${minor}.${patch}-dev.${dev}
). - A release would be an annotated tag only, not a branch.
- Each dev (@bburns, me, …) would fork the upstream repo and work on their tasks in their fork in a feature/short-lived branch. A feature branch should contain ideally micro-task commits for everything needed to close a single GitHub issue, thus the issues should contain a single task (meta-issues should link to several other single-task issues).
- We would then create a PR into then upstream
dev
branch, where we would review each other’s code, request changes, approve the PR and merge it intodev
. - No commit would be made without a PR except for the automated stuff (e.g. releases could be made via GitHub Actions).
- Once we think
dev
is stable enough, we create a stable release (ideally, we need to create simple commit message that is understood by GitHub Actions and GHA would create the release itself; cf Semver Release Github Action and this).
* [ ] What versioning do we use? SemVer?
yeah - we're still on v0 as things have been liable to change, but could probably go to v1 soon.
I have no problem with using v0
for now.
Could we use the same version for all apps and libs?
* Currently, each microservice seems to be versioned separately:versioning has just been used with adapter and relay so far. i'm okay with them all having the same version - currently v0.10.1 - I guess this would be an option in Nx?
I think all packages (apps and libs) should be versioned at once, i.e. even if we update adapter
only, we should release a new release for all packages in the repository. What this means in practice is that all package.json
files need to be updated whenever we create a new release + run npm i
in order to update package-lock.json
OR remove all versions from all package.json
files and create a single, root-level package.json
file (just like Nx does it).
Regarding Nx, by default it contains a single, root-level package.json
file and each project (app/lib) contains project.json
file with project-level config. We can modify to to have project-level package.json
file, however, all deps are defined in the root-level package.json
anyway (Nx takes care about using the right deps by a particular app/lib).
* [ ] Use GitHub Releases to publish our releases.
not sure what we would publish there? we mainly have docker images published to docker hub. we could use github actions to build the cross-platform docker images, manually triggered. currently the 'l99 build ' command does the image builds.
By publishing to GitHub Releases I mean to publish the source code ZIP file(s), not the built images/apps/libs. That said, it is not a hard requirement, just a nice a have.
from ladder99.
@MRIIOT, I suggest to define rules regarding issue status in the project.
- All new issues should have
proposed
status (done automatically) and should not have any assignees set. Labels should be added manually for now. - @MRIIOT can only move a
proposed
issue toapproved
/declined
/backlog
. approved
issues should ideally have assigned a dev who will work on a particular issue.declined
issues are closed and we won’t work on those issues unless they are reconsidered and moved toapproved
orbacklog
. They could also be labelled aswontfix
orinvalid
.- The devs (@bburns, @tukusejssirs, …) can only work on
approved
issues and they might move them toin progress
status once they started working on a particular issue. backlog
issues are something we want to do, but they are not a priority and the devs should not work on them unless approved by @MRIIOT, however, commenting on them and providing more info/details/context is not forbidden.- Once an
approved
issue is finished, it should be closed (ideally usingfix #1234
in a commit message) and moved todone
(which is done automatically). - TODO: What should we use
todo
issue status for? Consider removing it.
from ladder99.
- backlog issues are something we want to do, but they are not a priority and the devs should not work on them unless approved by @MRIIOT, however, commenting on them and providing more info/details/context is not forbidden.
This second approval stage is meant to fit work into a specific time period by functionality, priority, etc.
5 and 6 seem to conflict. Can you explain the flow?
from ladder99.
IMHO we should not assign issues to anyone before the assignee is not about to start working on a particular issue. @MRIIOT should simply approve
the particular issue in the project, then a dev should choose the issue by assigning himself to a particular issue. If @MRIIOT wants someone to work on a particular issue specifically, he should comment on that issue asking that dev to assign themselves when they are about to work on that issue.
from ladder99.
This second approval stage is meant to fit work into a specific time period by functionality, priority, etc.
Yes, you decide what and when should be done, and thus you define the priority ordee
5 and 6 seem to conflict. Can you explain the flow?
How come?
Point 5: You decide what issues the devs should work on by setting the issues as approved
. Then the devs choose an approved issue (potentially with your approval) by assigning it to themselves and changing to in progress
.
Point 6: Issues in backlog
should not be worked on until move them to approved
. Commenting on issues is never forbidden.
from ladder99.
Ok, so options are:
- proposed -> declined
- proposed -> backlog
- backlog -> approved
- approved -> wip
?
This is fine with me. backlog then seems to be an implicit approval of the proposal.
from ladder99.
@MRIIOT, I think there are other options:
proposed
→approved
:- in case you want to approve a proposed issues right away;
approved
→declined
:- when you change your mind;
declined
→approved
:- when you change your mind;
approved
→backlog
:- when you change your mind;
declined
→backlog
:- when you change your mind.
Also there are other transitions that will be done not by you:
approved
→in progress
(done manually by devs);in progress
→done
(automatically done when an issue is closed, be it manually or automatically byfix #1234
in commit message);$anyStatus
→done
(whenever an issue is closed):- in this case, status will be changed to
done
regardless if the issue isapproved
ordeclined
orproposed
orin progress
.
- in this case, status will be changed to
There is another thing that needs to be solved (decided actually): what should happen with declined
issues? There is another issue ‘state’ in projects: we can archive issues. When an issue is archived, it is not closed, however, what would be the reason to keep declined
issues open? We could close declined
issues and apply wontfix
/duplicate
label (and ideally closed as not planned) but that needs to be done using GitHub Actions, as project workflows currently does not support adding custom workflows. That way we could distinguish between issues that where closed but not done (declined
→ done
) and those that where closed and done (approved
→ done
). It would be nice if all wontfix
issues would have a comment with the reason why a particular issue won’t be worked on.
This is fine with me. backlog then seems to be an implicit approval of the proposal.
Yes, backlog
is implicit approval
, but all issues should be properly labelled. Moreover, issues in backlog
are sort of planned to be worked on (but without a [approximate] time assigned to them when we will work on them; it is a kind of a roadmap), however, proposed
issues are not sorted yet (approved
/declined
/backlog
). approved
issues are sort of a list of currently worked on issues (it also depends on time availability of the devs though) that we plan to work on ASAP.
Even proposed
issues might be (properly) labelled, but all issues in backlog
must be properly labelled.
We might also need to update the project workflows, although doing the same with GitHub Workflows might be easier to customise to our needs.
from ladder99.
Another thing that @MRIIOT could do as part of the proposed
issue sorting, is setting order
column. The lesser order
, the more important the issue is and thus, the devs should try to work on the issues with lower order
first, then on the greater order
. Of course, sometimes it is not possible to work in that order, however, the order
helps a bit in the decision-making.
from ladder99.
Related Issues (20)
- Handle `SIGINT` and other signals to shutdown all running apps gracefully HOT 2
- Add more SQL examples how to query database HOT 2
- Create a custom driver in example setup and demonstrate it HOT 1
- Monitor disk space usage and prune dataitems when low HOT 4
- Make `l99` command installation optional HOT 1
- Create GraphQL egress endpoint HOT 1
- Add an API to manage configuration, machines and machine monitoring
- docs - bring design/*.md into main docs HOT 6
- Relay service should be an adapter.
- Allow fanuc-driver to start up with l99 stack.
- Add support for Mazak CNCs without MTConnect
- Re-design `ladder99` HOT 1
- Timezone consistency problem in Postgres ladder 99 functions or raw to public schema HOT 4
- /home/fiab/ladder99/shell/l99: line 56: /home/fiab/shell/commands/using: No such file or directory HOT 3
- With docker already installed, following the instructions to create new user, that user needs to be manually added to docker group HOT 3
- l99 shell script bad substitution HOT 3
- pgAdmin cannot connect to db HOT 5
- RTD do not seem to update from main branch. HOT 1
- How to use Meter?
- Absolute paths in the example agent.cfg don't match with internal paths for image mtconnect/agent:2.2.0.16 HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ladder99.