[almighty] Project Writeup
Thomas Mäder
tmader at redhat.com
Mon Oct 31 13:18:28 UTC 2016
Hi folks, I've tried to write up what I think project features are going
to be in almighty in the future. I've tried to enumerate things that
seem relevant to how we implement projects in the short run. Once again,
I would invite interested parties to read through this and point out
where my understanding is wrong or not complete. Next step would be to
define what we need to do next to introduce projects.
thx,
/Thomas
Project functions
Based on the PDD and
https://github.com/almighty/almighty-core/issues/357, I see the
following roles for projects in almighty:
* Process Configuration
1603E130 & 1603E131 imply that for each project, there is a
configuration of allowed work item types. I would also expect
process workflow (states, transitions, permissions) to be configured
at this level. This requires a way to specify the configuration when
creating a project. The PDD sees the creation of new configurations
as a admin level task available to the operators of the service, not
something that users of the service can do. For the user, it would
be as simple as selecting a "project type" when creating a project.
We would have to create a configuration and migrate our existing
work items into that project.
* Work Item Owner
This implies that a work item is a all times associated with exactly
one project. Deleting the project would imply that the work item is
deleted as well. It is not clear whether moving a work item would be
allowed. However, the target project of a move might not allow the
work item type of the moved work items, so at least we can say that
it is not always possible.
* Partition
Since we expect to have a very large number of work items and links
between them, we might have to partition the system in some way for
performance reasons. Keeping work items and links local to a project
would bring down the number of expected instances to a couple of
100k. Naively, this would prevent us from doing work item links
across project boundaries and global searches (what are all the work
items being blocked by this one? What are all bugs filed by Max
Andersen?). However, we could replicate information of cross-item
links in both projects. We could treat searches across projects as a
special case and offload it to a near-realtime indexing service
("Google for mighti").
* Permissions
Projects are the object of permissions, meaning that permissions are
expressed in terms of projects: "Thomas is allowed to create issues
in Project 'ALM Core'".
* Team(s) container
One or more teams will be associated with the project. This is not
only a permission issue: one might use this for communication (team
chat) or to determine who a work item can be assigned to. At the
same time groups of users are traditionally what permissions are
granted for. If we have general notion of "groups of users", it
would make sense to associate multiple "teams" with a project:
administrators, contributors, "guests", etc. These groups would be
created with the project and assigned a default set of permissions.
Other topics
* Nested projects
https://github.com/almighty/almighty-core/issues/357 introduces the
notion of nested projects ("projects owning projects"). I am not
sure where in the PDD this is mandated. It would introduce
complexity with permissions and process configuration (unless they
are a restricted form of project). Unless necessary, I would not
introduce this concept
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/almighty-public/attachments/20161031/a4d3e161/attachment.htm>
More information about the almighty-public
mailing list