Diff for "LEP/Wiki"

Not logged in - Log In / Register

Differences between revisions 5 and 17 (spanning 12 versions)
Revision 5 as of 2011-05-22 23:49:55
Size: 2770
Editor: thumper
Comment:
Revision 17 as of 2011-05-26 23:53:49
Size: 11875
Editor: xaav
Comment:
Deletions are marked like this. Additions are marked like this.
Line 5: Line 5:
'''Contact:''' ''https://launchpad.net/~xaav/+contactuser'' <<BR>>
'''On Launchpad:''' ''https://blueprints.launchpad.net/launchpad/+spec/wiki-hosting''
'''Contact:''' https://launchpad.net/~xaav/+contactuser <<BR>>
'''On Launchpad:''' https://bugs.launchpad.net/launchpad-project/+bugs?field.tag=wiki
Line 8: Line 8:
'''As a ''' Developer<<BR>>
'''I want ''' a Wiki<<BR>>
'''so that ''' Projects can provide documentation to their users and developers can plan features more easily.<<BR>>
'''As a ''' developer of an open source software project<<BR>>
'''I want ''' a wiki<<BR>>
'''so that ''' I can provide documentation to my users and plan my features more easily.<<BR>>
Line 14: Line 14:
In 2008, a [[https://bugs.launchpad.net/launchpad/+bug/240067|feature request was filed]] in the launchpad bug tracker. Since that time, it has been approximately 3+ years, and users have requested a wiki on launchpad. The bug now shows up as the hottest bug on the launchpad bug tracker. Yet, this feature has still not been completed. Launchpad is meant to offer a '''complete''' project solution with code, translations, bugs, a homepage, and feature tracking. Launchpad, in it's current state, is almost complete, but 'almost complete' means more user frustrations and complaints about missing features.
Line 16: Line 16:
A wiki would benefit all users, and complete launchpad. Right now, there is no place for documentation; a wiki would solve this issue. Right now, blueprints link to external wikis (Including this one!). Completing a wiki would remove most of the need for an external site, and if completed, may even eliminate the need for this wiki. What is the cause of this incompleteness? Try doing the following using '''only''' Launchpad:

 * Creating robust, collaboratively edited documentation.
 * Creating a full featured, formatted announcement.
 * Tracking features with robust, indexed, easy to find specification.
 * Hosting a static website that explains the project's goals.

The above tasks may be possible to do, but are difficult and confusing for users. Consider documentation: Documentation could be stored in blueprints, but formatting would not be present, making difficult for users to read. Also, the blueprints are not designed for storing documentation, they are primarily used for planning documentation. Blueprints may even link to an external website or wiki that contains further specification. Some projects, like [[https://blueprints.launchpad.net/launchpad|this one]], don't even use blueprints but instead use a wiki.

Creating a full featured announcement on Launchpad is not preferred. Many projects, like [[https://launchpad.net/silva/+announcement/7450|this one]] choose to link to an external site or wiki, primarily because Launchpad announcements are not designed to contain the fully body of an announcement, but only a teaser. Launchpad announcements contain no formatting, which is fine for their purpose, but this creates a need for external software.

Blueprints depend on an external wiki to track feature specification. They display only a summary of the specification, then link to an external source to display the full specification. Wikis provide a way to collaboratively edit the specification, and share it with others.

Hosting a website on launchpad creates problems with XSS attacks and other security issues. Creating a wiki would eliminate, or greatly reduce this need, because users could place their site content on the wiki.

This list represents only some key advantages to having a wiki; there are many more uses for wikis. Wikis are adaptable because you may fill them with anything you wish, providing collaboration for future projects. Hosting them on Launchpad gives several benefits:

 * One site for everything - a BIG convenience for developers.
 * Use Bazaar to update wiki pages - one location for everything.
 * Get started easily - Start creating your wiki right away!
 * Integrate with other services - Link to Bugs, Questions, and Blueprints
Line 20: Line 40:
Just look at https://bugs.launchpad.net/launchpad/+bug/240067#subscribers-direct This is a community driven project.

 * Launchpad product strategist
 * Launchpad technical architect
Line 26: Line 49:
 * Scale to millions of users.
 * Prevent XSS attacks and properly escape output.
 * Each project should have its own wiki
 * Provide a wiki to each project
   * XXX: ''A'' wiki? Launchpad itself has three wikis: developer, help and a Canonical-internal one
   * One wiki should be enough for each project. The Ubuntu wiki contains stuff from multiple projects, and has even been a substitute for this missing launchpad wiki. I don't agree with the way launchpad wiki is set up - they waste extra sub domains and space for no reason.
 * Either scale horizontally initially or have a feasible plan for such scaling
   * Key points from the Ubuntu wiki / moin
     * Page layout on disk
     * Search
     * Page subscriptions / mail
     * Pages must be easily cached for anonymous users
 * Be free of single-points-of-failure
 * Use a standard, existing markup language so that new users have less of a hurdle to learn Launchpad
 * Be cleanly integrated with the rest of Launchpad
   * XXX: expand on what this means
   * Blueprints, announcements, and bugs may all link to related wiki pages.
 * Be able to edit pages through the Launchpad web UI

 * RobertCollins - I have rephrased the technical requirements to be assessable (millions of users isn't assessable without a lot of research into user patterns etc). I also removed the xss aspect as 'be secure' is a given ;)
 * RobertCollins - I wonder, will project groups, teams, users, distributions and perhaps even source packages want wikis?
   * They could just use the project wiki - That's like teams wanting their own bug tracker.
     * Some teams do want their own bug tracker, ''and'' teams already get their own space for branches -- jml [[<<Date(2011-05-26T12:21:53Z)>>]]
   * With source packages, we'll need to ask. Project groups are deprecated as far as I'm concerned. Distro is an interesting theoretical question, not sure it'll matter too much in practice. Source packages is an even more interesting question. Will try to find some folk from Ubuntu to talk to. -- jml [[<<Date(2011-05-26T12:21:53Z)>>]]
 * RobertCollins - Will the wikis need to link to each other?
   * Should be able to link to whatever pages you want.
   * Yes -- jml [[<<Date(2011-05-26T12:21:53Z)>>]]
Line 32: Line 77:
 * Use markdown or equivalent instead of just filtered HTML.
Line 34: Line 78:
 * Be able to edit pages via Web UI. (WMD Editor - Possible?)  * A WYSIWYG editor for wiki pages
Line 36: Line 80:
 * Markup for easily linking to other elements of Launchpad
   * e.g. link to questions/bugs/blueprints (Example Link lp:q:3333 - Question 3333)
 * Markup used on wiki should have same meaning in every chunk of user-entered text on Launchpad
 * A way to branch the wiki, hack locally, and merge the wiki back to Launchpad's version.
 * Lock down pages that are of particular importance or have become unusually controversial
 * Be notified of changes to wiki pages
 * Inherit permissions from a Bazaar code branch

 * RobertCollins: Why are these useful and desirable? It seems to be jumping straight into implementation and that concerns me. What's the audience of users? What do they want the wiki to do - why would they choose it rather than some competing thing (like e.g. publishing a sphinx doc site on packages.python.org).
   * Why use Launchpad's bug tracker instead of something like FogBugz? It's easier to set up, and already built in.
   * jml: Part of the answer is that a lack of wiki space is an adoption blocker for newcomers to Launchpad who want an all-in-one project space, so it's not critical that we produce something inherently better than competing standalone alternatives.
Line 39: Line 94:
 * Take too long to render pages  * Require shell access for performing administration
Line 45: Line 101:
Will use https://launchpad.net/wikkid May use https://launchpad.net/wikkid

-- RobertCollins - why? wikkid is cool but I don't see how we can say its the right choice until we understand why we're doing this. And I don't understand that yet.

I posted that because the developer of that developed it in hope that he could get a wiki into launchpad; it meets all the requirements, and I don't see the point of recoding something that's already been done.
Line 51: Line 111:
When a collaborative wiki is implemented that provides an easy way to communicate information. When users can easily link questions and related bugs, make announcements without leaving Launchpad, create documentation in the time it takes to register for yet another external site, and use Bazaar to edit wiki files locally.
Line 54: Line 114:

-- RobertCollins - some possible metrics: user adoption; change rate; Launchpad adopting it for its help and dev wikis?
Line 58: Line 120:
 - This has always been what I thought -- [[LaunchpadHome:thumper]] <<DateTime(2011-05-22T23:49:55Z)>>  * This has always been what I thought -- [[LaunchpadHome:thumper]] <<DateTime(2011-05-22T23:49:55Z)>>
   * I'd like to kill off subdomains entirely. -- jml [[@date@]]
   * Why? Please explain what you mean. -- xaav
 * Actually, I think we don't want to expose the Launchpad cookie to wiki content (for the same reason we don't expose the Launchpad
   cookie to librarian content or bzr branches). So that would suggest a separate domain and URLs like http://project-name.launchpadwikis.net/Wiki_page or http://launchpadwikis.net/project-name/Wiki_page -- [[LaunchpadHome:flacoste]] <<DateTime()>>
  * I don't think that that thats a necessary conclusion. At the LEP level 'be secure' is a requirement. On a implementation level we get to choose between allowing the wiki to render to arbitrary results or limiting what it can produce (so that we preserve the LP cookie). I think we should be guided by what we'd like in an ideal world in the first instance: the problems here are solvable.
  * I think the wiki should be formatted similarly to all of the other features (bugs, blueprints, code, translations). Users would still see their username in the top right corner, and all other features would apply. This shouldn't be an issue because the wiki will not contain any scripts (they will all be removed).
 
We should blacklist the "wiki" name as a series name, to allow the definition of lp:project/wiki to refer to the wiki for a project.
Line 60: Line 130:
We should blacklist the "wiki" name as a series name, to allow the definition
of lp:project/wiki to refer to the wiki for a project.
Line 63: Line 131:
There should be a way to branch the wiki, hack locally, and merge the wiki
back to Launchpad's version.
[[https://launchpad.net/wikkid|Wikkid]] was designed from the start to do this. As the primary developer and maintainer of wikkid, I'd love to see it used in Launchpad as it was the initial impetus to get it going -- [[LaunchpadHome:thumper]] <<DateTime(2011-05-22T23:49:55Z)>>
Line 66: Line 133:
[[https://launchpad.net/wikkid|Wikkid]] was designed from the start to do
this. As the primary developer and maintainer of wikkid, I'd love to see it
used in Launchpad as it was the initial impetus to get it going -- [[LaunchpadHome:thumper]] <<DateTime(2011-05-22T23:49:55Z)>>
jml is very, very keen to avoid repeating the mistakes we made with Loggerhead:
 * Inconsistent visual appearance
 * Chronic performance problems due to scale mismatch
 * Poor integration with the rest of Launchpad
   * Navigation from loggerhead once you're there
   * Extra clicks to get to code browsing
   * Hard to re-use loggerhead elements in existing code pages
   * Had to do extra work to integrate with Launchpad's authentication and authorization


'''The following should be moved to the Nice to have/must have section(s) after it has been discussed:'''

Random stuff that needs to be discussed:
 * Ask the distro about their experiences with their wiki, unlikely to migrate to LP, but nice to know
   * Eventually it would be nice if everyone migrated to LP wiki; this isn't going to happen though.
 * Privacy
   * All pages should be public. LP may offer a deal where companies can pay for private wikis.
 * Migration?
   * People can just copy/paste their pages into launchpad wiki. This might be too big to undertake now; I would recommend placing this in a separate LEP after the initial one is completed.
 * Custom styling / CSS
   * No. Not a good idea at all; too many security holes here; risk of people using the display:none; property to hide stuff and mess up the page. Wikis are for information only; Launchpad isn't supposed to be pretty, just functional.
 * Search?
   * Of course. Don't see any problems with this.
 * Many wikis per project?
   * I was thinking only one wiki per project, http://wiki.launchpad.net/project-name.
   * Wiki pages may be layered, for example http://wiki.launchpad.net/project-name/Broad_topic/more_specific/small_section
 * Team wikis seem like a good idea
   * For what? If a team is building something, it's better to put it on the project wiki. Getting too fragmented here may be a problem, it may be better to just consolidate everything to the project wiki.
 * Attachments?
   * This '''may''' be a good idea, but you could just place pictures in the bazaar branches. Don't want to become a file hosting site with random people attaching their spare files to wikis.

Wiki

A wiki to provide documentation and feature planning for launchpad projects.

Contact: https://launchpad.net/~xaav/+contactuser
On Launchpad: https://bugs.launchpad.net/launchpad-project/+bugs?field.tag=wiki

As a developer of an open source software project
I want a wiki
so that I can provide documentation to my users and plan my features more easily.

Rationale

Launchpad is meant to offer a complete project solution with code, translations, bugs, a homepage, and feature tracking. Launchpad, in it's current state, is almost complete, but 'almost complete' means more user frustrations and complaints about missing features.

What is the cause of this incompleteness? Try doing the following using only Launchpad:

  • Creating robust, collaboratively edited documentation.
  • Creating a full featured, formatted announcement.
  • Tracking features with robust, indexed, easy to find specification.
  • Hosting a static website that explains the project's goals.

The above tasks may be possible to do, but are difficult and confusing for users. Consider documentation: Documentation could be stored in blueprints, but formatting would not be present, making difficult for users to read. Also, the blueprints are not designed for storing documentation, they are primarily used for planning documentation. Blueprints may even link to an external website or wiki that contains further specification. Some projects, like this one, don't even use blueprints but instead use a wiki.

Creating a full featured announcement on Launchpad is not preferred. Many projects, like this one choose to link to an external site or wiki, primarily because Launchpad announcements are not designed to contain the fully body of an announcement, but only a teaser. Launchpad announcements contain no formatting, which is fine for their purpose, but this creates a need for external software.

Blueprints depend on an external wiki to track feature specification. They display only a summary of the specification, then link to an external source to display the full specification. Wikis provide a way to collaboratively edit the specification, and share it with others.

Hosting a website on launchpad creates problems with XSS attacks and other security issues. Creating a wiki would eliminate, or greatly reduce this need, because users could place their site content on the wiki.

This list represents only some key advantages to having a wiki; there are many more uses for wikis. Wikis are adaptable because you may fill them with anything you wish, providing collaboration for future projects. Hosting them on Launchpad gives several benefits:

  • One site for everything - a BIG convenience for developers.
  • Use Bazaar to update wiki pages - one location for everything.
  • Get started easily - Start creating your wiki right away!
  • Integrate with other services - Link to Bugs, Questions, and Blueprints

Stakeholders

This is a community driven project.

  • Launchpad product strategist
  • Launchpad technical architect

Constraints and Requirements

Must

  • Provide a wiki to each project
    • XXX: A wiki? Launchpad itself has three wikis: developer, help and a Canonical-internal one

    • One wiki should be enough for each project. The Ubuntu wiki contains stuff from multiple projects, and has even been a substitute for this missing launchpad wiki. I don't agree with the way launchpad wiki is set up - they waste extra sub domains and space for no reason.
  • Either scale horizontally initially or have a feasible plan for such scaling
    • Key points from the Ubuntu wiki / moin
      • Page layout on disk
      • Search
      • Page subscriptions / mail
      • Pages must be easily cached for anonymous users
  • Be free of single-points-of-failure
  • Use a standard, existing markup language so that new users have less of a hurdle to learn Launchpad
  • Be cleanly integrated with the rest of Launchpad
    • XXX: expand on what this means
    • Blueprints, announcements, and bugs may all link to related wiki pages.
  • Be able to edit pages through the Launchpad web UI
  • RobertCollins - I have rephrased the technical requirements to be assessable (millions of users isn't assessable without a lot of research into user patterns etc). I also removed the xss aspect as 'be secure' is a given ;)

  • RobertCollins - I wonder, will project groups, teams, users, distributions and perhaps even source packages want wikis?

    • They could just use the project wiki - That's like teams wanting their own bug tracker.
    • With source packages, we'll need to ask. Project groups are deprecated as far as I'm concerned. Distro is an interesting theoretical question, not sure it'll matter too much in practice. Source packages is an even more interesting question. Will try to find some folk from Ubuntu to talk to. -- jml <<Date(2011-05-26T12:21:53Z)>>

  • RobertCollins - Will the wikis need to link to each other?

Nice to have

  • Render Wiki pages from bazaar branches (Specify which branch to render pages from)
  • A WYSIWYG editor for wiki pages
  • Page refreshless editing of wiki pages.
  • Markup for easily linking to other elements of Launchpad
    • e.g. link to questions/bugs/blueprints (Example Link lp:q:3333 - Question 3333)
  • Markup used on wiki should have same meaning in every chunk of user-entered text on Launchpad
  • A way to branch the wiki, hack locally, and merge the wiki back to Launchpad's version.
  • Lock down pages that are of particular importance or have become unusually controversial
  • Be notified of changes to wiki pages
  • Inherit permissions from a Bazaar code branch
  • RobertCollins: Why are these useful and desirable? It seems to be jumping straight into implementation and that concerns me. What's the audience of users? What do they want the wiki to do - why would they choose it rather than some competing thing (like e.g. publishing a sphinx doc site on packages.python.org).

    • Why use Launchpad's bug tracker instead of something like FogBugz? It's easier to set up, and already built in.

    • jml: Part of the answer is that a lack of wiki space is an adoption blocker for newcomers to Launchpad who want an all-in-one project space, so it's not critical that we produce something inherently better than competing standalone alternatives.

Must not

  • Require shell access for performing administration

Out of scope

Subfeatures

May use https://launchpad.net/wikkid

-- RobertCollins - why? wikkid is cool but I don't see how we can say its the right choice until we understand why we're doing this. And I don't understand that yet.

I posted that because the developer of that developed it in hope that he could get a wiki into launchpad; it meets all the requirements, and I don't see the point of recoding something that's already been done.

Success

How will we know when we are done?

When users can easily link questions and related bugs, make announcements without leaving Launchpad, create documentation in the time it takes to register for yet another external site, and use Bazaar to edit wiki files locally.

How will we measure how well we have done?

-- RobertCollins - some possible metrics: user adoption; change rate; Launchpad adopting it for its help and dev wikis?

Thoughts?

URL should be http://wiki.launchpad.net/project-name/Wiki_page

  • This has always been what I thought -- thumper 2011-05-22 23:49:55

    • I'd like to kill off subdomains entirely. -- jml @date@

    • Why? Please explain what you mean. -- xaav
  • Actually, I think we don't want to expose the Launchpad cookie to wiki content (for the same reason we don't expose the Launchpad
    • I don't think that that thats a necessary conclusion. At the LEP level 'be secure' is a requirement. On a implementation level we get to choose between allowing the wiki to render to arbitrary results or limiting what it can produce (so that we preserve the LP cookie). I think we should be guided by what we'd like in an ideal world in the first instance: the problems here are solvable.
    • I think the wiki should be formatted similarly to all of the other features (bugs, blueprints, code, translations). Users would still see their username in the top right corner, and all other features would apply. This shouldn't be an issue because the wiki will not contain any scripts (they will all be removed).

We should blacklist the "wiki" name as a series name, to allow the definition of lp:project/wiki to refer to the wiki for a project.

Wikkid was designed from the start to do this. As the primary developer and maintainer of wikkid, I'd love to see it used in Launchpad as it was the initial impetus to get it going -- thumper 2011-05-22 23:49:55

jml is very, very keen to avoid repeating the mistakes we made with Loggerhead:

  • Inconsistent visual appearance
  • Chronic performance problems due to scale mismatch
  • Poor integration with the rest of Launchpad
    • Navigation from loggerhead once you're there
    • Extra clicks to get to code browsing
    • Hard to re-use loggerhead elements in existing code pages
    • Had to do extra work to integrate with Launchpad's authentication and authorization

The following should be moved to the Nice to have/must have section(s) after it has been discussed:

Random stuff that needs to be discussed:

  • Ask the distro about their experiences with their wiki, unlikely to migrate to LP, but nice to know
    • Eventually it would be nice if everyone migrated to LP wiki; this isn't going to happen though.
  • Privacy
    • All pages should be public. LP may offer a deal where companies can pay for private wikis.
  • Migration?
    • People can just copy/paste their pages into launchpad wiki. This might be too big to undertake now; I would recommend placing this in a separate LEP after the initial one is completed.
  • Custom styling / CSS
    • No. Not a good idea at all; too many security holes here; risk of people using the display:none; property to hide stuff and mess up the page. Wikis are for information only; Launchpad isn't supposed to be pretty, just functional.
  • Search?
    • Of course. Don't see any problems with this.
  • Many wikis per project?
  • Team wikis seem like a good idea
    • For what? If a team is building something, it's better to put it on the project wiki. Getting too fragmented here may be a problem, it may be better to just consolidate everything to the project wiki.
  • Attachments?
    • This may be a good idea, but you could just place pictures in the bazaar branches. Don't want to become a file hosting site with random people attaching their spare files to wikis.

LEP/Wiki (last edited 2011-06-21 14:53:00 by jml)