Indycore development proposals

2 project proposals for the FSOC

About Indycore

Indycore is a software package for open publishing and social activism websites. It’s being developed by the tiny technical team of indy.gr.

Indy.gr is a project that started after an ugly split of the athens.indymedia.org collective some years ago. It is an open network of people offering grassroots, non-corporate coverage. Officially, we are not yet a part of the Indymedia network, but we consider ourselves bounded by the Indymedia Network Principles of Unity and we plan to apply soon for Indymedia membership. We never received any funding for Indycore or indy.gr. We pay all the expenses collectively and contribute voluntarily our personal time to the project.

The indy.gr website has been online for the last 14 months in some sort of beta mode. It was updated last month to the new version of Indycore which was radically improved. We’re very happy since the last update. There are still a few rough edges, but we think Indycore could soon become useful to others as well. Especially to collectives from the Indymedia network, but also anybody who wants to create an open publishing website with social networking tools focused on collective action.

Indycore is mostly based on the following technologies:

  • OpenCore – a platform for social activism
  • Plone – a Content Management System
  • Plone4Artists – a bundle of components for managing video and audio in Plone sites
  • Zope – an application server for building content management systems, intranets, portals, and custom applications
  • Python – a lovely and efficient programming language

Indycore is licensed under the GPL v3. Its dependencies are GPL or GPL-compatible.

Basic functionality

  • open publishing of articles, events, images, audio, video
  • comments on content / discussion forums
  • tagging & geotagging of content
  • practical tools for reviewers to facilitate the categorization of content and a moderation process which is both transparent & efficient
  • registered members can start projects and invite others to become project members
  • projects can be open or closed, can use wiki pages, mailing lists, a blog & a task tracker to self-organise and communicate their cause
  • versioning of all articles, pages and events
  • multilingual

For a live demo check out indy.gr. Report bugs and feature proposals at trac.indy.gr

Why?

Because the available open publishing systems are not good enough and are hard to maintain. There has been quite a lot of discussion during the last years, about reinventing Indymedia and about the need of a modern codebase that inherits the features of existing content management systems and adds social networking functionality to the mix.

We have been participating in the IMC-CMS process in order to join forces with other Indymedia techs.
But to our knowledge, so far nobody else ever managed to sucessfully install Indycore, although a couple of people tried a couple of times each. This was probably due to the installation process, which was even more fragile and hard to follow some time ago, and the constant changes in the environment that were going on untill recently, breaking the build quite often.

We chose Python and Plone/Zope because they’re great technologies that we’ve been happilly using for other projects. We decided to integrate with OpenCore because it is a free software project with great features, similar goals and is developed by a talented and well funded team.

Future

We are working on Indycore and indy.gr voluntarily and our progress has been much slower than we expected when the project was started. However, we plan to keep on it for as long as possible. Indycore will be supported and developed further, for at least as long as indy.gr keeps breathing. We are looking for more participation in the develoment process, especially from Indymedia techies.

We will regularly update Indycore to work with the latest release of OpenCore, in order to inherit their improvements. This way we expect to integrate soon state of the art tools, like maps/geolocation interfaces, with minimal work.

Project proposals

1. Study, Document, Release and Evaluate

A developer with prior knowledge of Python should

  • study the code, install it locally and test its functionality
  • report any bugs and improvement proposals to the issue tracker
  • document the basic structure of the system and write how-to texts for common real-world customizations targeting site administrators and new developers
  • work with us towards a release which will be Plone 3 compatible & will have a greatly simplified installation process
  • study the performance of the new release under heavy simulated traffic and with lots of content. Define the minimum hardware requirements for real world use
  • write an overall evaluation of Indycore. Does it serve its purpose? What’s good, bad or ugly? How could it be improved?

2. Video Transcoding, better presentation, improve large file management

Indycore is already quite good at managing uploaded videos, but it could get a lot better with some relatively simple steps. We want all uploaded videos to be automatically trancoded to flv format youtube-style. Plumi is a Plone based software developed by engagemedia.org that uses indytube to do just that. We need to borrow and adapt some code to make it possible for Indycore as well.

There are also a couple of weak spots in the management of large files. All the video & audio content is currently stored in the ZODB (Zope Object Database) which has not been good at storing blobs untill now. However, the problem has been fixed in latest versions. We need to integrate the component “plone.app.blob” which depends on Plone 3.

It’s also important to provide a good widget for uploading large files that displays the progress of the upload. PloneFlashUpload is the obvious choice, since it is used by Plone4Artists, but there might be better ones.

We could also add more metadata to videos and improve the display of video listings, by borrowing code and interfaces from Plumi and Plone4Artists.

Finally, it would be great (and quite easy) to allow posting of links inside articles in addition to file attachments. Whenever the link points to an external video from a service like youtube, the video should be embedded automatically and its metadata should be retrieved directly from its source. This is already possible in the Plone4Artists package. We just need to integrate it.

To summarize. Whoever gets this project should complete most of the following

  • integrate indytube for flv video transcoding
  • integrate plone.app.blob (that might entail some contributions to the Plone 3 migration that we’ll be working on)
  • integrate PloneFlashUpload or something similar
  • add more video metadata, improve display of video listings
  • enable the posting of links under articles. Retrieve metadata and embed content when the links point to video/audio from known sharing sites

Goals

  • attract & train a couple of new developers
  • make Indycore better for end users
  • make it more approachable by Indymedia techs and others that could use and develop it further. Improve the learning curve for site administrators and new developers.

Social benefits

Make it easy to create open media publishing websites with state of the art tools for information spreading, social/activist networking and organizing. Help people make the existing mass media obsolete and organize collectively towards social action.