-
Notifications
You must be signed in to change notification settings - Fork 606
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Multi-User Kanban boards on Nostr #1665
base: master
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think the column and order information of each card should be part of the board event. This way you can use any event as a card and don't need to create a dedicated card event. I was thinking to use kind:1621
GitIssues as cards in a Kanban board
|
||
### Board Event | ||
|
||
```javascript |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
on the 2, vs 4, vs 8 spaces indentation you fall on the ZERO INDENTATION MAXI camp? 😂😂😂😂
I think stringified JSON in content is a crime against humanity and should almost always be avoided; I think this can all be put as tags:
content: "My board to track bugs",
tags: [
[ "a", "<...>", "column" ], // column 1
[ "a", "<...>", "column" ], // column 2
[ "a", "<...>", "column" ], // column 3
]
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Then I would add a column (or better yet "group") for the cards
100.md
Outdated
"kind": 30301, | ||
"content": { | ||
"description" : "Board Description", // can contain markdown too | ||
"columnMapping": 'EXACT' //map the card's status exactly with column name - Extensible to different logics in future |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This extensibility usually comes at the cost of unnecessary complexity; if you are already tagging the individual cards, do you really need this mapping? I think this mapping would be problematic and error prone and being explicit is the right, simpler approach
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is sort of needed as any card can be added to a board.
What if we add a card that we did not create? We may not even be able to edit it. If we render a column for each unique status, we may easily get into situation of having 3 columns like "todo", "To-do" and "to do".
In such case, currently, in kanbanstr, I am showing a column called UNMAPPED to map this.
However, writing simple conditions of which card statuses belong to which column should be easy.
Not sure if my answer is clear.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
no, the columns are explicit, cards exist, they are grouped by events (in kanban parlance, "columns") those events are grouped by events (in kanban parlance "boards")
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
However, writing simple conditions of which card statuses belong to which column should be easy.
Yes, it's common to have multiple status per column, like "Done", "Canceled", "Closed" in the DONE column. Or "In Development", "In Test", and "In Review" in the IN PROGRESS column. Depends upon the ticket type and the workflow. Stories are "Defined", but bugs are "Reported", and both are TODO.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This extensibility usually comes at the cost of unnecessary complexity; if you are already tagging the individual cards, do you really need this mapping? I think this mapping would be problematic and error prone and being explicit is the right, simpler approach
Yes, it's common to have multiple status per column, like "Done", "Canceled", "Closed" in the DONE column. Or "In Development", "In Test", and "In Review" in the IN PROGRESS column. Depends upon the ticket type and the workflow. Stories are "Defined", but bugs are "Reported", and both are TODO.
I have just changed the spec to have a simpler approach using arrays. Please let me know what you think
I would do the hierarchy a bit different that is less coupled with the kanban-presentation: Cards: Are individual things to track Groups can contain cards or groups, they act (and should be defined) as NIP-51 events; they can contain individual items or other groups. This way you can have a fairly flexible with no added complexity, a group could be an organization, that contains projects, that contains boards, that contains columns that contains the things you want to track. |
Yeah, we're using gitstuff issues for cards. Just need some structure to plug them in to. |
Fixed indentation based on comments
@SilberWitch @dluvian - These are great thoughts. Please let me think and get back to you with a solution. My preliminary thoughts -
I will think more about this and get back. Thanks for the suggestions :) |
Shouldn't the owner of the board be able to update the position of a card of it's own board? Why should a board owner add a card to his board if he can't change it's position? |
I like having a replaceable kanban event, but I also would want to be able to track issues submitted by users, and I can't alter those. I guess, I could always just quote an issue in a kanban card, which is how we're doing it with Jira, right now. So, it's not a must. Just wondering if we can separate the mechanics of the board from the content. Also makes the cards more versatile/atomic for other use cases, like road maps, backlogs, release notes, etc. |
I don't think we should git issue kinds for cards. They are not the same thing. Cards can point to one or more issues, though. It would be nice if we could move the properties in the stringified JSON in contents to be tags in the tag array. For attachments, for instance, we could even use imeta tags to provide blurhash, thumb preview, size, hashing etc to any file that has been attached. |
We're not saying that cards should always be git issues but it should be possible to include them in the board. |
We're probably thinking about this backward. The problem is that the git issues should just be a kanban card. |
couple of thoughts here: Also i don't think the spec should dictate that board owners can create cards. it'd be ideal to use the list feature of nostr to delegate that. another feature would be editing cards, but its more complex because one user (dev) could create a card, and another could groom (PM). maybe the ideal workflow for that is a way for a card to be forked or use the proposed edit functionality (i think this is in amethyst?) |
Thanks for sharing your thoughts. I will work on consolidating all the comments and editing this NIP this week positively. |
I have just now added a new way to track already existing events on a board. See |
Please let me know what you think |
|
||
```javascript | ||
{ | ||
"created_at": 34324234234, //<Unix timestamp in seconds> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
wow, did nostr really make it to this date? are humans still alive or is it all sentient dvms shitposting in a loop?
100.md
Outdated
[ "zap", "fa984bd7dbb282f07e16e7ae87b26a2a7b9b90b7246a44771f0cf5ae58018f52"], | ||
[ "zap", "460c25e682fda7832b52d1f22d3d22b3176d972f60dcdc3212ed8c92ef85065c"], | ||
|
||
// The list of boards this card will be a part of. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
why do this? this greatly diminishes the usefulness of this NIP and makes it more complex to implement (as detailed by the next comment "However, the card....")
|
||
When a client gets multiple card events with the same `d` tag, it takes the latest one by any maintainer or the creator of the board event as the source of truth. | ||
|
||
### Tracker Card Event |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this is also unnecessary and is just here because the previous event introduced unnecessary complexity.
The new version looks great! If you are looking for a way to get rid of the multi-author d-tag shenanigans, I recommend #1228 Basically, boards would be always created by a new nsec that is encrypted and shared with all the p-tagged members individually. To edit, the client would decrypt the nsec and use that key to sign a new version of the event. We are using the scheme on http://sheetstr.amethyst.social and it seems to work really well. |
Oh man! Why didn't I look at this thing before? This is really amazing and let me explore how to adapt this NIP to use this 💯 |
I like this concept, in theory, but make sure at least one npub on the project team confirms that they got the key before using the key to write. This failed for us, twice, in the past, and now there are npub-less projects floating around with our branding forever. |
I may be missing something, but I think can't be done otherwise and should really should be done inside the scope of an existing closed group interface, like NIP-29 or MLS groups. |
NIP to implement Kanban boards on Nostr to track work.
Features supported:
Read it here