Key User Features

Plumi includes numerous video-sharing and content-management features. Many of the features below are quite straight-forward, some of these features are covered in further detail in this manual.

In terms of programming and development of new features, the possibilities for altering, extending and improving Plumi for your own use-case are endless. Please visit the blog which has further details about how to get involved in Plumi development. 

Users can do the following things on a Plumi site:

Site Managers (Administrators) or Reviewers can use the following Plumi site administration tools:

User Guide Topics

Plumi User Manual

This Plumi manual only contains the most pertinent user topics, plus some specific instructions of functionality only available within Plumi, in these chapters:

User side:

Site administrators and developers:

Plone User Manual

As Plumi is based on the Plone content management system, you can find a guide to many of Plone's functions in the Plone User Manual including sections on:


Browse Videos

It is possible to browse videos via country, topic, genre or tag. You can also browse videos via the RSS1 and RSS2 feeds (see the Video Podcasting chapter for more info).

Browse by Country, Topic or Genre

To view videos by country, topic or genre, first click the BROWSE button in the sidebar.


Browse by Country

  1. To browse by country, click the Countries folder.

  2. Click the country of choice to view all videos from that country.


  3. Choose a video from the list to watch.


Browse by Topic

  1. To browse by topic, click the Video Topics folder.


  2. Click the topic of choice to view all videos featuring that topic.


  3. Choose a video from the list to watch.



  1. To browse by video genre, click the Video Genres folder.


  2. Click the genre of choice to view all videos of that genre.


  3. Choose a video from the list to watch.


Browse by Tags

  1. To view videos by tag, click the tag in the Tag Cloud portlet in one of the side bars.


  2. Choose a video from the list to watch.


Watch or Download Videos

With Plumi you can watch videos using the Flash video player (Flowplayer) right in the browser. Or you can choose to download the video in its original higher-quality format, for viewing on your desktop, or for screening and re-distribution.

You can also choose download an Ogg Theora version of the file (or watch this in the browser if you have a browser such as Firefox installed) or download the video file via BitTorrent.

To watch or download a video, browse for one by topic, genre, country or tag. Or click on a video anywhere from within the site, for example, click the name of a video on the latest videos page.

Watching Videos

To watch a video, click either of the two play buttons on the video player.

You can control playback of a video by scrubbing through (moving left and right) with the playhead (position bar), or clicking the pause button. You can also control the volume using the volume slider.

To view the video fullscreen, click the fullscreen button on the video player.

Downloading Videos

To download a video, in its original higher-quality format, just click the Download Hi-Res / Screening Version button. The size of the video file is listed here, so you can estimate how long it might take to download.

Once you have downloaded a video, we recommend using the VLC (Video Lan Client) media player to play the video back on your computer. This software is available for all major platforms (Windows, Mac, Linux) and can handle nearly any type of video file. It is also Free Software. You can download VLC by clicking the link at Videos best viewed on VLC player below the player.

Downloading / Watching Ogg Theora Video

If you have a browser such as Firefox, Opera or Chrome you can make the most of the new HTML5 video technologies and watch an Ogg Theora version of a video play back right in your browser - no plugin necessary (such as Flash). Plumi supports Ogg Theora and HTML5 as an open-standards, open-source and patent-free alternative to commercial video technologies.

To watch the Ogg Theora version, just click the link Download / Watch Ogg Theora Version.


The video will start playing in a new page in your browser. Use the HTML5 video player controls as you would using the Flash video player above.


If you don't have Firefox, Opera or Chrome, the video will just start downloading. You can use VLC (and many other media players) to play this back on your desktop. 

You can read more about HTML5 in this handy guide

Downloading Videos via BitTorrent

New in Plumi 4.x is the ability to download and share videos from a Plumi site via BitTorrent. This means that you can share the bandwidth required to make these videos available amongst many users (peers) in the network, rather than just relying on one server.

You will need a "torrent client" to download via BitTorrent, we recommend using uTorrent, Deluge or Tixati.

You can see the number of people who are sharing a copy of the video, by seeing how many "Seeders" are listed next to the Download via BitTorrent link (the more Seeders there are, the faster it should be to download your video):


To download a video via BitTorrent, simply click the Download via BitTorrent link, below the video player.


Open the torrent file that has just downloaded (this should be listed in the Downloads window of your browser):


This will open in your torrent client and start downloading. When it is finished downloading you can open it to watch it, using a video player such as VLC. It will also start sharing (seeding) the file with others:



Note: you may experience errors using the Transmission torrent client, as it does not always work well with certain trackers using UDP URLs. If you experience problems using Transmission, please try another client such as those listed above.

Publish Video

To publish a video you must have registered, and must be signed-in.

Note: it may take a while to upload your video, depending on your internet connection, so please be patient. Also your video will not be published immediately - the default set up of a Plumi site is for new contributions to be moderated by site reviewers. After the content is reviewed you will be notified via email. You will not be able to edit the video unless you retract it.

Publish Video Steps

Click the Publish button in the sidebar.


Choose Publish Video button.


Step One

Fill out the form, adding a Title (required), Description (required - a short summary) as much other production information as you choose (Producer, Director etc.).


Choose a Release Date , add a Full Description (HTML, can include images and links) and click the next button to take you to the next step.


Step Two

Now it's time to categorise your video. Choose the Country of origin, Video Genre, Topics (hold down CTRL/COMMAND and click to select multiple topics) and enter Tags (your own words to categorise the video, these MUST BE ENTERED ONE PER LINE, NOT WITH COMMAS) into the box.


Enter the Location which your video is primarily about.


Enter the copyright information for your video. If the Copyright Holder (creator) is not you, enter their name instead of "(site default)".

Now choose your Copyright License. Plumi allows for multiple licensing forms including open-content licenses to give you more choice about who can distribute, copy or re-edit your work.

If you wish to use the site default license, you don't need to change anything. If you want to choose your own license, just tick the box next to All Rights Reserved (standard copyright), GNU Free Documentation License (the license Wikipedia uses, more info here) or Creative Commons License (more info here).

You can choose what kind of Creative Commons license you want to attach to your video by clicking (Choose) next to Creative Commons License. This will open another window where you can choose which license you want based on some simple questions. The license you have chosen will display here.

You can also tick the box next to Other and click the (Choose) button to attach any other kind of license you wish to your video.


Add Related items - search for related content already on the website by clicking the add button. This will open a new a new window where you can browse or search for other content that is related to your video. Click the next button to take you to the next step (or the previous button if you wish to change what you've entered into Step 1).


Step Three

Browse for a video file on your computer by clicking the Browse button.


Choose the video you wish to upload, and click the Save button.


Attach a thumbnail image to your video by clicking the Browse button, and choosing an image from your computer (note this is optional - Plumi will automatically grab an image from the video you uploaded if you don't upload your own thumbnail image).


Give the image a description by entering text (also optional) into Thumbnail image description.


Click the save button.


Your video will now go into the pending content state, awaiting publishing by a Reviewer or Manager (it will not be available within the site, for example on the front page, until it has been moderated).


Publish News

To publish a news item you must have registered, and must be signed-in.

Note: your news item will not be published immediately - it will be moderated by site reviewers, and then you will be notified via email when it is actually published. You will not be able to edit the news item unless you retract it

Publish News Steps

Click the Publish button in the sidebar.

Click the Publish News button.

Enter a Title, Description (short summary) and Body Text (can contain links, images and other HTML).

Click the Browse... button to browse for an Image to upload.

Select the image you wish to upload and click Open.

Give your image an Image Caption.

Click the Save button.

Your news item will now go into the pending content state, awaiting publishing by a Reviewer or Manager (it will not be available within the site, for example on the front page, until it has been moderated).


Publish Event

To publish an event you must have registered, and must be signed-in.

Note: your event will not be published immediately - it will be moderated by site reviewers, and then you will be notified via email when it is actually published. You will not be able to edit the event unless you retract it.

Publish Event Steps

Click the Publish button in the sidebar.

Choose Publish News button.


Enter a Title, Description (short summary) and a Location for your event. Set a date and time for the start, and the end, of your event. Choose these from drop-down menus provided.


Enter some Event Body Text (can contain links, images and other HTML).

Enter the names of any known attendees, add categories (tags) that describe your event, add a URL for more information, give a contact name, contact email address and phone number for this event (all of these are optional), and click the Save button. 


Click the Save button.


Your event will now go into the pending content state, awaiting publishing by a Reviewer or Manager (it will not be available within the site, for example on the front page, until it has been moderated). 


Edit Content

Permissions to Edit Content

On a Plumi site you need permission to edit content. You automatically have permission to edit any content that you have personally added and you can share ownership of content using the Sharing tab to give others permission to edit or view the content also. More information on this can be found in the Sharing Content chapter.

If you are a site Manager, you have permission to edit any content added by any user. You can also change the owner of an item (see the end of this page for details).

Publication Workflow - Is My Content Published?

Plumi uses what is called a "work-flow" for the publishing of content. It means that members of the site create content and submit it for publishing, and editors of the site then review that content and approve it or reject it on the basis of the site's editorial policy.

Once you've submitted content for publishing it goes into a work-flow state of "pending" - so site editors know that it is pending review. At this point the content is no longer editable by the member who created it - the "creator". The content remains unable to be edited when it is actually published.

Now this makes good sense - if content was editable after being submitted for publishing then the original creator could change the content into something inappropriate, for example it could be a way for spammers to get advertising onto the website.

However it means that as a content creator, you need to know how to retract your video once you have submitted it for publishing ("pending") or it is actually published ("published").

More info can be found in the Publication States chapter, but we cover the basics of what to do to retract your content, so you can edit it, in the section below.

Editing Content

This section explains how to edit a video, news item, callout, event or other content after you have added it, or submitted it for publishing.

Here's how to do it:

1. Navigate to the content you wish to edit. We will use an event as an example.


4. Click the drop-down menu that says pending if the content has not yet been approved, or published if it has already been approved.


5. Choose retract from this drop-down menu.


6. Click the Edit tab that now appears, as your content is in public-draft state (this means it is available on the web, but does not come up in listings such as Latest Videos).

7. Edit your content as you wish.

8. Save your content by clicking the Save button.

9. Submit for publishing once again by clicking Submit for publication from the drop-down menu (videos are submitted automatically each time you save them) by clicking.

10. The item will once more be in the pending review state, waiting for review and approval by content editors (note you cannot see the Edit tab anymore).

Changing Ownership

When logged in as a manager, it is possible to change the owner of a piece of content. This is done via the "Ownership" tab.



Once in the Ownership tab, you can enter the name of the new owner and then click on the Perform Search button.


This will return a drop down box with a list of all the users who match your search value. Select the one you want and then click the Save button.


Once completed, you will be returned to the content item's display and a confirmation message will be shown.



Sharing Content and Workspace

Sharing Content Via Social Media

Each content item in a Plumi site can be easily shared via social media (eg: Facebook, Digg, etc). At the top right hand corner of each item can be found the Share This icon.


When you click on this icon, it will expand into a list of icons for the various social media sites, allowing you to click on the site you want at which point the site will open and you can start entering information about the item you want to share.


Workspace / My Folder

Every user of a Plumi site has a workspace called my folder. Inside this folder, you can add not only videos, news, events and callouts, but also other content such as pages, folders, images, or links.

As an example, here is how to add a page.

Adding a Page

  1. Click my folder to visit your workspace.

  2. Click the add new... drop-down menu, and click page.

  3. Give your page a title, description and body text, and click Save.

Sharing Content With Other Plumi Users

Plumi can be used as a shared space to collaborate on content. Sharing gives others permission to do certain things with content you have created - such as viewing or editing. Others can share their content with you too, giving you certain permissions. This sharing function allows you to collaboratively author content with other Members of the site.

There are many different circumstances in which you could use the workspace and share content with others. As an example, we will use the case that you could add a page, share that page with others, and use that page to collaboratively edit a script or project plan for a movie.

  1. Navigate to an existing item you have already created (in this example we will use the page we just added). Click the sharing tab.

  2. Enter the username of the Member you wish to share this page with (in this case, Bob) into the searchbox and click search.

  3. Click the can edit and can view checkboxes and click the save button.

  4. The user Bob can now view and edit this page, enabling both of you to collaborate on it.


Profiles and Social Networking

Each member of a Plumi website has a Profile or Author Page. This page lists biographical information, activities you are interested in, and a list of contributions you have made to the website.

New in Plumi 4.0 is the ability to add links to your various blogs or social networking sites, as well as a simple crowd-funding initiative - a way for other users to donate to you via PayPal to support your media activities.

Viewing Your Profile

To view your Profile at any time, click your username:

This is your public profile on the Plumi site.

Viewing Another User's Profile

To find another member's profile, click Users in the sidebar.

You can search for users by username, email or full name. Enter one of these, and click the Search button.

Choose the user from the search results.

Click the username next to any of these folders

You can also view a user's profile by clicking on their name alongside any content they have created throughout the website.

Networking Using Plumi

You can find other users in a Plumi site who share the same genre interests, your activities, the media formats you use, and those who are based in the same country as yourself.

Click on the activity, genre, media format or country on the user's profile.

This shows you a listing of all other users who share the same activities, genre interests, media formats, or those who live in that country.

Editing Your Profile

To edit your profile, just click the edit tab when viewing your profile.

Edit your Full Name, Email Address and City of Residence. Choose your Country of Residence from the drop-down menu.

Enter a short Biography describing who you are and what you do. Choose the Language you wish the site to appear in from the available options in the drop-down menu.

Enter your Website Address as well as any Social Networks and Blogs. If you want to add another social network or blog (such as MySpace or Facebook, or your Wordpress blog) just click the add button and another field will appear:


Enter your Physical Address, Postcode and Phone Number (these are optional, please be wary of privacy issues before publishing your contact details online).

Choose Genre Interests, Activities and Media Formats that you use, or are interested in, by multiple selecting items from the list (hold down control or command key as you click each item).

Choose your Content Editor (this is the WYSIWYG or What You See Is What You Get editor, which allows you to format HTML without having to enter the code, for most users you will leave this as the default - TinyMCE). Enable external editing if you choose (this requires that you have some software installed on your computer to assist you with editing pages on the Plumi website, for most users you will leave this as the default - unchecked). Choose whether or not you wish to be Listed in Searches (for most users you will want other users to find you, so leave this as the default - checked).

Browse for a portrait image of yourself to attach to your profile by clicking the Browse... button.

Choose an image from your computer to upload.

You can also delete your portrait image if you choose, by selecting the tickbox next to Delete Portrait.

If you wish to include a donate button linked to your PayPal account, follow the instructions in the next section.

Click the Save button.

PayPal Donations - Crowd-funding Your Media Project

If you have a PayPal account, you can add a button to your profile so that other users can donate to your media projects. Plumi plans to include other crowd-funding and donating options in the future.

1/ Login to your Paypal account e.g.

2/ Click Merchant Services.

3/ Click Website Payments Standard.

4/ Choose the donate button - click "create one now" for "Accept donations from anyone, anywhere on the web"

5/ Create button making sure Merchant account IDs has 'Use my secure merchant account ID' selected.

6/ Copy and paste the generated code, the complete PKCS7 wrapper, into the Donations via PayPal field (once you've closed this help box by clicking the  symbol).


A donate button is now displayed on your author page profile:


Embed Video on Another Website

You can choose to embed a video from a Plumi website onto another website or blog. This means you are using the Plumi site and web server to make that video available, but you are showing it somewhere else.

You first need to copy the embed/object code from the Plumi website, and then you need to enter it into your webpage or blog.

Copying the embed code

Browse to the video you wish to embed. Copy all the text in the box below the Flash video player.

Entering embed code on another webpage

Entering code into HTML webpage.

Some people create their websites by writing HTML markup directly into an HTML document. For these users, just paste the HTML code into your web page.

Some people create their websites using software on their computer to help create the HTML markup, such as iWeb or Dreamweaver. For these users you should "edit source" to edit the HTML directly.

Enter the embed code between the body tags of your HTML document.

Save the HTML document and upload to your server as usual.

Entering code into a blog

Some people create their websites using a web-application installed on the server, such as a Wordpress blog.

Firstly you must be logged into your website's application as an administrator or content creator.

When adding a new entry, toggle the user-interface to show the HTML code, rather than the visual display. Paste in the embed code.

Publish the entry.

Your video should appear on the page when viewed.

NOTE: Some blog software such as Wordpress will prevent users from adding embed or object tags into a blog post, as a security measure. Please consult the user manual for your web application if this is the case.

Video Podcasting

What is RSS?

RSS stands for Really Simple Syndication, which is a way that websites can share, or syndicate, information between each other. Other software, such as video podcast applications and feed readers, can also syndicate content from the original website which publishes that feed.

RSS feeds include information about a piece of content - such as a blog entry. This information generally consists of a title, summary and sometimes full text of the original article, as well as other "metadata" such as date and author.

Plumi generates RSS1 feeds, that syndicate the title, date published and a summary of the content, including a link back to the full article on the Plumi website. You can access these RSS1 feeds using a feed reader such as Feedreader or Google Reader. You can often also read RSS feeds with your email client, such as Thunderbird or web browser such as Firefox.

What is a video podcast?

A video podcast is an RSS2 feed. RSS2 is a type of RSS that includes "video enclosures", basically a link to a video file. This way, a video podcast application can not only view information such as title, summary and full text, but also download and play back that video file.

Plumi generates RSS2 or video podcast feeds that syndicate the title, date published and a summary of the content, including a link back to the full article on the Plumi website, as well as a link to download the video file. You can access these video podcast feeds using programs such as Miro or iTunes.

Plumi Video Podcasts

Plumi creates automatic video podcast feeds that list the latest videos by:

Plumi also has built in video podcast feeds for:

Note: your videos will not appear in the video podcast feed until they have been published by a reviewer.

How to View a Video Podcast

All you need to do to view a video podcast is to copy the podcast link, and paste it into your video podcast software. Examples are given below for Miro and iTunes.

Copy Video Podcast Link from Plumi site

Visit the latest videos page (or any topic, genre or country listing). Right-click or control-click on the VODCAST button.

Select copy or copy link location.

Paste this link into your podcast software (instructions follow for Miro and iTunes).


Miro is Free Software, available for download here.You could also read the Miro FLOSS manual.

Paste Video Podcast Link Into Miro

Choose Add Feed from the Sidebar menu.

Paste the video podcast link into the URL box and click Create Feed.

View/Download Videos

Click on the Plumi feed in sidebar.

Browse videos in feed, viewing title, description and release date.

Click Download button to download video.

Click Play button to view video in Miro.

Use video controls to play, rewind, fast-forward or pause the video.

Change Automatic Download Settings

Many users choose to download new videos when they become available. However, if you are concerned about your bandwidth, download usage or disk space, you will want to disable automatic downloading of new videos (new content as it becomes available).

Select Off from Auto Download drop-down menu when viewing a channel.


iTunes is proprietary software, produced by Apple, available here. Please note that iTunes will only play Apple supported formats such as .mov and .mp4. If, for example, there are .wmv or .ogg files in the feed iTunes will not display or play them

Paste Video Podcast Link Into iTunes

Choose Subscribe to Podcast from the Advanced menu.

Paste the video podcast link into the URL box and click OK.

View/Download Videos

Double-click on the EngageMedia podcast entry.

Browse videos in feed, viewing title, duration, release date and description.

Click GET button to download an individual video, or GET ALL to download all videos in the feed.

Watch the video in iTunes by double-clicking on the file name.

Control playback of the video as you watch.


Disable Automatic Download

Many users choose to download new videos when they become available. However, if you are concerned about your bandwidth, download usage or disk space, you will want to disable automatic downloading of new podcast episodes (new content as it becomes available).

Click Podcasts in sidebar.

Select the podcast whose settings you wish to change.

Click Settings button.

Uncheck Use Default Settings.

Choose Do Nothing from When new episodes are available. Click OK.


Translate Content

Any Member of the site, when logged in, can easily translate certain types of content into the other languages available on your Plumi site. At present Plumi offers both English and Indonesian languages, but your site administrator can make more languages available (covered in this chapter).

You can learn how to switch the language of your Plumi site in this chapter. Once somebody has translated an item, it will become automatically available, if the viewer has switched to that language.

Currently news, events, callouts and pages can be translated - but not yet videos. Here we will use the example of translating a news item to show how easy it is to add a translation.

  1. Navigate to an item of content (here we use news item) on the site. Click the translate into... drop-down menu and click the language you wish to translate it into e.g. French.

  2. Translate the Title, Description (short summary) and Body Text from one language into the other.

  3. Translate the Image Caption and click the Save button.

  4. You will notice that the site is now viewable in the language you have just used to translate the page. You can also see that the translation is in the pending state (here in French).

  5. Click the flag of your original language, to change the site back into that language.

  6. You will need to wait until a site Manager has published your content. The translation of this news item will now be available if the user has switched languages.

Switch Languages

Plumi has built in support for internationalisation based on the LinguaPlone project, this adds the ability to translate the website into other languages. Translations must have been contributed, and languages must have been enabled by site administrators for this function to be available.

To select another available language, click the flag corresponding to that national language (here we click the French flag, to change the site language to French).


Here you can see that most of the interface is translated already into French. But only some of the content has been translated into French (Plumi depends on users to translate content, rather than machine translation).


Uploading via FTP With Plumi


Having trouble uploading videos to your Plumi based site because your Internet connection keeps breaking? Uploading large files through web based forms can be difficult as the connection can often break. FTP (File Transfer Protocol) is a protocol that lets you resume broken uploads. You can use an FTP extension within Plumi to upload your videos straight into your account on the website.

To use this you will need a program called an 'FTP Client'. There are many of these around; Filezilla is a popular free program which can be used on Windows, Linux or Mac OSX, and will be the focus of this chapter. You can also use most other FTP programs (except Cyberduck with which you may encounter errors) or FireFTP lets you integrate FTP into the Firefox web browser.

This chapter uses  as an example Plumi site. The visual design (skin) looks a little different to the standard Plumi skin, but not very much. Many Plumi sites will opt to have a different skin in any case.

Note: currently you can't upload files in .m4v format via FTP. This issue is being addressed in future Plumi releases, for now please convert your files to another format.

Filezilla (All Platforms)

Note: before continuing, please ensure the filename of your video contains no spaces. E.g. instead of using a file named "My Video About Forests.avi" you should change the name to "My-Video-About-Forests.avi". Many systems, including FTP, do not like files with spaces in the filename.

  1. Download and install Filezilla from
  2. Open Filezilla, and in the address bar at the top enter:
    • Host: (or your plumi server's address)
    • Username: Your EngageMedia or Plumi login
    • Password: Your EngageMedia or Plumi password.
    • Click 'Quickconnect'

    Filezilla: Login

  3. In the top part of the screen you should get some server messages. Do not worry about these, unless you get 'Authentication failed' or 'Could not connect to server'. In this case, check your password and Internet connection, or contact your server administrator.

    Filezilla: Login OK

  4. The left side of the window has the files on your computer. Find the video you want to upload, then drag it onto the right side of the window (the server).

  5. While the file is uploading, you should see a progress bar at the bottom of the screen.

    Filezilla: Upload in Progress

  6. If your upload gets interrupted or broken for whatever reason, start Filezilla again, and log in. Find the file on your local computer on the left side of the screen. In the right side of the window you should see the file you have started uploading. Drag the file again from the left to the right.

  7. You will get a message saying 'Target file already exists', and some options. Choose 'Resume' and click OK.

    Filezilla: Resume Upload

  8. There will be more server messages in the top part of the program. Eventually there will be a message saying 'Transfer complete', then 'Directory listing successful'. 

  9. If your file has successfully finished uploading, it might not appear in the right window file listing as it has been copied across now to the website. Try the next step, rather than uploading again.

    Filezilla: Upload Complete

Adding Meta-Data

Once finished uploading, you will need to add meta-data (information) to your video. You do this in the same way you would normally publish a video, just without uploading the video:

  1. In a web browser, go to (or other Plumi site) and log in. Then go to: (replace USERNAME with your login name, and with your website's address)

    Metadata: find uploaded video

  2. You will be able to see the video you have just uploaded. You will also be able to see it in the folder listing on the left side of the page. Click on this video.

  3. There will not be any video information yet, so click on the 'edit' tab near the top of the page.

    Metadata: edit video button

  4. Change the title, description, and any other information you want to add. This step is the same as publishing a video through the web form.

    Metadata: edit video step 1

  5. At step 3, you need to make sure you have 'Keep existing file' selected.

    Metadata: keep existing file

  6. Click 'save'. Your video will then be added to the reviewers queue for checking.

User Roles and Management 

User Roles

Users may be assigned different user roles on a Plumi web site. Here we will illustrate the four major user roles; member, reviewer, editor and manager. Consider the different rights or "power" of these three roles:





There are two common ways of giving a Member one of the roles above: by assigning a role to that Member, or by adding a Member to a group that has one of these roles (both explained below).

Members can have more than one role, the powers for each role they are assigned cascade (so for example a Member with additional Editor and Reviewer roles can edit content and then publish it).

Common User Management Tasks 

Any user management task on this page first requires you to log into your Plumi site as a Manager:

  1. Log in as admin, or any user with Manager role. Go to Site Setup area by clicking site setup.

  2. Choose Users and Groups from the list of Plone Configuration tasks.

Add a User

You may wish to add a new user, rather than having that user join the site themselves.

  1. Click add new user button.

  2. Fill out Registration Form for new user including Full Name, User Name and E-mail. Enter and confirm the password, and click register.

  3. Notify the new user of their account details, who may then log in.

Remove a User

You can remove a user account if you wish.

  1. Enter the username you wish to delete in the user search box and click the search button.

  2. Check the remove user box and click the apply changes button.

Add a User to a Group

You may wish to add a user to a group, for example to the Reviewers group, which has the Reviewer role already assigned. You may also wish to use groups to jointly share the ability to edit content that you wish to collaborate on (if they group has permission to edit that content, then every member of the group does too).

  1. Click the groups tab.

  2. Click the group name.

  3. Enter the username of the Member you wish to add into the Quick search box and click the search button.

  4. Check the box next to the username of the Member you wish to add to this group and click add selected groups and users to this group button.

Assign Role to a User

If you choose, you can assign a role directly to a user, rather than adding them to a group which has that role assigned to it.

  1. Enter the username you wish to assign the role to in the user search box and click the search button.

  2. Check the box for the role you wish to assign to the user and click the apply changes button.

Featuring Content on the Front Page 

You can feature videos, news and events on Plumi. Featuring content will make it appear on the front page, in the slots for Featured Video and News and Events. The most recently featured video will appear in Featured Video and the most recently featured News or Event will will appear in News and Events.

Previous versions of Plumi handled featuring content by adding a keyword or tag of "featured" to that item, this has now been deprecated. 


How to Feature a Video, News or Event

  1. Log in as a user with Reviewer, Editor or Manager role.
  2. Browse to a video, news item or event that has been published. Click the state dropdown menu and select feature.

  3. The video will now be featuredIt will now appear on the front page (the most recently featured item will appear).

Note: a user will not be able to retract an item that is featured. The item must first be un-featured, then can be retracted, rejected etc. 

Publishing Workflow 

In Plumi all content is moderated before becoming available on the web site. Ordinary users must submit content for publication (as described in the chapter on Publication States) unless they are Managers, Reviewers or Editors themselves. See User Roles and Management for more info on this.

The process whereby content is submitted, retracted, published or sent back, is known as the publishing workflow (a Plone term).

The default publishing workflow on Plumi looks something like this:

Review List and Email Notification

A Review List is used to list all content that has been added by Members, and then submitted for publication. This makes it easy for Reviewers to see what content needs to be reviewed.

All Reviewers are also emailed automatically when new content is submitted for publication. 

Publishing / Sending Back Content

  1. To visit the Review List, you must be logged-in as a Reviewer, and then click the Review List menu tab, or the link in the sidebar.

  2. To approve (publish) or disapprove (send back) content click on the content item in the list.

  3. Then choose publish or send back from the drop-down state menu. Publishing it will mean the content "goes live" on the website and is included in all listings. Sending it back will mean that the content goes into the public draft state, and an email will be sent to the contributor to notify them it has been sent back.

Note: both the publishing workflow, and the text within the email notification can be configured (if you are a developer you can visit the configuration chapter for more info on this).

Publication States

Plumi inherits the system for controlling publication states from Plone. As a basic feature, publication states allow you to make content you have created either public or private (available to everyone, or just yourself and those you wish to share it with). However the system is actually a little more complicated than that as there are various states content may be in, and this forms a key part of the publishing workflow covered in the next chapter.

For starters we'll look at the different states that content can be in. Every item on a Plumi site (videos, news, events etc.) will have a state that it is in. This chapter will help you understand what that state means.

In the upper right corner of the edit panel for any content type (videos, news, events, folders etc.) there is a menu on the right for publication state. This state menu has settings for controlling publication state:

The header for the menu will show the current publication state for the content item, such as State: Private, as shown above.

Private is the initial state when you create content (such as a video, news item or event) and in the private state, as the name indicates, the content item will generally not be available to visitors to the web site - only to yourself and to site administrators, when logged-in. If your content is not already private, you can make it so using the make private menu option.

The Submit for publication menu choice is used when content must be approved for publication by Reviewers, as discussed below. When you choose this option, your content will go into the pending review publication state.

Note: Plumi sites by default place created content in the pending state on pressing save, this however is configurable.


If you have submitted your content for publication, but wish to re-edit it, or otherwise make it unavailable for publishing, you can choose the retract menu option. It will go into the public draft state - which means it will be available to anonymous users, but won't be listed on the front page, or other listings of content around the web site. From here you can choose to make it private again if you wish, or re-edit it, and submit it for publication once more.


The Publish menu choice will be available if you are a site Manager or Reviewer. This will make the content item available to any visitor to the site, and appear within site listings (such as the front page). When you choose this option, your content will go into the published publication state.

Note: Some content taken and edited from:

Manage Languages

As a site administrator (Manager) you can define which languages the user interface will appear in, within your Plumi site. By default, Plumi offers both English and Indonesian languages (the interface is already translated into Indonesian), with more languages in the pipeline. Once you have made this language available, any Member can translate certain types of content into that language.

Note: content that has been contributed by members of your Plumi site will remain in the language it has been added, there is no machine translation in Plumi.

Currently full translations of the Plumi interface are only available for English and Indonesian. However, much of the interface is inherited from Plone, which has been translated into many different languages. If you choose to enable one of these other languages, only some of the interface will be translated.

If you wish to assist in translating the Plumi interface into another language, please consult this FAQ or contact the Plumi developers for more info.

If you wish to switch the language you are viewing the Plumi site in (from available languages) visit this chapter.

Language Settings Control Panel

To manage languages in Plumi you first need to log in as an admin, or any user with Manager role.

  1. Go to Site Setup area by clicking site setup.

  2. Go to the Language Settings by clicking Language.

Change Default Site Language

  1. Access the Language Settings control panel (above). Change the default language of your website by choosing the language from the Default site language drop-down menu.

  2. Click Save.

Change Available Languages

  1. Access the Language Settings control panel (above). Choose which languages are available on your Plumi site by multiple-selecting those languages from the Available languages drop-down menu. Click Save.


  2. Your website will now show a flag icon for that language. Any user may select to view the website in that language by clicking on the flag.


This is a guide for installing Plumi 4.x on a Debian or Ubuntu Linux server using an Apache2 web server.

Plumi is untested on other operating systems. You can find more information about installing Plone on different kinds of servers here, which should aid you in installing the Plumi buildout on other operating systems. Please contribute your installation notes on these or different OSs via the Plumi email list and/or by editing this manual chapter here on FLOSSmanuals.

Prior Knowledge

This guide requires that you already have intermediate knowledge of systems administration, Debian or Ubuntu Linux, the shell and Apache. A basic knowledge of Python is desirable for installation. Knowledge of Zope and Plone will aid in set up of your Plumi site.


Two Domains Required

Plumi requires two domains to operate although they can point to the same server:

Please ensure that these domains are set up in advance of your site installation and have had sufficient time to propagate through  the Internet (eg: 24-48 hours).

NOTE: If you server is not going to be accessed from the Internet, you still need to set up the domains within your private network (eg: internal DNS server, /etc/hosts files on all workstations, etc). If you want to run a development version to test plumi, you do not need to set up these domains. Plumi development setup will work out of the box on localhost.

Setting up Python, yasm, libjpeg and zlib, groff-base 

You can install Python and other required tools by running these commands:

sudo apt-get install python-setuptools yasm subversion python2.6-dev
sudo apt-get install libjpeg62-dev zlib1g-dev groff-base build-essential
sudo apt-get install libssl-dev python-profiler libjpeg62-dev
sudo apt-get install libreadline5-dev libxml2-dev

Creating a Python Virtual Environment

If you are running other applications and web sites on your server, it may be worth while creating a python virtual environment for developing in - this can avoid problems between python packages installed by your operating system and those installed by easy_install. You will need to have the virtualenv package installed first - in Debian and Ubuntu systems you can apt-get install python-virtualenv, then:

$ virtualenv -p /usr/bin/python2.6 --no-site-packages src/pyvirt
. src/pyvirt/bin/activate
$ easy_install

This will install the virtual env into src/pyvirt, activate it and then install the (required) Python Imaging Library into the virtual env.

Installing via Buildout

Here you will find information on how to install Plumi from buildout, which is the recommended process. A buildout puts together Zope, Plone, the third-party products and all customisations into one package. This makes it very easy for you to get everything up and running quickly. The buildout tutorial on is available here.

Some links for background reading on buildout/setuptools/disutils/virtualenv :

NOTE: Plumi uses ports 8080 to run Zope, 8100 to run zep and 8888 as the listen port for the transcode daemon. In production buildouts you can see and change all the ports used by editing the site.cfg file.  If you have other systems using these ports, please configure your buildout prior to running it (see the buildout configuration section for details).

Buildout Installation Process

This process assumes that you are creating a Plumi site called "plumi" at Before installing Plumi, you need to answer the following questions:

Where are you going to put your Plumi files on your web server?

Which version of Plumi do you want to get?

Do I want to create a development site or a production site?

Download Plumi from SVN

Plumi is available from the Plone SVN server. To download the latest Trunk version of Plumi, run the following command:

svn co target_folder_name

To download the latest Tagged version of Plumi, run the following command:

svn co  target_folder_name

NOTE: target_folder_name is where you want the code to go (eg: /opt/plumi/4.0-final or /home/zope/plumi) and Tag_Name is tagged version you want to get (eg: 4.0, etc)

Download Plumi as a Packaged Release

Plumi can be downloaded as a fully packaged release in an archive using the tar or zip format. Only tagged versions are available this way, not the current trunk. To download a packaged release, visit the Plone product page here: 

Find the release you want, copy the download link and follow the instructions below e.g.:

mkdir /opt/plumi
wget Download_Link
tar -xzvf Zip_File
cd Created_Directory

NOTE: Download_Link is the link to the package file from / PyPI e.g., Zip_File is the name of the archive file (eg: and Created_Directory is the name of the directory created after the archive is extracted (eg: plumi4.1beta). 

Set Site Configuration Information

Configure the specific information about this Plumi installation in the site.cfg, including:

NOTE: It is best to use the default 'localhost' URLs unless you are putting the transcoder on a separate machine.

Devel buildout : Run the buildout then setup & configure Plumi

  1. Prepare to run the buildout (bootstrap is a Python script that creates a number of directories and scripts based on the buildout configuration file, and downloads the latest version of the zc.buildout egg).
    $ python2.6 -c devel.cfg
  2. Run the buildout (in verbose mode). This will take between 5 to 10 minutes, possibly more depending on your server's configuration & load. Sit down, grab a coffee and wait till it finishes!
    $ ./bin/buildout -c devel.cfg
  3. Supervisor will be managing the ZEO server and the transcode daemon. Start supervisor like this
    Confirm that zeo and transcode daemon are up and running:
    ./bin/supervisorctl status
    Now start your dev instance in the foreground
    ./bin/instance-debug fg

Production buildout : Run the buildout then setup & configure Plumi

  1. Prepare to run the buildout (bootstrap is a Python script that creates a number of directories and scripts based on the buildout configuration file, and downloads the latest version of the zc.buildout egg).
    $ python2.6 -c production.cfg
  2. Run the buildout (in verbose mode). This will take between 5 to 10 minutes, possibly more depending on your server's configuration & load. Sit down, grab a coffee and wait till it finishes!
    $ ./bin/buildout -v -c production.cfg
  3. Supervisor will be managing the ZEO, Zope instances, load balancer cache server and the transcode daemon. Start supervisor like this 
    sudo ./bin/supervisord

     You can check that all the services have started via :

    sudo ./bin/supervisorctl status

Production buildout sets up and configures an nginx web server based on your site.cfg setup. However, if your server already has Apache set up on it (eg: for hosting other, non-Plumi sites), you can stop nginx and use configure apache to use with plumi. Here is the apache configuration for  to help get you started:


<VirtualHost *:80>

ServerName ServerAdmin <Directory /> Options FollowSymLinks AllowOverride None Order allow,deny allow from all deny from, </Directory> ErrorLog /var/log/apache2/plumidemo/plumidemo-error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog /var/log/apache2/plumidemo/plumidemo-access.log combined ServerSignature On RewriteEngine On # Normalize URLs by removing trailing /'s RewriteRule ^/(.*)/${SERVER_NAME}:80/demo/VirtualHostRoot/$1 [L,P] # Pass all other urls straight through RewriteRule ^/(.*)${SERVER_NAME}:80/demo/VirtualHostRoot/$1 [L,P] <Location /> Order Allow,Deny Deny from none Allow from all </Location> </VirtualHost>
<VirtualHost *:80> ServerName RewriteEngine On RewriteLog /var/log/apache2/ RewriteLogLevel 0 CustomLog /var/log/apache2/ common ErrorLog /var/log/apache2/ <Proxy> Allow from all </Proxy> #Alias /transcoded /var/log/apache2/ Alias /transcoded /home/plone/ <Directory /home/plone/> Order allow,deny Allow from all </Directory> RewriteRule ^/transcoded - [L] RewriteRule ^(.*)$ - [E=BACKEND_LOCATION:] RewriteRule ^(.*)$ - [E=BACKEND_PORT:8338] RewriteRule ^(.*)$ - [] RewriteRule ^(.*)$ - [E=PORT:80] RewriteRule ^(.*)$ - [E=PROTO:http] RewriteRule ^/(.*)/$ http://%{ENV:BACKEND_LOCATION}:%{ENV:BACKEND_PORT}/$1 [L,P] RewriteRule ^/(.*)$ http://%{ENV:BACKEND_LOCATION}:%{ENV:BACKEND_PORT}/$1 [L,P] </VirtualHost>
  1. Once the instance is running, go to the Zope Management Interface (ZMI).

    If you've used a non-standard port for Zope, replace the 8080 in the URL above with the port you have specified when configuring the buildout.

  2. Log in to the ZMI using the admin login details you specified in site.cfg (eg: username: admin, password: admin). If you want to change the admin user's ZMI password once logged in, navigate to the acl_users folder in the left-hand sidebar.

    Click on users.

    Click password.

    Enter password and confirm by re-entering, then click Update Password.

  3. Add a Plone site or instance in the ZMI.

    Click “Root Folder” in the left-hand sidebar. Choose Plone site from the Select type to add... drop-down menu and click Add.

    Enter the ID, Name and Description, e.g. ID "plumi" and Name "Plumi Site". Click Add Plone Site.

  4. Visit your new plone site by entering this URL:

    If you've used a non-standard port for Zope, replace the 8080 in the URL above with the port you have specified when configuring the buildout.

  5. Click site setup in the top right corner.

  6. Follow the prompt to change your mail settings.

  7. Change/add your mail settings and click Save.

  8. Click Add/Remove Products from Site Setup sidebar.

  9. Tick the tick box next to Plumi.

  10. Click Install.

  11. Wait a few minutes for your Plumi site to install. 
  12. Click Add/Remove Products from Site Setup sidebar again.
  13. Tick the tick box next to Plumi skin
  14. When it is done, the page will reload and you should see a freshly installed Plumi site complete with the Plumi skin/theme.

  15. Add a new user to your Plumi site for testing (the admin user may not have the correct folders created for them, as this user is created before the Plumi site is generated).

    Click log out.

    Register a new user by clicking register.

    Log in with new user account details by clicking log in.

  16. Try publishing a video in your new Plumi site (logged in as this new testing user).
  17. Check the video after it has uploaded to see if it has been created and transcoded correctly.

Configuring Plumi to start automatically

To ensure that Plumi will start automatically whenever your server is turned on, add the following lines to your /etc/rc.local file:

./bin/instance start
su zope -c './bin/transcodedaemon start'
./bin/apachectl start  

NOTE: Replace the "zope" in "su zope -c" with the name of the user you installed Plumi under (the "effective-user" from site.cfg)


If you are having trouble installing Plumi please join one of our email lists or IRC channels listed here or contact the Plumi maintainers here.

Running Multiple Plumi Buildouts

You may encounter difficulties if you are already running a Plumi site from another buildout on this webserver (note that you would usually add another Plone site within the one buildout rather than run multiple sites from different buildouts). If you must run multiple Plumi installations on the same server, you will need to set up Apache & Squid yourself & not use the default configurations included in the buildout process. You will also need to change the default ports in the installation's site.cfg file. If you are running more than one transcode daemon as well, you will need to change the name of the Transcode Daemon process ID file.

Development Map

The development map chapter describes the anatomy of the Plumi buildout, and explains the products and packages that are installed.


Plumi and Plone itself (upon which Plumi is built) are highly configurable. The complexity of what you wish to customise will vary, but this chapter covers some of the aspects of Plumi which you can configure easily, with links to further documentation about customisation.

Changing the logo and the site title are covered later in this chapter. Information covered here includes changing the portlets (content areas in the sidebars), changing the design and configuring the transcoding framework.

This chapter will briefly discuss these options:

  1. Site Setup - configuring Plumi using the built-in Plone Site Setup.
  2. Configuring Through-The-Web - using the Zope Management Interface.
  3. Further Configuration - links to further information on
  4. Customisation and Development - links to further information for developers.

1. Site Setup

The Admin user of your Plumi site, or any user with Manager privileges, can access the Site Setup area of Plumi. You can access Site Setup by clicking the site setup link in the top right. Please note that you must be logged in as a Manager to do this.

Links to different options for Plone Configuration are available, as well as configuration of Add-On Products, and an overview of the Plone version you have installed.

Using the options found in Site Setup you can:

2. Configuring Through-The-Web (TTW) Using Zope Management Interface (ZMI)

Visit this page for a how-to on configuring your Plumi site using the ZMI. This is no longer recommended as a method for configuring a Plone site, given that the modifications that are made cannot easily be brought across to an upgraded buildout. It could still be useful for minor changes in the short-term.

3. Further Configuration

For more information on configuring your Plumi site please consult the Configuration and Set Up pages on This includes info on other add-on products (Plone software modules), backup procedures, optimising performance and caching with Squid, connecting to MySQL databases and more.

4. Customisation and Development

For more information on how to customise your Plumi site please consult the Plone developers manual.

This slideshow by Martin Aspeli introduces you to extending and customising Plone 3:

Martin Aspeli Extending And Customising Plone 3


Change Logo and Site Title

To make any changes to the logo or site title you must be logged in as admin, or any user with the Manager role.

Change Logo


The logo image - logo.jpg - can be found in the skins folder of the Plone Default theme. The quickest way to replace this is simply to upload your own image and give it the same name:

  1. Go to Site Setup area by clicking site setup in the top right of the page.

  2. Go to the ZMI by clicking Zope Management Interface.

  3. Click on portal_skins (scroll down the list to find it).

  4. Click on plumi_skin_custom_images.

  5. Click logo.gif.

  6. Click the customize button.

  7. Now replace the image by clicking Choose File button and choosing your own image from your file system. Click Upload.

  8. Edit the Title field (this will ensure that the title attribute changes in the HTML). Click Save Changes.

  9. Visit your Plone site and refresh your browser to see the changes on your site. You should see a new logo in the top left-hand corner.

Change Site Title

This will change the title of your website that appears in the web browser.

  1. Choose site setup from top right-hand corner.

  2. Choose Site from left-hand sidebar.

  3. Enter a new Site Title.

  4. Click Save button.

  5. Your web browser will now display your new site title.

Static Pages and Portal Tabs

Static pages (not containing dynamic content) can be create to correspond to "portal tabs" that show in the top menu section in Plumi, to appear on all pages of a Plumi website.

To make changes to the static pages and portal tabs you must firstly log in as a Manager.

Adding/Deleting/Modifying a Portal Tab

You can edit, add or delete a portal tab. We'll use the example of deleting a tab.

  1. Create a static page in the root directory of your Plumi site e.g. by clicking the drop-down menu add new... and selecting page.
  2. Give the page a title and description, following instructions for editing content in this chapter making sure you publish the page. In this example we've created a page "test-tab"
  3. Click site setup.

  4. Choose Zope Management Interface.

  5. Click portal_actions (scroll down the list to find it).

  6. Click portal_tabs.

  7. Tick the box next to review_list and click Copy button.
  8. Click the Paste button. 
  9. Click the copy_of_review_list link. 
  10. Edit the details of the portal tab - give it a new Title, change the end of the URL to the short name of the page you added e.g. "test-tab", choose View from Permissions and click Save Changes button. 
  11. Click the portal_tabs link. 
  12. Choose the tick box next to copy_of_review_list and click Rename. 
  13. Give your tab a new name and click the OK button. 
  14. You can now view the new tab, and visit the page you created, by navigating back to your Plumi site and clicking the name e.g. Test in the top menu.
  15. If you wish to delete a tab, go back to portal_tabs in the ZMI and select the checkbox for the tab you wish to delete and click delete.




Changing the Text of a Static Page / Portal Tab 

If you want to retain a static page that appears in the portal tabs, such as About Us, and merely change what is written in that page, follow these instructions. If you want to add a different static page and have it appear in the portal tabs, or remove one, see the next section. 

  1. To change the text that appears in each of these tabs click on a tab such as About Us. 


  2. Click the edit tab and 

Configure Portlets

Portlets are the boxes of dynamic content that appear in the sidebars of a Plumi site (outlined in red boxes in the screenshot below). As a site Manager, you can change the order in which these appear, and add new portlets.


This is just one of the ways you can change the layout and design of your Plumi site, please consult the design chapter for more info.

Note: screenshots for this section of the manual are from the default Plone visual theme, which looks slightly different to the Plumi visual theme.

The Home Folder is where the site administrator can manage the portlets for most of the site. If you configure portlets in any other folder on the site, your changes will only have effect in that folder.

Adding a portlet

  1. Log in as Manager.
  2. Make sure that you are on the Home page of your site.
  3. Click the manage portlets link at the bottom of either the right or left column.
managing portlets 1   

Result: This will take you to a Manage portlets screen:

  managing portlets 2 

Note: there are two pull-down menus on either side of this page. Each pull-down lists all of the portlets that are in a Plone site.

To add a portlet, select the name of the portlet from the drop down where you would like the portlet to display.

managing portlets 3

If the portlet you have selected requires configuration, a screen will appear that allows you to fill in this information.

For instance, if you select the Search portlet, you will then be prompted to select whether to enable LiveSearch:

managing portlets 4

Once you click Save, Plone (Plumi) will add this portlet to your home page and across the entire site.

Rearranging and Removing Portlets

You can use the Portlets assigned here controls to rearrange the display order of your portlets or to remove a portlet from the display. Click the up or down arrow to reorder portlets.

If you want to remove a portlet from the display, click the red X.

managing portlets 5

Note: any portlet managment that you do in the Home Folder affects your entire Plone site. However, you can override these selections using the Block/unblock portlets controls within folders and on individual pages.

Credits: The information above is from: (visit this page for further info including how to fine-tune portlet display at the folder level, manage portlets on a group or user basis, or how to manage portlets using your Dashboard.  

Change Categories

Portal vocabularies are used to define categories to describe content in Plumi, such as video topics, video genres and submission categories. A vocabulary term is set up for that category, and then a collection is created to reference items with that category. A collection is what was previously known in Plone as a smart folder, a folder that displays dynamic content based on a set of criteria.

There are two methods available for adding a new video topic (also known as video category), video genre or callout category (also known as submission category). You can either set these up BEFORE or AFTER installation of Plumi. Setting these up before installing is a little easier, but both methods are listed below.

Before Installation

  1. Checkout the Plumi buildout as per the instructions in the installation chapter. Before running the buildout, execute the following process (between steps 2 and 3).
  2. Edit the file via the shell:
    $ vi plumi-buildout/src/ 
  3. Here you can view the dictionary vocab_set.
    from zope.i18nmessageid import MessageFactory
    _ = MessageFactory("plumi")
    vocab_set = {}
    vocab_set['video_categories'] = (
             ('poverty', _(u'Poverty / Development')),
             ('indigenous', _(u'Indigenous')),
             ('refugee', _(u'Refugee / Migration')),
             ('health', _(u'Health')),
             ('corporations', _(u'Corporations / Privatisation')),
             ('globalisation', _(u'Globalisation')),
             ('law', _(u'Law / Justice')),
             ('work', _(u'Work')),
             ('consumerism', _(u'Consumerism')),
             ('war', _(u'War / Peace')),
             ('human', _(u'Human Rights')),
             ('disability', _(u'Disability Rights')),
             ('gender', _(u'Gender / Sexuality')),
             ('race', _(u'Race')),
             ('religion', _(u'Religion')),
             ('art', _(u'Art / Culture')),
             ('internet', _(u'Internet')),
             ('media', _(u'Media')),
             ('activism', _(u'Activism')),
             ('politics', _(u'Politics')),
             ('education', _(u'Education')),
             ('biodiversity', _(u'Biodiversity')),
             ('climate', _(u'Climate Change')),
             ('conservation', _(u'Forests / Conservation')),
             ('nuclear', _(u'Nuclear')),
             ('sustainablity', _(u'Sustainability')),
             ('animal', _(u'Animal Rights')),
             ('water', _(u'Water')),
             ('biotech', _(u'Biotech')),
             ('civillib',_(u'Civil Liberties')),
    vocab_set['video_genre'] = (
             ('documentary', _(u'Documentary')),
             ('experimental', _(u'Experimental')),
             ('fiction', _(u'Fiction')),
             ('animation', _(u'Animation')),
             ('music', _(u'Music')),
             ('newsreport', _(u'News Report')),
    vocab_set['submission_categories'] = (
             ('festival', _(u'Festival')),
             ('screening', _(u'Screening')),
             ('dvd', _(u'DVD')),
             ('production', _(u'Production')),
             ('conference', _(u'Conference')),
             ('workshop', _(u'Workshop')),
             ('crew', _(u'Crew')),
             ('competition', _(u'Competition')),
             ('artprize', _(u'Art Prize')),
             ('other', _(u'Other')),
  4. Video categories correspond to video topics. Video genres correspond to video genres. Submission categories correspond to callout categories.
  5. To delete a submission category, video category or video genre, just delete the line corresponding to that entry.
  6. To add an entry just enter a new line e.g.
             ('newtopic', _(u'New Topic')),
  7. Save the file.
  8. Continue the installation process from Step 3. When you install Plumi, the categories/genres you have defined will be created.

After Installation

To make changes to the portal vocabularies, you must log into your Plumi site using the Admin account, or any user with the Manager role. Modifying the portal vocabularies after you have already installed Plumi requires a little more work.

Note: configuration of vocabulary terms and collections happens in special places within the normal Plone (Plumi) user interface, not in the ZMI (Zope Management Interface) and not in site setup.

Also note: an easier way to do this quickly would be to edit (or copy and paste) an existing vocabulary term, and an existing collection. In particular, setting collections up with criteria can be confusing at first, so in some way editing (or copying and pasting) an existing collection could be simpler, and give you greater chance of success. Please read through the full process below to get an idea of how these are set up, and then choose to edit existing items if you prefer.

This is the broad outline of what you need to do:

  1. Go to /portal_vocabularies, select category/genre/submission and add simple vocabulary term.
  2. Go to:
      /taxonomy/genre for 'video genre'
      /taxonomy/topic for 'video topic'
      /taxonomy/callouts for 'submission category'
  3. Add a new collection, give the title of your desired vocabulary term, publish and set criteria.

This is the in-depth process, using the example of adding a new video category:

  1. Visit this page (replace example details in bold with your own):

  2. Click add simple vocabulary term.

  3. Give your vocabulary term a key and a Value(name) and click Save.


  4. Visit this page(replace example details in bold with your own):
  5. Select Collection from the add new... drop-down menu.

  6. Give your Collection a title.

    and click Save.

  7. Select publish from the state: drop-down menu.


  8. Click the criteria tab.

  9. Insert the following criterias: Video categories with Criteria type of Text, Item Type with Criteria type of Select content types, and State with Criteria Type of List of values. E.g. to add Video categories with Criteria type of Text, select Video categories from the Field Name drop-down menu.

    Select Text from the Criteria Type drop-down menu.


    Click add criteria button.

    Repeat process, adding Item Type with Criteria type of Select content types, and State with Criteria Type of List of values.

  10. Choose Plumi Video from Item Type, enter your new vocabulary term (MAKE SURE YOU USE THE KEY YOU ENTERED EARLIER, NOT THE VALUE/NAME) into Video Categories, and enter published in State. Click Save button.

Warning! - Don't Delete Term Already Associated With Item

If you're going to delete a vocabulary term, make sure no video has been assigned with this term. For example, if you delete a video genre, and visit a video that is of this video genre, then you will have an error! First change the video genres of that video to remove references to the genre you wish to delete,  and then delete that video genre.

Configuring Email Notifications - Publishing Workflow

Each time content is submitted for publishing, published, retracted or sent back (see publishing workflow chapter) an email is sent to the content owner and/or Reviewers.

You can change the text of these emails via this file:

$ vi src/plumi.content/plumi/content/

Here you can navigate to, for example, the definition of the text sent to the content owner when their video is submitted for publishing (text is in bold), and make changes as necessary:

    def notifyOwnerVideoSubmitted(self):
        """ Email the owner of the submitted video """
        logger = logging.getLogger('plumi.content.adapters')
        #IPlumiVideo implementing objects only
        if IPlumiVideo.providedBy(self.context):

            membr_tool = getToolByName(self.context,'portal_membership')
            mTo = member.getProperty('email',None)
            if mTo is not None and mTo is not '':
                mMsg = 'Hi %s \nYour contribution has been submitted for review before publishing on the site\n' % member.getProperty('fullname', creator)
                mMsg += 'Title: %s\n\n' % obj_title
                mMsg += '%s/view \n\n' % obj_url
                urltool = getToolByName(self.context, 'portal_url')
                portal = urltool.getPortalObject()
                mFrom = portal.getProperty('email_from_address')
                mSubj = 'Your contribution : %s : was submitted for review.' % obj_title
                #send email to object owner
          'notifyOwnerVideoSubmitted , im %s - sending email to %s from %s ' % (self.context, mTo, mFrom) )
                    self.context.MailHost.send(mMsg, mTo, mFrom, mSubj)
                    logger.error('Didnt actually send email! Something amiss with SecureMailHost.')

Customise Design

Before changing the visual design (otherwise known as the "theme", or "skin") of your Plumi site it is helpful to understand how a Plone site is put together. This tutorial on breaks down the main display elements in a Plone site, and shows you how to control and customize the appearance of each element.

The most basic way to change the layout of your site is to rearrange, add or delete portlets as described in the previous chapter.

Changing CSS

One of the easiest ways to change the look of your Plumi site is to change the CSS. A tutorial on how to change the CSS by using the Firefox developer tool Firebug, in conjunction with the Zope Management Interface (ZMI) can be found here.

Further Info

More documentation on changing the visual design of your Plumi site can be found on here, including the following topics.

Minor tweaks:

A great reference guide to theming Plone:

Advanced theming topics:

A new way of theming your Plumi site has evolved using technologies such as Diazo or Deliverance, which enable you to create a separate HTML/CSS theme for your site, and then map existing content out of Plumi/Plone into this theme using XSLT. Some more info on this can be found here:


Transcoding of video files uploaded by users into Plumi is currently handled by Transcode Star, a Python package which creates a video transcoding framework and network service which has been integrated into Plone, which converts video files using ffmpeg and ffmpeg2theora.

Transcode Star, in addition to creating an H.264/AAC mp4 file (for use in the Flowplayer Flash video player, and/or for use by the new new video tag in HTML5) and an Ogg Theora/Vorbis file (for use by the new video tag) also creates a jpeg thumbnail from uploaded video files, for use inside Plumi. As of Plumi 4.1, it also creates a low-resolution/bitrate version of the video file, which can be activated by users with low bandwidth connections. These default settings can be altered.

Note: use of the HTML5 video tag is not currently the default playback method in Plumi, as not all browsers are compatible with this tag, and a better way of defaulting to Flowplayer needs to be implemented. However it is available as a link "Watch/Download Ogg Theora Version" which will play back a theora file in a new browser window if HTML5/Ogg is present, or download the file if it is not. If you wish to use the video tag, please contact the Plumi developer community here if you need some help.

In this chapter we look at configuring Transcode Star and changing the transcoding profiles (output video files). If you wish to run multiple Transcode Daemon processes on the same server please consult the documentation on changing the PID file at the bottom of this chapter.

Configure Transcode Star in the Control Panel

You will need to configure Transcode Star with your site details. If you have changed the port numbers you need to change the Transcode Settings to reflect this also.

Visit the Transocde Settings page in the plone control panel here (swap  for your URL):

Transcoding Profiles

If you wish to change the output of ffmpeg (the transcoding engine), for example to output a different codec, or use different settings, you can set up the transcoding profiles.

You must set up these profiles prior to running the buildout.

You can edit the profiles for transcoded video files by making changes to the buildout configuration file in the directory where you installed Plumi:

$ nano site.cfg

Go down to the transcode-profiles. You can see that by default an .mp4 H.264/AAC, a low resolution .mp4 H.264/AAC and an .ogg Theora/Vorbis file are created, as well as a jpeg thumbnail.

transcode-profiles = [ { 'id' : 'jpeg', 'cmd' : 'scripts/getThumb %s %s', 'supported_mime_types': ${transcodedaemon:default_supported_mimetypes}, 'output_mime_type': 'image/jpeg', 'output_extension': 'jpg' }, { 'id' : 'mp4', 'cmd' : 'scripts/transcodeMp4 %s %s', 'supported_mime_types': ${transcodedaemon:default_supported_mimetypes}, 'output_mime_type': 'video/mp4', 'output_extension': 'mp4' }, { 'id' : 'ogg', 'cmd' : 'scripts/transcodeTheora %s %s', 'supported_mime_types': ${transcodedaemon:default_supported_mimetypes}, 'output_mime_type': 'video/ogg', 'output_extension': 'ogv' }, { 'id' : 'low', 'cmd' : 'scripts/transcodelow \"%s\" \"%s\"', 'supported_mime_types': ${site:default_supported_mimetypes}, 'output_mime_type': 'video/mp4', 'output_extension': 'mp4' } ]

For example, the ffmpeg command to create the .mp4 file can be found in scripts/transcodeMp4:

ffmpeg -y -i "$1" -s 640x480 -threads 0 -r 25 -ar 44100 -vcodec libx264 -crf 22 -vpre medium -acodec libfaac -ab 64k -f mp4 "$2"
qt-faststart "$2" "${2}.fst"
mv "${2}.fst" "$2"

To edit the settings of the .mp4 file, you change the parameters. For example, to change the video framesize or resolution, change e.g.


to this:


Other parameters for the .mp4, .ogg and .jpg can be altered in a similar fashion. New profiles can also be added.

It may be useful to reference the documentation for ffmpeg and ffmpeg2theora.

Transcoding and FTP

Videos uploaded through ftp don't get picked up by the transcode daemon currently. A workaround to this issue is described in this ticket

BitTorrent Configuration


Plumi provides BitTorrent support since Plumi 4.1, through collective.seeder. For each uploaded video file, a torrent file is created and is available for download from the video view page. Since Plone/Plumi 4 uses blobstorage for storing files, a symbolic link is being created for each video file. 


You can configure the announce urls for the torrents by visiting the Plone Control Panel and clicking on Seeder Settings.

Visit the Seeder Settings page in the plone control panel here (swap for your URL):

You will also need to specify the absolute paths to the directories where you would like to store your symbolic links and torrents.


Automatic Seeding and Seeder statistics

Automatic Seeding can be done by using any BitTorrent client that supports autoseeding all torrents from a specified folder (most known clients do). However in order to retrieve seeder statistics for each torrent you need to use the Deluge Torrent Client Daemon (deluged) and cosole (deluge-info). Information on how to configure deluge can be found on the Deluge User Guide. You can also use deluge-web for a web interface to configure deluged through a graphical intereface.

Once deluged is on the system path and torrents start gettting seeded, you should see the available seeders on the video view page. 

Development Map

This page is designed to give developers an overview of the Plumi software. This is a work in progress, further documentation of the Plumi project will follow.

Anatomy of Plumi Buildout

This is what you will find inside your Plumi buildout, with a brief explanation of each file/directory. This may change between different Plumi releases, so it should be used as a guide only.

Plumi Packages and Application Setup

The Plumi buildout consists of a few elements as add-ons to Zope and Plone, which are the Plumi application setup, Plumi skin, Plumi content types and third-party products or Python packages. This section needs filling out in more detail, but should give you an overview of what Plumi encompasses.

Getting Help

You can get in touch with other Plumi developers via the Plumi blog which has information on email lists, the Plumi IRC channel and a contact form to send an email directly to the project maintainers. We can't always solve your problem, but should always be able to offer some advice or direct you to other people who may be able to help.

It's always best to browse through the issue tracker before asking a question, as this lists known issues and feature requests.

If your query relates to customisation beyond Plumi itself, you can also visit the Plone chat rooms or support forums if you have more specific questions. Or learn how to design, build, and deploy a website in Plone through one of the numerous Plone training sessions around the world.



All chapters copyright of the authors (see below). Unless otherwise stated all chapters in this manual licensed with GNU General Public License version 2

This documentation is free documentation; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this documentation; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.


This manual was originally written by Anna Helme, edited by Grant McHerron and Andrew Lowenthal, and produced by EngageMedia, with the support of the Open Society Institute. Please see individual chapter credits for updated author and contributor details.

Browse Videos
© Anna Helme 2010
Andrew L 2010
Grant McHerron 2010
Lusiana Rumintang 2010

Change Categories
© Anna Helme 2010
Grant McHerron 2010

Change Logo and Title
© Anna Helme 2010
Andrew L 2010
Grant McHerron 2010

© Anna Helme 2010
Andrew L 2010
Grant McHerron 2010

Configure Portlets
© Anna Helme 2010
Grant McHerron 2010

© adam hyde 2006, 2007
Anna Helme 2010
Grant McHerron 2010

Customise Design
© Anna Helme 2010
Grant McHerron 2010

Development Map
© Anna Helme 2010
Grant McHerron 2010

Edit Content
© Anna Helme 2010
Andrew L 2010
Grant McHerron 2010

Email Notifications
© Anna Helme 2010
Andrew L 2010
Grant McHerron 2010

Embed Video On Another Website
© Anna Helme 2010
Andrew L 2010
Grant McHerron 2010

Featuring Content
© Anna Helme 2010
Andrew L 2010
Grant McHerron 2010

Getting Help
© Anna Helme 2010
Andrew L 2010
Grant McHerron 2010

© Anna Helme 2010
Andrew L 2010
Anne Gilles 2010
Grant McHerron 2010

© adam hyde 2006, 2007
Andrew L 2010
Anna Helme 2010
Grant McHerron 2010

Key Features
© Anna Helme 2010
Andrew L 2010
Grant McHerron 2010

Manage Languages
© Anna Helme 2010
Andrew L 2010
Grant McHerron 2010

Profiles and Social Networking
© Anna Helme 2010
Grant McHerron 2010

Publication States
© Anna Helme 2010
Andrew L 2010
Grant McHerron 2010

Publish Event
© Anna Helme 2010
Andrew L 2010
Grant McHerron 2010

Publish News
© Anna Helme 2010
Andrew L 2010
Grant McHerron 2010

Publish Video
© Anna Helme 2010
Andrew L 2010
Grant McHerron 2010

Publishing Workflow
© Anna Helme 2010
Andrew L 2010
Grant McHerron 2010

Sharing Content
© Anna Helme 2010
Grant McHerron 2010

Static Pages and Portal Tabs
© Anna Helme 2010
Grant McHerron 2010

Switch Languages
© Anna Helme 2010
Andrew L 2010
Grant McHerron 2010

© Anna Helme 2010
Andrew L 2010
Grant McHerron 2010

Translate Content
© Anna Helme 2010
Andrew L 2010
Grant McHerron 2010

Uploading Via FTP
© Victor Rajewski 2009
Andrew L 2010
Andrew Lowenthal 2009
Anna Helme 2010
Grant McHerron 2010

User Guide
© Anna Helme 2010
Andrew L 2010
Grant McHerron 2010
Lusiana Rumintang 2010

User Management
© Anna Helme 2010
Andrew L 2010
Grant McHerron 2010

Video Podcasting
© Anna Helme 2010
Andrew L 2010
Grant McHerron 2010

Watch Videos
© Anna Helme 2010
Andrew L 2010
Grant McHerron 2010
Lusiana Rumintang 2010



Free manuals for free software



General Public License

Version 2, June 1991

Copyright (C) 1989, 1991 Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA

Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.


The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too.

When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.

To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it.

For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.

We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software.

Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations.

Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all.

The precise terms and conditions for copying, distribution and modification follow.


0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you".

Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does.

1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program.

You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.

2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:

a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change.

b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.

c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.)

These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.

Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.

In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.

3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following:

a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,

b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,

c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.)

The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.

If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code.

4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.

5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it.

6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License.

7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program.

If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances.

It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.

This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.

8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.

9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.

Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation.

10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.