= Social private teams =
''Permit private teams to participate in social activities''
'''Contact:''' ''Curtis Hovey (Sinzui)'' <
>
'''On Launchpad:''' ''[[https://bugs.launchpad.net/launchpad/+bugs?field.tag=disclosure+teams&field.tags_combinator=ALL | Bug tags:disclosure+teams]]''
== Rationale ==
When we create private projects, users will want private teams to be in the
project or artefact roles. The current implementation explicitly forbids
private teams from being in some team or artefact role such as member
or subscriber.
If the restrictions are not revised, public teams will be placed in these
roles. This situation invites opportunities to disclose information, and
will require people to maintain public and private teams with identical
membership. The latter issue is already a burden for organisations because
private teams cannot join other teams--private projects will exacerbate the
situation.
== Stakeholders ==
''OEM''
''IDS''
''Linaro''
''U1''
''Design''
''Ubuntu''
== User stories ==
<)>>
=== Private team membership in other teams ===
'''As a ''' private team admin<
>
'''I want ''' I want to make my team a member of another team<
>
'''so that ''' the private team members are granted permissions and some social benefits in the other team<
>
When a public team is in a project role, private team admins cannot add their
team, even if the user admins both teams. Since project roles convey
permissions that are needed to participate in a project, team admins often
manage users in both teams instead of just one. Many communities require
several levels of nested teams, which is a great burden on private team
admins.
See [[https://bugs.launchpad.net/launchpad/+bug/405277 | Private teams are not able to join other teams (public or private)]]
=== Subscribe private teams to merge-proposals ===
'''As a ''' member of private team<
>
'''I want ''' I want my private team to review my branch<
>
'''so that ''' all members of the private team are notified.<
>
Private teams are not permitted to be subscribed to MPs even though they
can be subscribed to branches. The team members cannot participate in
all branch discussions and events.
See [[https://bugs.launchpad.net/launchpad/+bug/604831 | private team can't review merge proposals]]
=== Subscribe users to private team branches ===
'''As a ''' private team admin<
>
'''I want ''' I want to subscribe a non-team member to my team's branch<
>
'''so that ''' the branch can be reviewed<
>
This case is inverted from the common reasons cited to change private team
restrictions. This case is similar to the case where users may subscribe
to P3A owned by private teams. A private team may exist to create code, but
it may submit it's branches to public projects. The P3A subscribers are
granted access to all aspects of the private team, which is undesirable.
See [[https://bugs.launchpad.net/launchpad/+bug/605130 | subscribed team cannot view branch owned by (a different) private team]]
=== Private teams in package roles ===
'''As a ''' private team member<
>
'''I want ''' I want to upload a package using my team's identity<
>
'''so that ''' it is clear who uploaded/maintains the package.<
>
This issue is rare in in that it only affects PPAs, but is expected to be a
common problem with private distros where most of the teams could be private
and will upload to the distro archive.
The ppa case is a nonsensical issue; the private team owns the archive. having
someone else listed as the maintainer would look very wrong if the user leaves
the team.
See [[https://bugs.launchpad.net/launchpad/+bug/611617 | private teams cannot be package maintainers]]
=== Private teams bug and blueprint subscriptions ===
'''As a ''' private team member<
>
'''I want ''' I want to subscribe my team bugs and branches<
>
'''so that ''' the team members get notification and access permission.<
>
Private team members can only participate in notifications if someone
subscribes each individual.
See [[https://bugs.launchpad.net/launchpad/+bug/827902 | Private teams not able to subscribe to bugs or blueprints for email updates]]
== Constraints and Requirements ==
=== Must ===
1. Allow private teams to be in roles that facilitate member communication
2. Reduce the maintenance burden caused by managing multiple teams or memberships/subscriptions of team members.
3. Only permit private team *owners*, *members* and *owners of subteams* to cause disclosure of the private team.
4. Never disclose the private team without warning - warn members that placing their private team in a role of a public
artefact will make the team name and displayname know.
=== Must not ===
1. Do not permit private teams to spy. <
>
Private team subscriptions must reveal the name and displayname of the private
team to ensure that the team is not used to spy on projects. Without the
revelation, there would be no means for users to verify what was automatically
disclosed to whom before something is made private or security.
2. Do not hide the team name when it is a public role <
>
When a private team is in a public role like maintainer, users need to know
who this is. While the private team could have a nonsensical name, it is
unique, thus cannot be impersonated. The obfuscated team name does not
convey trust, and it an opportunity for man-in-the-middle attacks where
ambiguous or deceptive names are used to mislead users to reveal information.
=== Out of scope ===
This is not about redesigning private teams. This feature is about reducing
restriction places on private teams. In many cases this involves removing code
and verifying that errors do not occur because secondary and tertiary objects
will interact with private teams.
== Subfeatures ==
None
== Success ==
=== How will we know when we are done? ===
* Private organisational teams like ISD can join other teams.
* Private teams can subscribe to bugs, blueprints, and merge proposals.
* User can be subscribed to private team branches and merge proposals.
* Non-private team members know the name of the private team that owns or
drives a project.
=== How will we measure how well we have done? ===
* Measure the number of private teams that are members of other teams
to learn how many groups saw this as an advantage.
* Measure the number of users in private teams in an indirect membership
to learn how many dual memberships are reduced.
* Measure the number of private teams in blueprint, bug, and merge
proposal subscriber roles.
* Watch Answers and Bugs for reports about unwanted disclosure of information.
* Watch the oops reports and Bugs for reports about 403/404 error looking at
public pages
== Thoughts? ==