Launchpad’s bug and branch privacy features were replaced by information sharing that permits project maintainers to share kinds of confidential information with people at the project level. No one needs to manage bug and branch subscriptions to ensure trusted users have access to confidential information.
The Disclosure features
Disclosure is a super feature composed on many features that will allow commercial projects to work in private. Untrusted users cannot see the project’s data. Project maintainers can share their project with trusted users to reveal all or just some of the project’s data. The ultimate goal is to create private project in Launchpad, but that feature required several other features to be completed first. The Purple squad worked on Trusted Pickers, Privacy Transitions, Hardened Projects, Social Private Teams, and Sharing.
There was a lot of overlap between each feature the Purple squad worked on. Though we could start each feature independent of one another, we could only complete about 90% of each. When the Sharing UI changes entered beta, we were unblocked and fixes about most of the remaining issues, but fixing all the issues required all projects to switch to Sharing. We did not consider Sharing, or any of the required features complete until we fixed all the bugs.
- Planning started in June 2010 to replace the existing privacy mechanisms with something that would scale.
- Early testing revealed that users did not trust Launchpad because the UI could not explain what was confidential, or what the consequences of a change would be — this needed to be fixed too.
- 149 related bugs were identified in Launchpad.
- Work started in June 2011 by the Purple squad.
- Replacing the old privacy mechanisms and addressing the trust and information issues took 16 months.
- About 45,000 lines code were added to support the features.
- More that 700 bugs were fixed in total.
- About 5% of the fixed bugs were caused by the old non-scaling privacy mechanisms.
- Misrepresentation of what is confidential, or what will be confidential or public is very important to users — more important than supporting private data.
- Privacy/Sharing must be a first-class mechanism beneath all the mechanisms that work with confidential data.
- Privacy was added on top of bugs, and it failed to scale to 100’s of bugs.
- Privacy was added on top of branches, and it failed to scale to 1000’s of branches.
- Filtering private items in code, or in database joins is not fast enough to work with 100,000’s of items.
- Launchpad’s ReSTful object API is not suitable for working with large collections of objects like bugs or branches; a lighter, service-based approach was used to quickly work with large amounts of data.
- Lots of mock-ups and interactive tests will not predict all the interactions a user will have with real data; test with real code and data early to developer the final design.