7576
Comment:
|
10556
|
Deletions are marked like this. | Additions are marked like this. |
Line 1: | Line 1: |
= Guided Product Registration = | = Guided Project Registration = |
Line 11: | Line 11: |
understanding of the data model and artifacts that can make their use of Launchpad for project management more efficient. For these users, we will guide them through the registration process, likely making assumptions and using defaults in order to give them a common, easy-to-understand project structure. Such users will of course be able to later customize and tailor these artifacts as they become more aware of what Launchpad can provide them. |
understanding of the services that can make their use of Launchpad for project management more efficient. For these users, we will guide them through the registration process, likely making assumptions and using defaults in order to give them a common, easy-to-understand project structure. Such users will of course be able to later customize and tailor these artifacts as they become more aware of what Launchpad can provide them. |
Line 20: | Line 20: |
and just want a streamlined workflow for creating these artifacts. This | and just want a streamlined work flow for creating these artifacts. This |
Line 22: | Line 22: |
allowing for inline selection of additional detail through JavaScript reveals. | allowing for inline selection of additional detail through Java``Script reveals. Note: this spec incorporates the [[ProductRegistrationWorkflow|brain dump from a 2007 sprint.]] See also: [[ProjectAffiliation||project affiliations spec]] |
Line 52: | Line 57: |
JavaScript enabled browser. Everything described here can already be | Java``Script enabled browser. Everything described here can already be |
Line 54: | Line 59: |
there's almost no new functionality here. What ''is'' new is the way these options are presented to the user. To take maximum advantage of the possibilities, we'll be using JavaScript extensively. A non-JavaScript user will be able to accomplish everything in this proposal, albeit less |
there's almost no new underlying functionality here. What ''is'' new is the way these options are presented to the user. To take maximum advantage of the possibilities, we'll be using Java``Script extensively. A non-Java``Script user will be able to accomplish everything in this proposal, albeit less |
Line 61: | Line 66: |
== Data model == As mentioned above, for the most part we do not need to change the data model to accomplish these goals. There is one thing however that we should do as part of this spec that will (IMO) greatly improve the usability of Launchpad. We will provide for optional links between teams and projects. How often have you gone to a project page and wondered what teams exist that relate to this project? When you're looking for a way to participate, you naturally want to find the related teams and mailing lists, but this is currently fairly difficult. If the teams share a name with the project, you might get a lucky guess. Or your search might turn up something useful. Or you might be able to follow the windy trail from project owner to the teams they're members of. Ultimately though, because these relationships are not explicit, this is all left to luck, chance, and The Googles. Wouldn't it be nice if a project owner could (optionally) link specific teams with the project? Then on the project page you would see an explicit list of related teams. Similarly, from the team page, you would see a link to the related project. This makes these relationships (which already exist implicitly) explicit and easily discovered. As a new user looking to participate in the project, there's much less guesswork in finding the channels for this participation. Therefore, it is proposed that we create a foreign key link from team (really Person) to project (sorta really Product). This is a database schema change. Open questions: * It certainly makes sense for a project to have more than one related team. Think foo-users, foo-dev, foo-announce, foo-bugs, foo-commits, etc. Does it make sense for a team to be related to more than one project? I think this will not be a common use case and would say "no", although one way to work around that would be through the use of project groups. * It must be possible to create the link between team and project after the fact. Should it be possible to do from both a project page and a team page? I think the u/i for the latter is easier, but both present interesting challenges. |
== Micro-tours == One way to organize these guided project creation tasks is through the use of ''micro-tours''. A micro-tour is one step, or a small series of steps, used to accomplish part of the guided task. Micro-tours can be combined into one of the larger guided or expedited wizards described above. They can also be used individually after a project has been created, to help that project evolve. For example, there may be a micro-tour to help projects register a number of teams. This could prompt the user for teams such as ''myproject-users'' and ''myproject-devs''. It would also prompt them to ask whether they want mailing lists for those teams. This micro-tour could be part of the original guided project registration, but if say, this step was skipped during that initial registration, the project owner could come back to these steps later when their project has gotten large enough to warrant teams and mailing lists. This spec must include metric gathering of two types: * A count of the number of times each micro-tour has been started * A count of the number of times each micro-tour has been completed The reason for collecting these statistics is so that we will have a better understanding of which micro-tours people are interested in, and which may not succeed in serving their audience. If a micro-tour is frequently started but abandoned, it's an indication that it's not very useful to users. If a micro-tour is rarely started, then perhaps the micro-tour's goal is not evident. |
Line 108: | Line 103: |
=== Link teams to projects === '''As a''' team owner, '''I would like to be able to''' associate my team with a project '''so that''' it is easier for me and others to see the relationship and learn how to participate in the project. * Add to Person table a team_association link which would only be set for teams. This would point from the team to the project. * Should it be possible to associate a team with many projects? Do we need an association table? Story points: ?? === View project link === '''As a''' Launchpad user '''I would like to be able to''' view which project a team is associated with when viewing the team index page, and which teams a project has associated with it when viewing the project page, '''so that I can''' more easily decide how I want to participate in the project. * Add a link to the team index page to the linked project if there is one. * Add a section to the project index page listing all the teams that have been linked with the project. === Edit project link for teams === '''As a''' project owner, '''I would like to be able to''' make and break links from my project to various teams, '''so that I can''' more clearly communicate to users what these relationships are. * When a project owner visits any team page, they see an action called "Link to project". Clicking on this action takes them to a page with a pulldown menu containing a list of all the projects they own. They can then link the team to one of those projects. Or, if this team is already linked to a project, they see a form that allows them to delete the link. * Should it be possible to create this link from the project page? If so, you clearly can't see every team on LP. I guess you could give them an edit box with the popup to select a team name. Or you could just prompt them with all the teams they own. I think the u/i is problematic in this case. === Guided project creation === |
=== Tour start === |
Line 158: | Line 109: |
=== More to come === TBD == Related tasks == Here are some related specs (copied from the old wiki) and links to other blueprints 'n stuff. * ProductRegistrationWorkflow |
Mock up: [[attachment:plusnew.jpg]] * Host your project on LP * Link LP to your upstream project * I'm registrant but not owner * Run micro-tours: primary info, bug tracker, code * Take the LP tour * Test drive LP * Search for an existing project * Return to LP home === Host your project on LP === '''As an''' prospective (but experienced) project owner, '''I would like to''' fill out a minimal amount of information, '''so that I can''' get my new Launchpad project up and running quickly and with a minimal number of clicks. Mock up: [[attachment:quickproj.jpg]] * Project ID * Project name (i.e. `displayname`) * Project summary * Licenses * Reveal proprietary license field if needed Just to be sure, as with reporting a new bug, we'll present the user with a list of potential project matches and ask them to confirm whether they really want to register their project or not. [[attachment:confirm.jpg]] Once the user has confirmed that they want to register, she would end up on the landing page, which gives them easy access to entering additional information. They can also go straight to the normal project home page from there. [[attachment:landing.jpg]] === Link LP to your upstream project === '''As the''' owner of a project already being managed externally, '''I would like to''' fill out a minimal amount of information, '''so that I can''' have Launchpad import my project with a minimal number of clicks. Mock up: [[attachment:mirrored.jpg]] * Project ID * Project name (i.e. `displayname`) * Project summary * Licenses * Reveal proprietary license field if needed * Homepage * SF page * Freshmeat * Wiki * Downloads Just to be sure, as with reporting a new bug, we'll present the user with a list of potential project matches and ask them to confirm whether they really want to register their project or not. [[attachment:confirm.jpg]] Once the user has confirmed that they want to register, she would end up on the landing page, which gives them easy access to entering additional information. They can also go straight to the normal project home page from there. [[attachment:landing.jpg]] === Micro-tour: Teams === '''As a''' project owner, '''I want Launchpad to''' guide me through team and mailing list creation, '''so that I can''' more easily set up forums for people to participate in my project. Mock up: [[attachment:teams.jpg]] * Small project * Example: Just you doing all the work * [x] Create `foo-users` mailing list * [x] You are the maintainer * [ ] You are the driver * Medium project * Example: 5-10 people working together * [x] Create `foo-core` team to be driver and maintainer, and own code * [x] Create `foo-users` mailing list * [x] Create `foo-devs` mailing list * Large project * Example: 50+ with teams fulfilling roles * [x] Create `foo` as a super team * [x] Create `foo-core` team to be driver and maintainer, and own code * [x] Create `foo-users` mailing list * [x] Create `foo-devs` mailing list * [ ] default code reviewer * [x] Create `foo-security` mailing list * [ ] security contact * [x] Create `foo-bugs` * [ ] link to bug contact * [x] Create `foo-commits` * [ ] subscribe to trunk branch === Micro-tour: Set up bug tracker === '''As a''' project owner, '''I want Launchpad to''' ask me about the bug tracker information for my project, '''so that I can''' mirror, import, or set up the bug tracker for my project. Mock up: [[attachment:setupbugs.jpg]] * If the bug tracker is foreign: * Get tracker url * Get tracker context (for Bugzilla, Product/Component) * If the bug tracker is hosted in Launchpad: * Query for import if there is an existing foreign tracker * Bonus points: do a high fidelity import automatically (outside the scope of this spec). === Micro-tour: Code === '''As a''' project owner, '''I want Launchpad to''' ask me whether code will be hosted on Launchpad or imported, '''so that I can''' make my code available to my project's users. * Is code hosted in LP? * Is code remote? * Ask for import url === Micro-tour: Set up answers, blueprints, translations === Mock up: [[attachment:setup.jpg]] '''As a''' project owner, '''I want Launchpad to''' ask me whether I want to manage translations in Launchpad, '''so that I can''' avail myself of that project service more easily. * Enable translations, blueprints, answers * Optionally Choose translation policy * Optionally set up translation group * Optionally Upload new templates and translations === Micro-tour: Take the LP tour === Mock up: [[attachment:tour.jpg]] === Micro-tour: Test drive === Mock up: [[attachment:testdrive.jpg]] === Micro-tour: Search for an existing project === Mock up: [[attachment:search.jpg]] === Project details progress meter === '''As a''' project owner, '''I would like to''' see a progress meter that shows me how much of the project's attributes I've provided, and how many of the available services I've enabled for my project, '''so that I can''' have a better sense of how completely my project communicates its intent to my users. * The idea is something like the Linked-In progress meter that shows you you've filled in 85% of your profile. In this case it would include some text like "Your project profile is 60% complete and you're using 75% of the services available to your project." |
Guided Project Registration
Guided product registration describes tasks and stories aiming to streamline and assist in the process of registering new projects. This includes easily creating various related artifacts such as teams and mailing lists, and in improving the discoverability of relationships between these artifacts.
When discussing guided product registration, we're really targeting two types of users. Guided registration targets novice Launchpad users who may not be aware of all the options open to them, and may not have a clear understanding of the services that can make their use of Launchpad for project management more efficient. For these users, we will guide them through the registration process, likely making assumptions and using defaults in order to give them a common, easy-to-understand project structure. Such users will of course be able to later customize and tailor these artifacts as they become more aware of what Launchpad can provide them.
Expedited registration targets experienced Launchpad users who have a fairly good understanding of the kinds of things they want for their project, and just want a streamlined work flow for creating these artifacts. This process should aim to reduce the click count for creating projects, while allowing for inline selection of additional detail through JavaScript reveals.
Note: this spec incorporates the brain dump from a 2007 sprint.
See also: ProjectAffiliation
Guided
- Ask if this is a big project, personal project, medium project, public project, big project, mature project, etc.
- How much customization should be allowed?
- Links to help and/or the tour along the way
Expedited
- Accordion style reveals for more information.
- When creating the project, prompt for common team names
- Styles or templates for power users?
Users: <project>-users [X] include ml [X] Link: [contact-address] Devs: <project>-dev [X] include ml [X] Link: [bug-contact] Ann: <project>-announce [X] include ml [X] Link: [news] Bug: <project>-bugs [X] include ml [X] Link: [bug-contact] Code: <project>-commits [X] include ml [X] Link: [commits] Other: <project>-_______ [X] include ml [X] Link: []
JavaScript
For all the u/i proposals here, it is assumed that the user will be using a JavaScript enabled browser. Everything described here can already be accomplished through the normal project and team creation workflows, so there's almost no new underlying functionality here. What is new is the way these options are presented to the user. To take maximum advantage of the possibilities, we'll be using JavaScript extensively. A non-JavaScript user will be able to accomplish everything in this proposal, albeit less conveniently (well, in exactly the same way they can currently do it).
Micro-tours
One way to organize these guided project creation tasks is through the use of micro-tours. A micro-tour is one step, or a small series of steps, used to accomplish part of the guided task. Micro-tours can be combined into one of the larger guided or expedited wizards described above. They can also be used individually after a project has been created, to help that project evolve.
For example, there may be a micro-tour to help projects register a number of teams. This could prompt the user for teams such as myproject-users and myproject-devs. It would also prompt them to ask whether they want mailing lists for those teams. This micro-tour could be part of the original guided project registration, but if say, this step was skipped during that initial registration, the project owner could come back to these steps later when their project has gotten large enough to warrant teams and mailing lists.
This spec must include metric gathering of two types:
- A count of the number of times each micro-tour has been started
- A count of the number of times each micro-tour has been completed
The reason for collecting these statistics is so that we will have a better understanding of which micro-tours people are interested in, and which may not succeed in serving their audience. If a micro-tour is frequently started but abandoned, it's an indication that it's not very useful to users. If a micro-tour is rarely started, then perhaps the micro-tour's goal is not evident.
Stories
Here then are some stories exploring the various tasks and breakdown of work to implement the above vision.
Tour start
As a novice Launchpad user, I would like to be guided through project creation so that I can get started with Launchpad without having to understand everything or hunt through a thousand clicks.
Mock up: plusnew.jpg
- Host your project on LP
- Link LP to your upstream project
- I'm registrant but not owner
- Run micro-tours: primary info, bug tracker, code
- Take the LP tour
- Test drive LP
- Search for an existing project
- Return to LP home
Host your project on LP
As an prospective (but experienced) project owner, I would like to fill out a minimal amount of information, so that I can get my new Launchpad project up and running quickly and with a minimal number of clicks.
Mock up: quickproj.jpg
- Project ID
Project name (i.e. displayname)
- Project summary
- Licenses
- Reveal proprietary license field if needed
Just to be sure, as with reporting a new bug, we'll present the user with a list of potential project matches and ask them to confirm whether they really want to register their project or not.
Once the user has confirmed that they want to register, she would end up on the landing page, which gives them easy access to entering additional information. They can also go straight to the normal project home page from there.
Link LP to your upstream project
As the owner of a project already being managed externally, I would like to fill out a minimal amount of information, so that I can have Launchpad import my project with a minimal number of clicks.
Mock up: mirrored.jpg
- Project ID
Project name (i.e. displayname)
- Project summary
- Licenses
- Reveal proprietary license field if needed
- Homepage
- SF page
- Freshmeat
- Wiki
- Downloads
Just to be sure, as with reporting a new bug, we'll present the user with a list of potential project matches and ask them to confirm whether they really want to register their project or not.
Once the user has confirmed that they want to register, she would end up on the landing page, which gives them easy access to entering additional information. They can also go straight to the normal project home page from there.
Micro-tour: Teams
As a project owner, I want Launchpad to guide me through team and mailing list creation, so that I can more easily set up forums for people to participate in my project.
Mock up: teams.jpg
- Small project
- Example: Just you doing all the work
[x] Create foo-users mailing list
- [x] You are the maintainer
- [ ] You are the driver
- Medium project
- Example: 5-10 people working together
[x] Create foo-core team to be driver and maintainer, and own code
[x] Create foo-users mailing list
[x] Create foo-devs mailing list
- Large project
- Example: 50+ with teams fulfilling roles
[x] Create foo as a super team
[x] Create foo-core team to be driver and maintainer, and own code
[x] Create foo-users mailing list
[x] Create foo-devs mailing list
- [ ] default code reviewer
[x] Create foo-security mailing list
- [ ] security contact
[x] Create foo-bugs
- [ ] link to bug contact
[x] Create foo-commits
- [ ] subscribe to trunk branch
Micro-tour: Set up bug tracker
As a project owner, I want Launchpad to ask me about the bug tracker information for my project, so that I can mirror, import, or set up the bug tracker for my project.
Mock up: setupbugs.jpg
- If the bug tracker is foreign:
- Get tracker url
- Get tracker context (for Bugzilla, Product/Component)
- If the bug tracker is hosted in Launchpad:
- Query for import if there is an existing foreign tracker
- Bonus points: do a high fidelity import automatically (outside the scope
- of this spec).
Micro-tour: Code
As a project owner, I want Launchpad to ask me whether code will be hosted on Launchpad or imported, so that I can make my code available to my project's users.
- Is code hosted in LP?
- Is code remote?
- Ask for import url
Micro-tour: Set up answers, blueprints, translations
Mock up: setup.jpg
As a project owner, I want Launchpad to ask me whether I want to manage translations in Launchpad, so that I can avail myself of that project service more easily.
- Enable translations, blueprints, answers
- Optionally Choose translation policy
- Optionally set up translation group
- Optionally Upload new templates and translations
Micro-tour: Take the LP tour
Mock up: tour.jpg
Micro-tour: Test drive
Mock up: testdrive.jpg
Micro-tour: Search for an existing project
Mock up: search.jpg
Project details progress meter
As a project owner, I would like to see a progress meter that shows me how much of the project's attributes I've provided, and how many of the available services I've enabled for my project, so that I can have a better sense of how completely my project communicates its intent to my users.
- The idea is something like the Linked-In progress meter that shows you
- you've filled in 85% of your profile. In this case it would include some text like "Your project profile is 60% complete and you're using 75% of the services available to your project."