Start slideshow

Internet-based Collaboration with MoinMoin and Other Python Web Applications

Covered by this talk:

Presenter: Paul Boddie (<paul AT boddie DOT org DOT uk>)

Some of the material in this talk is presented for future reference, so that you can revisit it and follow some of the links. I may not show any code, but you can follow the links and get to real software projects.

Background

Here, the emphasis will be more on practical collaboration than pure technology. Note how the desire to use something, to improve it, and to promote it leads to collaborative efforts to further its use.

Getting Involved

Most people "get involved" with a community naturally via...

The first kinds of involvement can be fairly casual; the latter kinds usually involve having the project's "house keys". Remember that for things like conferences, there are other things like registration and even venue-related activities, like looking after equipment, which are somewhat outside the scope of this talk.

Getting Involved

Anyone can get involved eventually:

  1. Maintain fairly useful document: Python Web Modules Overview

  2. Maintain fairly useful replacement: Python Web Frameworks Overview

  3. Have content incorporated into the PythonInfo Wiki

  4. Maintain more and more Wiki content, fight spam, ...
  5. Eventually get administrator privileges
  6. Learn, write and share more, perhaps even influence others

This is how people can get involved in a community without really doing much coding. But that lets others get on with the coding.

The What and Why of Wiki

This summary is just for anyone who isn't really aware of what a Wiki actually is.

The Python Wiki

Wiki contributions are a way of getting familiar with collaboration tools while helping others. I think that the Python Wiki could be the cornerstone of python.org in future. On the next slides, some ways of learning how to collaborate via a Wiki medium will be given.

Maintaining Summary Pages

Here are some summary pages that might be worth looking at. Some are more chaotic than others. DatabaseInterfaces uses templates which people don't always want to edit.

Maintaining Summary Pages

Remote collaboration always involves misunderstandings as well as misbehaviour. Here, we want to find out how to make things work. Social factors are often more important than having completely optimised technology.

Maintaining Documentation Pages

There's a lot of useful content just waiting to be discovered! Why not contribute your own documentation?

Maintaining Documentation Pages

Again, finding out how to make things work is crucial. That way, the benefit can be gained from everybody's contributions. The feedback cycle is critical, too: with EuroPython, it hasn't been clear whether anyone is really reading our "documentation" or communications.

The Rewards of Wiki Maintenance

Knowing which solutions exist can be very helpful since it makes you aware of tools that you can use, which then makes some domains easier to get into, and it can even help you think of new kinds of projects.

Applying a Wiki to a New Project

"I think one of the hardest things is getting people to submit content, and what we do should make that process a lot easier. Another hard thing was the bottleneck where things that needed changing on the website had to go through official people who had official rights to change things. Moving to a wiki should change that." - Laura Creighton

So far, a study of Wiki-based collaboration has been studied as a way of contributing to a community, but what about taking this knowledge and applying it elsewhere?

Some Common Myths

Editorial Maintenance

Sometimes people just need encouragement to make big but respectful changes. You can always revert bad edits, but people need to know what is good and bad.

Preventing Vandalism and Spam

Here, we just want to emphasise that Wikis are "safe" choices. It doesn't have to be like the Wild West!

Wiki Weaknesses

Weaknesses are also areas for improvement, of course. It is possible to try and improve things in order to make contribution easier, either by writing extensions or by helping projects like MoinMoin.

Making It Easier to Contribute

Sometimes, people need support and reassurance that they are doing the right thing when editing. Similar to the above, attachments can be listed, and this was done when providing talk materials summaries for previous conferences.

Common Mistakes of New Projects

Some lessons from EuroPython infrastructure projects:

There's always a discussion about how to make the ultimate open source conference solution, but I'm going to argue for choosing a Wiki, sticking with it, and augmenting it with other things if appropriate.

A Case Study: EuroPython 2006-2010

Year

Main site

Collaboration

Blog

Applications

2006

Plone plus CPSSkins

python.org Wiki page (2006, 2007)

Indico hosted by CERN (2006, 2007)

2007

2008

MoinMoin with special theme

WordPress

PyCon UK registration, submissions via mailing list

2009

python.org infrastructure

MoinMoin with special theme (2009, 2010)

Django/Python blog software

PyCon UK registration and submissions

2010

The Advantage of a Wiki for New Projects

Getting things up and running can still be tricky. I propose some nice scripts for common configuration tasks.

Adopting a Visual Style

It's important to adopt a visual style consistent with other services and distinct from any defaults.

A Comparison of Theming

Solution

Code/Templates

Effort

MoinMoin

Theme module code

Emit the general structure
(the layout mostly changes in the page itself)

Mercurial Web

Template fragments

Quite a few different templates to get right
(each template uses slightly different information)

Roundup

Templates

Tricky Zope Page Templates editing with includes, macros...

The CSS usually requires a lot of time for any kind of theming.

Assuming that you're not only going to be deploying a Wiki, it's worth considering the effort required to change the visual style of various solutions.

Making a Wiki the "Main Site"

The important thing is that it doesn't have to look like a traditional Wiki. Some people might not like the look, which was based on the previous site (but less rigid), but the site was usable. We could have been slightly more liberal with write access, and newer antispam measures would have helped, too.

The Top Priorities of New Projects

When one sees a blog as a project's Web site, it gives the impression of something peripheral - a hobby, perhaps - and not something that is being seriously pursued. Generic project pages often leave the impression of a code drop - somewhere to upload files and nothing more - which puts up a barrier to collaboration.

Where's the Python?

"We need a Wiki/tracker/repository browser!"

You choose...

Otherwise, you risk...

MoinMoin

MediaWiki, various Perl Wikis

Roundup, Trac

Bugzilla, various Java trackers

Mailman

Various mailing list managers

Fortunately, the Python offerings are all first-class solutions.

If you can help it, it's best to choose something in Python (if you're a Python programmer). For those convinced that this is the kind of thing they should be doing themselves, or for people who are going to be asked to deploy tools at work, it's in your interest to pursue Python-based solutions (within reason).

Examples of Collaboration

Python

EuroPython

FSFE Fellowship

EuroPython 2008

Site

Site

Site

Site plus Wiki

Wikis

Wiki

Wiki

Bug tracker

Planet

Planet

Blog

Blogs

Blog

The various services depend on the kind of endeavour (source browsers, package indexes for software, registrations and submissions for conferences). But almost everything needs a coherent Web presence. The Web lets us blend different code bases almost seamlessly, and only stuff like authentication can be tricky.

A Case Study: FSFE Fellowship Wiki

As noted earlier, most of the effort was spent in making sure that the CSS behaved itself, occasionally tweaking the structure to force the CSS to do the right thing.

A Case Study: FSFE Fellowship Wiki

EventAggregator was a learning experience and an attempt to improve the state of Wiki calendar offerings. It doesn't support recurring events at the moment, but would probably be suitable for Ubuntu's needs if it did.

What about "Single Platform" Solutions?

The usual argument is that an existing project is hard to understand or inelegant. But even inelegant solutions impart knowledge about a domain. Moreover, existing solutions are widely used and knowing how to integrate them with other solutions is arguably a form of expertise that is sought after.

Sustainable Models of Collaboration

Whether you write a monolithic solution or glue together existing ones, you still have to evaluate the resulting experience. Being able to repeat the exercise is important because it could save other people a lot of time trying to set such things up for themselves.

Some Ideas for Community Projects

A software project

A conference site

A Wiki with some template pages for customisation

Licensing, downloads, manuals, FAQ...

Venue, travel, registration/submission details, volunteering, policies, FAQ...

Tools to deploy and integrate related applications

Bug tracker, mailing lists...

Blog, planet, mailing lists, registration/submissions, timetables...

In activities like EuroPython, it feels like every year is a repeat of the previous one, some of the same solved issues recur to be solved again. We should be trying to grow the area of experience and expertise, not struggle with the same things over and over again.

Some Objectives

There's just no point in writing lots of new code when existing solutions are good enough (or thereabouts).

The Main Messages

I want to encourage people to investigate the projects that are out there and to consider helping them, even if only in a small way. I've helped random software projects in minor ways, but it can make a difference and help people concentrate on what they are doing, leaving other things to random volunteers like myself.

Thanks to...

The wider Python community and everyone responsible for making Python and Python solutions as useful and interesting as they are!

See http://wiki2010.europython.eu/Talks/Web Collaboration And Python for more information and resources.

Bonus Material

Maintaining Summary Pages

Maintaining Documentation Pages

Editorial Maintenance

Keep the page count down:

Editorial Maintenance

Deal with unstructured editing:

Editorial Maintenance

Preventing Vandalism

Protecting Resources

Protecting Resources

Spamming

Spamming

Spamming

Making Summaries Easier to Maintain

Your Potential Users

There's an ongoing argument about this kind of thing around python.org. I want a link to the Wiki added/restored on the front page, but arguments about "screen real-estate" mean that it may just never happen.

What about a Content Management System?

Writing Themes

If you deploy Wiki and other solutions, that visual style requirement is going to come up. Although you can spend a lot of time on it, it's arguably worthwhile, so this gives a few warnings about the task at hand.

Writing Extensions

Some ideas:

This is where your Python expertise comes in. It's preferable to having to write PHP to do something similar.

A Case Study: FSFE Fellowship Wiki

A Case Study: FSFE Fellowship Wiki

This just illustrates that MoinMoin's underlying page store is somewhat accessible and that there are ways of extending the solution to meet the needs of users.

Talks/Web Collaboration And Python/Talk (last edited 2011-01-26 00:46:59 by localhost)