From the start of this year, in my non-work spare time I mostly stayed away from that other project (GIMP) and have been designing and writing a GTK+ application in C for distribution of high definition video, audio and documents over the internet. There is a big opportunity in the media space, and many apps are structured towards commercial content with DRM. We need something in our community backyard, and so Gum is a media distribution system which doesn’t implement DRM and works around the need for piracy. But this is not the only difference.
The following are going to be Gum’s 1.0 features, and I will continue to work on it in my free time (but you can help me speed this up—see further below):
- Support for playback of high-definition full-length video, audio and documents (similar to Acrobat Reader / Evince).
- Support for multiple audio-streams for different languages, or things like director’s commentary (video, audio)
- Support for multiple video angles (video)
- Support for chapters (video, audiobooks, real books)
- Support for subtitles (video, audio - lyrics and text, documents - text and annotations)
- Multi-channel audio and high-definition video (1080p)
- Full UTF-8 i18n and localized in various languages, with country-specific cultural focus
- There is no DRM. There will be support for exporting these media into portable files for use in other applications, apart from support for portable devices such as iPod and eBook readers.
- We will start with existing content from various publishers such as Librivox, Archive.org, Magnatune, PLoS, etc., and will add an upload facility later.
- P2P system for handling high traffic loads (details further below).
- Gum is and will remain a free software application licensed under the GNU GPL.
- Ad-free Creative Commons, public-domain and other freely licensed content.
- We will have commercial content with advertisements. This will mean convincing publishers such as O’Reilly, Hollywood and Bollywood to publish on Gum. Ads will pay for the plays just like on television, and hopefully viewers won’t have to pay for content. This could kill the need for many forms of digital copying and re-distribution called ‘piracy’, as everyone now has free and convenient on-demand access to content. We have a reasonably nice implementation to combine the use of P2P, advertisements and the ability to export to files.
- We will also likely have support for purchasing digital content without ads (and without DRM).
- Banu’s website will contain the web-application, with categorized browsing, metadata, previews, accounts, bookmarks, channel subscriptions, comments, ratings, charts, suggestions, etc.
These are a LOT of items for a single person to do quickly for 3 types of media (video, audio and documents). But everything in the list above is do-able now. There are excellent free software libraries to implement all of the functionality such as libc, GTK+, poppler, GStreamer and libavcodec (ffmpeg), GNet, libxml2, Cairo, Tango icons, etc. and it can all be ported to multiple platforms. I know how to implement all of the GTK+ application and web application (and you have some of the proof below and on Banu’s website). Let’s make Gum the standard free software system for digital media distribution, free of DRM issues and other blues. So what needs to be done? I’m posting an article about it here as I need help and any advice you may want to share. Here is what the program currently looks like. It is a GTK+ app, so it’s themed according to the default theme. It can be themed to look different too.
So far a lot of the main multi-threaded app including UI, updates checking including XML schema changes, and XML HTTP communication between server and client are implemented. It is written in C using GObject and uses GTK+/GIMP’s coding style. The Banu website framework with user accounts management is also ready (the public site is an old branch). Currently I am working on the backend database.







Help!
The reason I’m posting this here prematurely is to ask for help.
I want to work full-time on Gum, and if possible, have one or more co-developers to speed up its development. Banu will also require hosting for the web application and content (machines, disk space, bandwidth, we’ll take care of the distribution software).
With bambi eyes, I am looking towards a free software company such as Red Hat / Sun / Novell / Nokia / etc. (any employees want to take this up?), or even any media houses such as Sony, Warner Bros, Paramount/Viacom, or rich individuals who want to bring about DRM-free media to help me by funding salaries and providing hosting, if they think that such an application will be beneficial to the CC / free software community and the general public. I can’t offer a percentage of Banu as collateral for this. The reason is simple. There’s a mission, a plan to do good with Banu and Gum, and at this point I don’t want to be influenced away from it. There’s a solid plan and it just remains to be acheived. If Gum gets funded, and generates commercial revenue eventually, I will thank them appropriately
. How much money can a company lose by paying a salary to just one or two more developers to do good things? Come on, please try and help!
About me, I have an MS degree in computer science. You can go through my resume too. If you can help me, please contact me. I’m also open to advice and criticism (if you’re reading this blog somewhere, I’m a member of that community and you can tell me).
Why yet another iTunes-like GTK+ app? Or why not extend an existing app?
Sorry if I have offended anyone by this, but although Gum seems similar to apps like Rhythmbox and Banshee, it isn’t. It has to support multiple media types, do P2P (not straightforward because we are going to have ads in here) and has plenty of web-service integration. It’s perhaps possible to start with one of these apps, but it’ll likely be more work than starting from scratch, especially to a developer who doesn’t already understand these projects. So the code was started from scratch.
What P2P system does this use?
The app is being written to use a P2P method similar to Bittorrent to handle media distribution under loads. It isn’t exactly Bittorrent due to implementation differences, but the protocol structure is very similar and it will have that system’s benefits. I am also looking at integrating UDP NAT hole punching with the tracker’s help and STUNT so that connections can happen through firewalls without inconveniencing users with manual configuration.
What media codecs can this system support?
For video/audio, anything GStreamer and libavcodec (ffmpeg) supports, including 1080p H.264, MPEG-2 video, Theora, MP3, 5.1 channel AC3, Ogg Vorbis, AAC, etc. For documents, PDF and DjVu.
How is this different from Democracy Player, Bittorrent, Azureus, iTunes, Joost, Google’s plans, etc.?
Each of these apps has a slightly different feature set, and Gum has its own way of doing things: Gum is specifically for non-streaming pre-download high-quality content, with the ability to view items free of cost with ads. There is no DRM. Gum provides 3 media types (video, audio, documents) and uses P2P.
How can I keep an eye on what’s happening? How can I help?
I’ll post updates on this blog (syndicated wherever you’re reading this). I’ll publish Gum’s source code once the backend and app code have stabilized a bit, and request gnome.org project support at that point (if you know me, ask me for access).
I request you to please tell everyone you know or publish on your blog that I’m requesting help to allow me to work full-time on Gum and pay for/host Banu’s servers, and perhaps bring on one or more co-developers so that this can be sped up.






