Initial commit: HPR Knowledge Base MCP Server

- MCP server with stdio transport for local use
- Search episodes, transcripts, hosts, and series
- 4,511 episodes with metadata and transcripts
- Data loader with in-memory JSON storage

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Lee Hanken
2025-10-26 10:54:13 +00:00
commit 7c8efd2228
4494 changed files with 1705541 additions and 0 deletions

923
hpr_transcripts/hpr0358.txt Normal file
View File

@@ -0,0 +1,923 @@
Episode: 358
Title: HPR0358: Libre Planet 2009 Part 4
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr0358/hpr0358.mp3
Transcribed: 2025-10-07 18:51:37
---
Mm.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
that is, you know, taking the web by storm and I'm the little guy trying to stop that
tide. So the first thing I think that we have to do, as principle, is be pragmatic. We're
doing this now in 2009. We need to really not think about what's going to be the all-singing
all-dancing, perfect network services. We need to use existing technologies, use the structure
of the internet as it exists right now. This doesn't mean that we can't think down the
road to ubiquitous computing systems that are universally addressable and real peer-to-peer
systems, things like that. But I think that we need to build the kind of systems that work
today. And that means that we need to be building around a hot and spoke architecture. This
is, you know, client server architectures. We need to build our system like this. The
fact is that most desktop laptops, personal computers, don't have a universal permanent
address. Because no one using their computer in here has a universal permanent address right
now. Most servers do, which means that they are reachable 24-7 and our client machines,
the personal machines are not. And this is not entirely true, this is not perfectly true,
but it's mostly true. An example that I use, here actually uses the email, probably everybody,
right? Okay, who has their own email server? Okay, so who has their email SMTP delivered
directly to their personal computer? Really? So you have a, wow, I'm impressed, actually.
I think that very, very two people do that. Most of us, if I'm out or pop, we use a hub
and spoke system. So it's pretty unusual that we see direct SMTP delivery. I think it's
possible, but I think that we're really going to see more hub spoke architectures. That's
the way it's really got to be for now. Finally, I think that provide a third principle is that
when we're providing services, we need to use the web. I know that seems kind of strange,
but there are people who are thinking outside that box and I think we need to kind of focus on it.
It works. It's scale. It's rich. It's got a good UI. It's ubiquitous. It's very easy to work
with. Very smart people continue to work on making it better. And it also makes the cost of
adoption about three to four orders of magnitude easier. People just don't have to install as much
software. They have to navigate to a web page. So it's considerably easier for people to use.
Fourth principle that I think is going to be very important is to use a free software license
that supports network services. And principally right now, that's the aferro general public
license, AGPL V3. I use it for Leconica. The key part of this license is that it, excuse me,
keep out of this license. It requires redistribution of source if people make a service available.
And that means that it becomes viral even for users of services. I think that making the software
license easily visible in your software will let it be well-known, put it in the photo of every web
page if you can, really kind of forwards the value of the licensing. It gives people awareness
over their rights. As a fifth principle, I think that it's important to build in licensing,
data licensing, content licensing to your software as early as possible. With Leconica, we built in
licensing for on a site-wide basis from the get-go, from the first launch. I also think it's a good
idea to use a free culture license by default. We use the Creative Commons attribution license 3.0
as the default. When you install our software, unless you fiddle with something, the stuff coming out
is going to be CC by. I think that's great. And I think that's a really good idea to do.
Leaving it up to users as a, you know, all rights reserved is the default and then they have to
choose another license means that, you know, your adoption of that is going to drop down really far.
I think that it's important to let give people choice if they want to change the way from a free
culture license, or if they want to use a different free culture license from the one that you have,
let users or service providers kick those, but use a free culture license by default.
I think an important part of providing a free network service is to use DNS,
use domain names as part of identity, especially using urls if you can.
Examples here is email addresses, xmpp. These are ways that we use, we distribute systems,
we let people be part of a federated network and we use the domain naming system as the names
facing for that. Trying to build something else or something different or something new that
does it differently and have a registry somewhere. Is a lot of work, it's totally unnecessary,
people understand domain names, they will make it work. Open ID, urls is another one here,
and blogs is a great example. People really understand that they own the domain for their blog.
So there's that. Speaking of distributed identity, I think it's important to build in
distribution early. This is something that and providing links between instances very early on.
If you're just software, these are my newly announced principles. If your software has any
social aspect, you should build in support for distributed sociality early on. Distributed
sociality meaning that I'm on one server, you're on a separate server, we can communicate,
we can have a relationship that's expressed on both sides of our servers. I can operate on objects
like images or text or whatever, on your server and vice versa. So if software has
a social aspect, it should be distributed and all software has a social aspect. So all software
should support distributed sociality. Two important technologies here are open ID and
open ID is an authentication, distributed authentication protocol, OAuth is a distributed
authorization protocol. Both are really interesting and really should be the first thing you go
to if you're thinking about distributed sociality. On that note, kind of going to be the way that
things go through this whole talk is like after I just said that, support up in standards. I think
this seems like something very simple that a lot of us understand is important, but it makes it
really easy for people to build free software, compatible free software for your software. So if you
support an open standard for authentication, if you support an open standard for producing data
feeds, if you support open standards for lots of things, that means that other people can use
standards and create cool software and become part of an ecosystem. Another thing that's important
there is being semantic. And the semantic web is this kind of, especially on the web, it's kind of
gotten this reputation for being this egghead idea that nobody really uses. And being a roomful
of eggheads, we probably all think that that's okay. But I think semantic, the semantic web is a huge
democratizing force on the web. It means that we put a lot of smarts that we already know about
already into our data and that means that our software doesn't have to be very smart. Smart
software tends to be proprietary software, patented software, it tends to be protected by trade
secrets. Really smart software is why say Google is so important and why other kinds of search
engines are so good is because they've got really smart software. But that makes it really hard
to build a competitor to Google because you have to have the same kind of smart software.
On the subject of Google is that I think that web software needs to be, if you are building web
software for free network services, you need to really think about how your software looks to
search engines. This sounds kind of sleazy, nobody likes these terms, search engine marketing,
SEO, but they are what gets people to see your software, what gets people to see the content
that's in your software, and it gets more people to use your software. People will use your software
if it will mean that they will get better at Google rankings. They will like that. They will take
that if you hide all your pages behind weird earls or require some kind of login to get things or
you don't let search engine robots find your pages or things like that, that's going to mean that
people won't want to use your software. So make your software SEM savvy that makes people like it,
makes robots like it. There are some really nice tools that you can build site maps, ping servers,
need to, one of the great things about making your websites SEM savvy is that it also means that
other third party tools can access the site better too. Another issue that came up for me
very early with Leconica was that we were going into places where there weren't existing open
standards and weren't existing protocols. So I had to create a protocol for distributed micro
blogging, called open micro blogging 0.1. It's not brilliant, it's very simple, it doesn't cover
the whole problem space but it's enough to get things going. It's enough to get people interested
and involved and kind of establish the framework. What we've actually done with open micro blogging
is I didn't know 0.1 version which was about six months ago when we launched Identica and we're
going to be launching 0.2 version that has had the input of various other micro blogging implementers
which means that we got something out there and then it was enough to make a stake in the ground
and get us moving forward. So I'm really happy about that. Probably the big achievement there is
Google's micro blogging engine Jakub is going to be supporting open micro blogging in its next
version. It's just been released into open source and we're going to be having an open federated
network of Jakub and Leconica instances. So that's going to be really huge. But that's there.
I think another thing that's important and this is something that we really fall down on
with free software for web services is supporting a range of usage. This means that
where we usually do find is like download the software and install it on your server and you'll
be fine. That's great. Well that is only one kind of user. There are other kinds of users.
There are going to be people who want to have a hosted service that is they don't want to download
the software and install it on their servers. They want to run it on your server. We should be
reaching those people. And we also should be reaching people who just want an individual account
on a single instance of the software. So this is one of the things that we're doing with
Identica. We're going to have a hosted service that we're going to launch in April. We also
have a major service which is the Identica service that we use for individuals who want an
individual account. So we're just reaching across that spectrum. That's not something that's easy
to do with other kinds of web software. And that's where I think we really need to do a better job,
whether it's a nonprofit or commercial entity that's providing those services, whether it's
exactly the development group or if it's an associated group, I think bright with Drupal is
a good example there. But making sure that these options are available, finding someone who
does who will provide those services really important. Another thing that I think is important for
network services is building to scale. And when people talk about scaling, they always talk about
this like really big end of the scale. That end of the scale is these are like number of users
at the top and then kind of what kind of installation we're talking about on the bottom. You know,
with like one to ten users, you can have a small installation of most kinds of software on commodity
web hosting. You know, you can just go to GoDaddy and get like they're $2.95 on web hosting. You can
go to, as you get larger, you really have to go to least servers, virtual servers, that kind of thing,
you know, with 100 up to like 10,000 users, you know, which is kind of the medium-sized website.
I think I need to really large installations. These are on servers of people own or else they have
a very big account for these servers, you know, 10 to the fifth up to 10 to the eighth, which is really,
that's about the size of Yahoo, you know, that's the most user biggest user basis that we're talking
about. And we have to build software that goes up and down the scale, right? Most of the installations
will be out of those small installations. But these big ones are going to probably reach the
most users. And I don't know about the middle there. So each one is important. Concentrating on
one part of the scale and ignoring the other parts of the scale, I think is a really big mistake.
And I think that we need to be able to reach everywhere on that scale. One thing that's been
very important for me, one of the things that I've really understood as I build free network
services is the importance of making big data dumps. Give people all the data, make a big tarp
all of everything that you can, all your public data, and make it easily downloadable. I think this
is one of the reasons that Wikipedia is, it seems strange, but it's one of the great things about
Wikipedia is that you can get all of Wikipedia. It's a, it's like a 20 gig download, I think, but what?
That's just like a tarp like that. Really? Yeah. All of it to the wall of history. Yeah, yeah.
So it's huge, it's huge, you know. Images are another two and a half tarp like that.
Okay. But also making a dump available to people that they're on private data. So these are things
that I'm working to build into Leconica. They're not actually there yet, but things that have
proved very important for other services that I've seen. Feds are also hugely important
and something that we have to be important. So feeds should be available to
by default to downstream users. You should, when we build software, we should really put that
into the software is like, you know, putting those feeds out there. And we should also work
hard to find the aggregators who are going to use these feeds for searching, for directories,
for archives, all the things that would use those data, make sure those, those are going out.
When people download and install the software, it should be integrated into a,
an ecology of feed consumption already. I think that new free network services
are really needs to support each other. I think that there are some great free network services
out there already. A lot of stuff in the geospatial, a lot of open street maps, for example.
Geonames is a really cool geolocation, free network service. Search Wikipedia, I think, is probably
getting to be, their data is not entirely free, which is kind of not a good idea, but they do have
a lot of data that's pretty free. And starting to encourage other free network services is
really important. Obviously, identical would go up here too, if I wasn't to humble to put it
actually on that list. But we all move faster if we're encouraging each other and we're using
each other. We also, you know, someone using identical who goes, who does a search for a location
and gets to open street maps is now introduced to a new free network service that they didn't know
about and that they can participate in. And you can also depend on these other free network
services to advance your own functionality. But I also think that it's important to engage with
existing proprietary services. The fact is, today, in the world of free network services, it's like
1989 in the world of free software, right? We've got like EMAX and GDB and that's it, you know?
We just, we don't have a full software stack for free network services. You cannot live your
entire online life with free network services unless you live a very limited online life, right?
If you want to debug and edit stuff in EMAX. So, and just like with the earliest free software,
we have to live in the ecology that exists right now. And if we don't, so you have to install on
the proprietary unices that exist with the early free software. Now we need to engage with
the proprietary services that exist right now. That's where people are. That's the environment we
have right now. And I know that's not always the nicest thing to think about. And I know that
there are probably people in the room who've never had to live in a time where you didn't have an
entirely free free software desktop system. But trust those of us who lived in the year 1999,
it was it was a hard world, but we made it through, you know? And we have to do that right now with
non-free network services. So another thing that's really important for free network
services is making it easy to share source. And it doesn't have to be hard to do this. Again,
building this directly into the into the software is important. Building in source links
have easy ways for users of a service to find the source. And also, if there's a plug-ins,
themes, anything like that that's built into the software, make links to those too. Mediawiki does
this really nicely. And it's one of the things that I think is really great. One thing that is not
easy to do is if the software has actually been modified, but there's no like tarball or anything,
to actually slurp that source out, that's a little trickier. I haven't seen anyone do that yet.
I'm not sure if that's actually even that necessary. One part about being part of a free
networking, free software networking, excuse me, free network services and ecology is providing
remote access. So a remote API's, simulate third-party development, they mean that your software,
your service could be part of match-ups where someone could take, you know, identical,
identical micro-blogging notices and place them on an open-street map to map, nifty, things
like that. It also allows providing your remote API to means that people can use your software from
non-brows or environments like desktop clients, laptop clients, mobile clients. We use a remote API
for identical that we borrowed in Toto from Twitter. So we've used the exact same API that they
have, which means that we have a lot of support from third-party developers, which means that more
people are using our software or service. Additionally, we provide a plug-in system and I think the
most successful web software is really those that provide server-sized plug-ins. They stimulate
contribution. They let people get involved without actually having to touch the core code. They make
it easy to integrate with other services that may not be appropriate to build into the core code,
but you can build them into a plug-in. They also let people take your software and start
integrating into their existing systems. So it's a great way to give people a reason to install
your software. Theaving and skins, I know this may seem strange, but I think it's a hugely
important thing to get adoption of software for free network services. People really like good,
lucky websites and this is a big part of their first sniff of a website is how good it looks,
how rounded are the corners and how fancy is the color theme, right? And all that kind of stuff.
And if it does not look good, they will make a gut response and be out of there in less than a second,
like literally less than a second. The site owners also, people who are providing services
want to provide some kind of branding, put their mark on the site, they want to make it look like
it's theirs. So it's important to support theming skins. Using template engines, I think is
kind of overused, but I think definitely CSS can make things very charming and well done if you've
got very simple HTML output. Another thing that I think that we have a huge advantage on
as people who are developing free network services is being international. The web,
business world, especially in North America, still thinks primarily in English. Actually,
still thinks primarily in terms of the San Francisco Bay area and occasionally thinks outside
there to the rest of California. But the idea that there are another 7 billion people in the world
who might want to use some software kind of stumps a lot of people with Silicon Valley,
which is great because that means we can go in there and provide services to them.
And those people around the world are looking for ways to participate in web culture,
in a social web, and in a web culture that cuts them out linguistically, we can provide the
tools to integrate them back in. Not only that, but there are great translation resources out there.
There are people out there who speak to Lugu or Bulkarian, and all they do is look for free software
projects to contribute translations to. Advocates for their language and they want to see those
translations happen, and they just come out of the woodwork looking for ways to do that. And then
all of a sudden, you know, we've got the Twitter that speaks Ukrainian, and people who in the Ukraine
can either go to Twitter where they have an option to speak in Spanish or in Japanese or English,
or they can go to Identica where they can actually speak in Ukrainian and get UI in Ukrainian.
This is something that in the free software world, we have total advantage on and we need to
capitalize on it. I also think using Wikis for documentation is really good to capitalize on
those translation resources too. Finally, I think this is kind of finally. I might have a
couple more. It's really easy to use network services. It's really easy. People who are used to
using browsers can use these proprietary non-free services really quickly. Signing up for Facebook
is really easy, and we need to make our free network services very, very easy too. We need to make
installation of free software on websites very easy. As easy as we can, we should make setting up
an account on an existing server cheap, at least, or free of possible, free of charge,
and setting up an instance on a hosted service should be really easy too. These are things that
just a matter of like one or two clicks can be the difference between, you know, 10% of people
actually going through and creating account versus like 70%. So this is something that we
really have to concentrate on. Concentrate on that UI and concentrate on the UI both for admins
and for, excuse me, both for service providers and for end users. Here is probably my most
controversial slide, I think, is that I really think that using PHP and minuscule for new
software for, thanks. New software for free network services is really important. I think that
PHP, the LAMP stack is really the, the, the posics of C and posics of free network services
that it's entirely possible to build web software with practically any programming language
under the sun. Just like it was pretty much easy to build software for unix-like systems
in pretty much any, any, a programming language under the sun. However, what really succeeded in
the free software world was C software, stuff written in C. And I think that that is what we're
going to see happen with, with PHP and my SQL, actually what we have seen happen with PHP and
my SQL. The most successful free software project, free software for, for the web is PHP and
my SQL and you really need to think hard if you're going to try to build something in another
programming language that you really want mass adoption of. So, and, and one of the big reasons for
that I, I point out here is that crappy 295, you know, commodity hosting system that people
can install your software, it almost always runs PHP and my SQL, it really rarely runs C side
and Scala and, you know, all that, all that really cool stuff. If you don't agree with this,
if you think that this is wrong, make a change, you know, there are some really cool platforms
coming out that, that mean that people can get that same kind of hosting and, and, and deploy
new free software that's written in other programming languages. And I think that this is,
is something that people need to, to do if they care about programming languages.
For the ways to, for the things that if you're interested in seeing a free network service
ecology develop and, and become the, what's available on the world, feel free to contact me
because I'm really used to, this stuff boosts that, that's my email address, that's my
Identica account, but also we've started this blog and Wiki called Autonomous and Autonomous.us,
and, and that's a good place that we really want to see become a Nexus Point for, for development
of these free network services. And, I think that's it, that's it, come on. So, thanks.
So, I think I have a little more than five minutes, and so I'd love to take some questions from
the audience. You, sir. I'm just wondering about awkward, sort of bottlenecks and choke points
that you see in the larger networking space. Like, what do you solve this problem? What other kinds
of major problems need you to address before anything else? So, I think that we have a lot,
I actually have a, I started a wish list on Autonomous and it's, it's kind of awesome.
For, where, what kind of software that we want to see develop, things like bookmark sharing,
photo sharing, general purpose, social networking, a lot of Facebook, general purpose, news,
systems, all I did. Basically, just go to like, you know, if you go to like any list of the hot
100 websites, you know, just like go down there and say like, okay, let's replace that, let's
get rid of that. Okay, let's replace that. You know, there is a lot of web infrastructure, a lot of
web services that we need to start challenging with free software alternatives. And those are
something that I really think are big. Quick follow up to that is, I'm building some of these,
that's why I'm asking. Good to do that. If I do this, I'm not planning to use PHP, actually,
and I'm just wondering, why do you think that's true? Is it because of the server architecture
and the hosting services that's going to screw me because I'm planning to be radically distributed
and peer-to-peer anyway? So, yeah, yeah. So, I think it's primarily the hosting. I think the fact
that people can get hosting with PHP and MySQL, very cheaply, very easily, means that the adoption
of PHP and MySQL web software is just, you know, probably like an order magnitude to a couple
of order magnitudes compared to other stuff. You know, WordPress versus Blossom, you know, and it's
just like a hundred times more. So, if what you want to do is create something that is a distributed
worldwide challenger to an existing network service, then you need to not go for the niche
audience, you need to go for the mass audience. And the mass audience is PHP and MySQL.
Yeah, another question.
Yeah, I'll, yeah, no, it's you. So, go.
So, I know they're good and easy to do better apps like you're talking about are really attractive
to the really on Rails community and the help platform. So, that's a good way to talk about
using a factory and PHP, I'm saying everybody can summarize all that.
Well, a lot of them are on Unreal and Ruby. Yeah.
It should be, as a movement, as a group, which you have left, I'm trying to promote
that they keep their apps pre-stopper, they can use the ppl and so on.
A lot of times, you don't see a lot of pre-stopper foundations.
Have people with those contents that are more on-chain with this?
Yeah. So, all right. So, I think, you know, when you talk to people who make web services,
they'll be like, God, we love open-source software. It's awesome. You know, we love building
our proprietary services on top of this open-source software. You know, it's so great.
And that's why I think it has happened a lot with Ruby and Ruby on Rails.
It's a great platform. The people who work on that core stuff are great.
I cannot name a popular piece of free software that is based on Ruby on Rails.
Can somebody else? Anybody? I mean, I can't. I can't think of one.
Like, I can't think of a Drupal that's written in Ruby on Rails.
That community is not generating... What's that?
There we go. Or a whip. Yeah, yeah. Right on. The good one. Okay. Cool.
Do you think that's cultural that Ruby does following to do something about the brand-new it?
Because that was guaranteed by the core. The policy needs to be very tough to set stuff.
Yeah. I don't know. I don't know why that's happening. How much is it... How much is it the deployment?
How much is it... The stuff that is getting written is not building the
contributor communities that are necessary to have a healthy free software community.
I'm not sure. I have nothing. I'm definitely not a PHP advocate or bigot.
I just happen to think that it's the easiest platform to build on right now.
And if someone thinks that they can get... If someone writes a really great Facebook replacement
in Ruby on Rails, awesome. You know, great. And if they don't, you know, then we need to think of something else.
Yeah, Bradley. I don't play with my wife often, but I have to play with my wife.
I have to be my scavenger when I don't write that for them. Oh, really?
Yeah, so it's with your fault. The argument she was making was that Twitter has won.
And she kind of had a point, which is why we argued.
And it's why people start working out in Twitter, because I have been pushing my
dynamic statements through Twitter. And what she was arguing, they can realize that it's time for us
of the Twitter group to ask if I do that. So, to what extent do you think we need to refuse to
cooperate? Because you're cooperating with Twitter. They're not cooperating with you.
Yeah. So, to what extent do you think that just refuse to cooperate? That's why I can do what I can
turn off the push group because they won't give us access once we hear the microphone.
Yeah, I think it's a really, I think it's a really interesting question. I'm not sure.
So, when people tell me this and tell me in terms of like, this is why I should quit working
on the conical and identical, because Twitter has won. People are going to be speaking on this
with Twitter. Yeah. Yeah. I think that it's with Twitter in particular. I think that that's
totally premature. Twitter has 5 million users. There are 1.4 billion people on the internet today.
There are another 1 billion people who have mobile phone access, which is one of the key
usage of micro-blogging. And so, that 5 million people is 5 million influential people.
It's a lot of, you know, web people, an awful lot of people in the San Francisco Bay area,
once again, funny how that happens. But it's a, it's not game over yet. You know, it's not game
over anymore than like, blogging was over in 2000 when, when blogger.com launched.
Open software stack on mobile phones?
I think you've achieved long maybe, but in the city, there's not a lot of
that other billion people? Yeah. That billion people that don't have web access?
That's a good question.
Oh, ones that do have a web access, but only on their phones?
Well, for a day, access, which is even worse, right? Because then it's completely
free traffic and mobile. Companies like for key and mobile phones are kind of against the internet.
Right. So, yeah. So, should we have free phones?
Yes. We should have free software phones that are freely, that can freely connect to a free
internet. That's absolutely the case. That, and that is going to be great for free network services,
too. But can we have free network services without having those free phones, or can we work
in tandem on that? Do we have to wait for free phones before we can have free network services?
I don't feel like we have to wait. I think we have to be working on this problem right now.
Back to your question. Should we, should we boycott Twitter? Should we boycott Facebook? Should we boycott
Google? Sorry, dude.
I think that we're, it's a hard time to do that. I think it's a hard time to ask people to do that.
I don't think that saying that I think it's a good time to be raising the issues, you know,
and saying there's a proprietary, your entire sociality, the events that you go to,
your friendships, the people you connect to, your mom, your, your high school buddies,
right. All that information is owned by a proprietary company in Palo Alto, California,
and they can deny you access to it in a second. And you need to think about that. And you
need to think about what your level of control is and what's really important. And if you don't have
that level of control, you need to get a little bit scared. And I think people do get a little bit
scared when like Facebook changed their EULA, and Facebook had to back down, which was great.
I think that if, yeah, yeah, right, right. But I think that activating people in that way is
something that's going to be a little bit more gradual. I just don't feel like we're in a place.
I think we can encourage people to use free network services. I think that telling people you
cannot, yeah, time to go. I think it might not be time to say don't use not free network services
100%. Anyways, thanks everybody. So we have a break now for 15 minutes. And we have some
snacks outside. There is a key signing. That's going to a GPG key signing would be by the registration
table. Basically, on the weekend, they actually said I was going to do a bunch of talk on
reverse engineering, but unless people really want to see lots of boring color-coded hex dumps,
I was really going to do a talk on Ganesh itself in the project.
Can you do more? Try that. No, I'm just talking, oh, test one.
I'll just try and talk really, really loud, I guess. But anyway, yeah, my reverse engineering talk
is unfortunately like an entire afternoon's tutorial. And I thought I'd spare you guys the
boredom of reading hex dumps, although it is kind of fun when you get really into it. So,
anyway, yeah, I'm going to talk about Ganesh, the GNU flash player, which fun enough somebody once
did a vote and said we have the worst name of a GNU project they had ever heard of. I don't know
why, but the rest of us kind of like it. I work for OpenMedia now, which is a nonprofit I found
it several years ago. And we're actually at 501c6, sort of a trade organization based in Colorado,
legal nonprofit. We have a team spread out, I think at last count over about 9 or 10 different
countries working on a lot of our software. And I used to say we raised funds for OpenMedia
related projects, but the last three months it's been more like we attempt to raise funds.
I don't know if anybody here is running a nonprofit, but it's a really bad economy for
sponsorships for free software projects. And we're about to announce a big legal project working
with patents around multimedia codex and stuff that I'll talk about in a little bit as I get into it.
And anybody can ask questions at any time, because this isn't so much as I talk,
is a bunch of slides and you can interrupt me and distract me all you want.
So can we donate to OpenMedia now, like give you money?
Yes. All right. We have to take free beer, misogies, and this up.
I was in New York about three days ago and saw something called FHGML, which translates,
sort of high level HTML directly into clash. I'm wondering if you know those guys,
because it's kind of interesting how there's stuff translated to you instead.
No, but since we interpret Flash, you know, Swift format, we won't care, because when we say it,
it's already down to the Swift. And so I'll talk more about codex later. So right now,
for the last four and a half years, we've been sort of funding and sponsoring several projects.
Kind of one of our goals in OpenMedia, who cares anyway. One of the goals in OpenMedia now is that
we believe really strongly in patent-free multimedia codex. And then the big problem is that there's
not really a complete infrastructure for using things like Vorbiz. So if you wanted to create a
video in FHGML, edit it and put it on your website. You can kind of do it now if you're a geek,
but most normal people, it's pretty daunting. And so one of our goals was to develop the sort of,
you know, creation ends, server-side and client-side for multimedia, you know, web. I'm not going to
use the 2.0 thing because it makes me sick. But so we work a lot on Ganesh, which is our client-side
for displaying Flash, of course, you know, Adobe Plug and Compatible. I just two weeks ago,
released Signal, which is a Adobe Compatible Media Server that also speaks Flash and a couple
of other protocols. And Ming, which is sort of a Flash compiler type of creation environment that,
as of last week, somebody's putting a GUI on. So we're working now on graphical IDEs for Flash
programmers, which should be fun. Primarily, you want to orient it towards educational games.
I figured I'd throw this one up. Everybody goes, how do you wind up working on, you know,
free software projects sometimes? I mean, I remember when I first started on GCC, I needed a
free compiler and couldn't afford to pay $9,000 a seat. So Ganesh's first platform, believe it or
not, was my stereo. One day I got a phone call from an old friend of mine and John Gilmore,
and he had some company that wanted to do a Flash-based user interface. At the time, I hadn't quite
realized this five years ago, but since now, it turns out that the main use of Ganesh is not
on a web browser. It's actually a user interface for set tops and embedded devices that runs in a
raw framework with that X11 that happens to know how to do a video. So anyway, I spent about six
months on this originally. I looked around for existing projects, you know, the next thing about
the sort of free software world is a lot of times we all build on the work of others. And so
sometimes when we're asked to start a new project and don't have a whole lot of time, you really
need to depend and build on the work of others. So I found this one project that was the beginning
of a Flash player, talked to the developer, he had kind of abandoned it, and became a pretty
active developer on it, ported it, and bang, there was the user interface for my stereo system.
There's a nice box, they make these stereo's for high-end houses and stuff. This particular
box has got a 600 gigabyte hard drive with about 2,500 gradeful dead bootlegs I think on it.
It's the gradeful dead box. But it's amazing what people could start it. And when I did this,
I didn't really think about it, and I'll get into it more, but I did a project and wrote a little
Flash player and then forgot about it, and then a while later it kind of came back to me.
Is it? Oh good, and I can talk a little quieter. So basically, some people say like, why Flash?
I mean, one of the problems is that myself and actually nobody on the Ganesh team,
none of us had ever installed the Adobe plugin, because I just don't like binary blobs really.
So one of the funny things we had is like, why Flash? Well, in the earlier days of the internet,
nobody really cared. And even up until the early parts of 2000s and stuff, you could pretty
much navigate the web pretty decently without a Flash plugin. But what we started to see was a lot
of problems. People were starting to use Flash for menus, not instead of image maps. People were
using Flash in a lot of ways that wasn't like video or animation. I mean, Flash is a graphics
programming language. And so what was happening was that basic functionality on some sites,
login pages, menus, all that kind of stuff, were becoming so Flash-based that I'd go to a
website and it'd be a big gray box, you know. That was kind of getting irritating. Then it started
happening more and more and more. Then this crazy thing called YouTube came out and, oh my god,
suddenly Flash has been adopted, you know, worldwide for streaming video applications. Maybe good,
because Silverlight, I hear sucks. And I think for Silverlight, you have to download binary blob
codecs for Microsoft still. So, which is good. And that's one case I hope that us in Adobe
survive the onslaught of Microsoft there. And then the other thing was that Flash is also heavily
used for educational applications and gaming, which I never really thought of until I got involved
at the O L P C project. So in some ways people go, well, you know, what do we care about Flash?
I mean, you know, big deal. It's like, you know, graphics and mostly ads. Like when I first got
Ganesh running as a web browser plugin, I realized that the internet had been taken over by, you know,
basically real estate agent who all use like Flash 5 that runs in anything, you know. And it's like
the whole size of your browser blinking. I'm like, oh, that was in a state. Maybe I should kill this
project now. But the part of the problem was that as time went on, when you don't have a Flash
plugin, you start to become in an inability to navigate the internet. I mean, a lot of us that
aren't in the binary blob start finding that we're left out, you know. And it was kind of a drag to
sort of, you know, just web things pretty cool. You know, Shrekbeats used to net in the old days.
And suddenly it was becoming harder and harder to deal with the internet. So that was kind of
an interesting. I know at one point the FSF had a campaign on don't use Flash. Didn't work
too good, obviously. I mean, everything's worth it. I'm a big believer in the futile gesture. But
we just did not get people to stop adopting Flash. And so at that point, you know, you kind of need
your own Flash player. I don't know if anybody hears into, you know, 64-bit systems. But, yeah, me too.
The Adobe player, I think they just got 64-bit released in Alpha a couple like a month or so ago,
finally. They probably would be reading the Ganesh code. And the other thing is their Linux support
in the Adobe player pretty much sucks from what everybody tells me. Not being actually loud will run it.
I can't tell you. But everybody else tells me that it's bad. It crashes. It hangs firefox.
It does all this crazy stuff. I can see why I haven't worked on Flash for all these years.
And then the other problem, too, is it really? I mean, Adobe Flash really only runs on
little Indian 32-bit Intel machines, basically, which I mean, I don't know about you guys. But I
actually work at a lot of other weird machines, everything from my canyons and MIPS and power PCs
and arms. And I always thought one of the beauties of FreeSoftware is you can make it run on anything
if you just got a little bit of time and motivation. And so, basically, it's like, you know, what can we do
about this problem? So, you know, basically, we just want to talk about sort of network services.
Don't use Flash on your websites. And this is from a guy who writes a flash player. We should
really not be looking for more ways to pervert our websites with Flash because it's just going to
eat your CPU. And when I got a website and their front page is just a gigantic Flash movie at,
you know, 800 by 600. I'll go to another website. Forget that one. Another thing is we encourage
people that do have to, you know, that are actually sort of on the provider end of the business.
If you're working on a website that's got some Flash content, test it with Ganesh. The guys
are daily emotion. Test with Ganesh all the time. And so, everything they do works with Ganesh.
Same thing for YouTube. We work with the YouTube guys. And so, you know, sites that work with us
work a lot better for everybody. I would think another thing is if you encounter a business website,
if you go to this, have you send a letter to the company or send them an email saying,
gee, I'd really love to do business with you, but your website is too flash-heavy. I want
plain text or I want paper graphics that work with anything, not something that requires people to
try to get a plugin. It's funny. We had one of our developers fixed a bunch of bugs in Ganesh
a couple years ago, merely because of his bank adopted Flash-based banking software.
You can use some Vizortrag. I'm just going to make this up. Vizortrag likes switching languages
to say on your browser, I don't want Flash. And at least people could provide
in their site two ways of doing site navigation. I guess, but I'm not a website guy, so.
I also help in the meantime of all people who have finite block trouble,
or maybe we have specifying, I'm not hiding this to Flash. Please give me your alternate version.
Yeah. And I really like the people that say skip this, or alternate menus, site maps are great.
I like a lot of that stuff, but not all website maintainers and designers actually pay attention
even to their user base, much less normal people. And then our solution, of course, to this
whole problem was sometimes when you get really, really frustrated and pissed off, the best thing
is to write code. A lot of code. Fast. Well, we didn't go that fast. So anyway, Ganesh is a
funny little project. As I said, we started in 2004 for a user interface for a stereo system.
And then I forgot about it. I was a consulting at the time. It was a project. Big deal. Did that
project did another one. One day, funny enough, when I was packing to go down the Katrina,
to do relief work for Katrina, I got this phone call from John Gilmore and he goes, you know,
didn't you write a Flash player last year? And I'm like, well, yeah, big deal. And he goes,
we need a free Flash plug in. Here's why. And I got the whole brain dump from John, you know. And
I'm like, interesting. I'll let you know whenever I get back. So five months later, I got back,
and basically called up John and said, yeah, I'm broke. I'll go do that.
He made a very small donation, but it's okay. You know, fed the kids and that was cool. And so I
started, that's basically when we started Ganesh project. And because I had based on another
older open source project, I talked to the maintainer. And he had the classic example. He goes,
please fork my project, which I think was slightly unusual because I don't want to do bug reports.
I got a nice job that I like. Just just change the name and do something else. And so I'm like,
oh, my God, John. He said, this is great, but we need a name. John's like, oh, call it Ganesh.
I'm like, great. I hate picking project names. And then basically, I got launched into
trying, I mean, I'm a compiler debugger guy. So then I got launched into trying to reverse
engineer how you do plugins for Firefox. Boy, that was really fun for guy with out of graphics
background. But eventually, in beating through massive amounts of incredibly out-of-date documentation,
reading source codes, wonderful, actually. I actually got Ganesh running as a Firefox plugin in 2006,
which was pretty cool, I thought, because I wasn't sure I was actually going to get it to work
at one point. And we got it all working. And that was pretty neat. Oh, boy, big mistake. We got
lots of attention. Lots of attention means lots of bug reports. But bug reports are all good,
so it doesn't matter. So that was pretty cool. So at that point, I suddenly had a flash plug
into my browser to watch all the ads. That was great, sort of. So then we decided, you know, we
hadn't really done enough by polluting the Firefox world with making all the flash ads actually
work in their browser. So then we decided to screw up conqueror by giving it flash plug-in support
as well. So now this way, KDE and Genome desktop people can have the full beauty of the internet
advertising at full force. But this is why we all run adblock, right? So anyway, so we got that
running as a sort of K-parts type plugin. So you can kind of plug in Ganesh's widgets and
Genome and KDE and all this weird perverted gunk. Then we got YouTube working. There's a, I think,
a letter. I think it's Peter put it out a couple years ago about, you know, oh, Ganesh needs new
help to get YouTube working. We got it working two weeks later. But that was actually really interesting
because I can't tell you how many bug reports I get. YouTube doesn't work. All because we can't
ship a proprietary codec. But it's pretty funny because when we got YouTube working in Ganesh,
instantly we became Ganesh, the YouTube player. Nobody even talks about flash, swift animations,
educational software. Flash doesn't seem to exist for most people, but YouTube. It's amazing.
And I never actually been to YouTube. I don't even own a television. I went to YouTube and
I'm like, oh my god, what an amazing thing. That's been so much time watching crappy YouTube videos.
It's harder than debugging at Hexthomps, I tell you. So since basically we got the project started,
we became a high priority project to the FSA. It was kind of a pseudo-empty slot. They had GPL
flash up there. But when I announced Ganesh, all the GPL flash people quit their project and
joined the Ganesh team and actually is still the Ganesh team. So we just sort of switched high
priority flash projects because we had a lot. Well, I'd written an Act Better VM than they had,
so it worked out that way. One of the nice things, as I'll mention it, being a talk on high priority
projects is it really does help being on the project list. It's not like you're going to make
you a zillionaire or whatever, but a lot of the developers are motivated to do what they think
is good for the community and they're willing to let the FSA say, hey, we think you should go do
this. It's good for the community. So it's been really helpful to have that support because
having enough developers when you're doing a gigantic project like a flash player,
it's a lot of work. And so I hate to say it. A lot of bodies is actually useful. We don't have a lot
of bodies, but we have more than me, which is really nice. I've started a few other GPL projects
and gotten zero developers and never had posts on the email list. So it's kind of nice to be on a
project. It's actually got a pretty active, you know, kind of vibrant community and stuff.
We're now, I think, we're running on something like 40 or 50 different computer systems now,
almost every GNU Linux and BSD distribution on the planet, ships can hash,
so does open solaris, hikus, syllable, OS2, and a bunch of other weird machines. And then I created
open media now, mostly so people could give us money because it turns out there's this interesting
concept when you actually can help pay your developer something. They work all the time.
And they're wise. Don't scream at them because they're actually helping pay the bills. And some,
I'm a big believer that trying to help fund free software projects is a really good thing.
Is that like, so how many of those distributions that are distributing GNAC are distributing
none of them? Zero. Big problem. I'd get probably several hundred bug reports every week that
YouTube doesn't work all because they haven't loaded a single codec package called ffmpeg.
Drives me crazy, but that's slight. But I'll get into that more too. So I think we've created
open media now, which as I said, was a nonprofit because at one point, we had no way to actually
take money or equipment from everybody. And people that really want to help you but happen to have
these thing called businesses around them have to be able to write, not necessarily write stuff off.
They have to say, we know that to these guys, and here's their website and their PO box,
so we create our own nonprofit mostly just because, I don't know, we just decided to create our
own nonprofit as opposed to running it under somebody else's banner and stuff. And it's been
interesting running a nonprofit, but you know, whatever. And we then basically then been putting
a lot of our time in the continuing to a reverse engineer the Adobe technology. And I don't think
I can use a protocol analysis term for a binary file format though, but so I use reverse engineering
and we don't just assemble executables because that's tacky and cheating anyway, no fun.
That's what I told it. The first time I ever line up to Adobe, they asked me all these weird
questions about, you know, Ganesh and I thought I was basically, you know, taking their player apart.
I'm like, why don't I want to re-implement your crappy flash player code?
I said, VMs of VM, we can do a better job, we're free software, you know, we're free to do what we
want actually. So one of the funny things about Ganesh is as I said, most of the Ganesh usage actually
isn't really so much as a web browser plugin, which is good because I'd be buried in 10,000 YouTube
bugs every day. And I'm actually a long time embedded systems programmer. I've been doing embedded
systems work pretty much since the 70s and I like small devices and I worked at signal support
for most of that whole run. And so I spent a lot of time playing with like weird, funky hardware.
So I like that stuff. It's kind of fun for me. So anyway, I got really into a crazy urge if
you used to go putting Ganesh to anything that would show up in my house. So this was a small
collection of some of the crazy stuff I put in Ganesh to in a couple of week period. The XR
doesn't count in the middle, but there's two shrubs areses in there. Nokia phone, Intel classmate,
Pepperpad. I don't know. It was just kind of fun. OpenMoco ports, Nokia 770 at the time,
Internet tablet, PlayStation 3 port because we run them power, we run 64 bit on power PCs and
big Indian mode. And that was actually pretty fun because I like playing with hardware. And so
and this has actually been mostly people using Ganesh. We have a bunch of companies in Hong Kong and
Taiwan that ship Ganesh is their main media player. There's a whole lot of people in sort of an
r market space. This is more like what we work on. Not the web browser, thank God. Because the web
2.0 is boring. Still using reverse engineering. This will probably be my only reverse engineering
slide unless people want me to launch into my other talk later. Basically, if we're going to
really reverse engineer something, don't do an FFM peg. Do it legally so other people can actually
redistribute it. Or it's not really worth the effort. I'm a big believer in doing it legally.
Talk to the lawyers first. It's a good idea. You know, once you're in trouble, it's like getting
a speeding ticket. You know, it's like you can't do much about it. So it's just better to avoid
trouble by being really careful. And I think I've memorized every legal reverse engineering clause
in the DMCA. Thanks to the EFF and stuff. If you happen to see software with a really crazy
yula, the flash license had a clause that forbid reverse engineering flash players if you
installed their plug-in. If you read their action script specifications or the Adobe documentation
manuals, you are forbidden from working on flash players. They recently removed this requirement
after four years of me bugging them about it, which is pretty amazing. But yeah, if you have a
really weird yula and it has clauses in it, you don't like, don't sign it, don't use the software.
The other big key thing is you have to use publicly available documentation. In the flash world,
this was actually pretty easy because a lot of the documentation was based on ECMO 262, same as
JavaScript. I mean, Adobe uses the Mozilla JavaScript engine for a long time. That's why they
rewrote it and gave it back and called a Tamron. And so we basically used ECMO 262 for our class
library specifications. And then our volunteer community would run test cases with the Adobe player,
tell us how it was supposed to work and we would just go back and forth until we had it exactly
right. And in the beginning, it was very slow that way. But over time, we got to know it all so well
that we haven't even barely even looked at documentation anymore. And then last year, after several
years of us lobbying Adobe, they released all their specifications and dropped their licensing
clause. So I'll give them a little bit of credit there, luckily. The other thing is if you're
actually going to use proprietary software, you have to legally obtain it. So for instance,
some of my reverse engineering, like network protocols, I've had to sniff the network connection.
But hey, I've got older kids who run Adobe Flash so they can like pass their college tests.
I can't make my kids fun at a college, you know. So I can that say, oh, my son's visiting,
gee, I can have him like good to these five URLs where I sniff the network connection and get all
the data that I need. You've got to love having kids. But the whole point is, yeah, I should tell
you another, when my kids first went to college, they're like, dad, you forgot to tell us about
Windows thing. Everybody thinks we're weird. Growing up in a house full of Unix machines.
But anyway, so yeah, if you're going to reverse engineer proprietary software,
get it legally. I'm like, I can't emphasize it. When you do these things legally, you can keep
doing it. If you don't do it legally, people make you stop. Making you stop is also called
court jail and big fines, none of which is good. And then the final part is really funny.
Last week, the top manager, Adobe, actually announced for the first time publicly ever, I've
been bugging about this for a long time, that Ganesh is a legal implementation of open specifications.
I was blown away because now I'm not so worried about being sued anymore. And Silverlight's been
very useful for getting Adobe to be friendly. Ganesh has got a whole bunch of different features
that aren't quite exactly like some of the Adobe ones. One of the big fun things about Ganesh is,
since it was originally written as a user interface, it runs standalone. That's how it was designed.
You know, the plugin was kind of an afterthought. And so most of the people using Ganesh love the fact
that they can run it from the command line, run custom flash movies that's like their advertising
sign or whatever else it is. And so an ability to run standalone unlike Adobe has been very, very
useful to us. And we plug in pretty much any Mozilla-derived browser from Firefox to 105
up to Firefox 3.1, Conqueror and KDE 3.4, Embedded Conqueror, which was a pain,
bunches of other weird browsers. It seemed like every browser these days is actually
implementing NPAPI, even WebKit is. So we've been actually supporting pretty much every browser
around. And lately we've fixed the support so that some of the weird browsers work pretty good,
not weird, I mean, but some of the icecat, ice weasels, all the weird little variations,
install things subtly, subtly differently. So we've been putting a lot of work in the making
sure Ganesh installs and works with all the other browsers. Streaming video, Ganesh supports streaming
video, big deal YouTube, but it's really popular, it turns out. Another big thing about Ganesh that
Adobe never did is we actually have multiple renderers. We support OpenGL, which if you're on a
small cell phone platform, they often have OpenGL along with like a 400 megahertz processor.
And so you actually need to be able to kind of delegate a lot of your processing to the graphics
processor, just so that your little 400 megahertz chip can do full software, you know, what else
it's doing. I mean, it's hard working on slow hardware, so having OpenGL back ends is very useful.
We also support a thing called anti-grain AGG, although I think that's going to go away and be
replaced by another vector library soon, because AGG is kind of the guy got a commercial job and
it's kind of stopped being maintained. And we use that as sort of a 100% pure software rendering
solution for people that don't have OpenGL support. And we support Cairo, but it's really,
really swell. So someday Cairo will catch up and maybe we'll use it more of it. Right now,
it's not very good. We don't want to work with network security. When I first got Ganesh
without working network connection, I discovered that most flash movies install 3, 4, 5,
6 other flash movies from other websites, and because it's being loaded by the flash player,
you never see it. You know, your monitor light goes on. Well, there's network traffic, you know.
So when I got networks working, I was blown away. It turns out that Adobe has hacks in their SDK,
where every time you play the flash movie, it'll register a hit on somebody's website in their
access log, so you can count how many times your movie was played. Lots of little weird stuff like that.
This got me really worried. So one of the nice things we've done in Ganesh is we pay a lot more
attention to security. The Adobe flash player is full of security bugs. It's not this talk, but it's,
I wouldn't use it for banking software. It would scare the crap out of me. But anyway, other people
do. So we've had a lot of attention with privacy, white lists and black lists. If you don't have,
you know, ad block or flash block installed, you can do a black list of sites you don't like, and
you never load flash content from them. It's a great way to get rid of the trackers watching you,
we print out every network connection so you can see what's going on. We save everything that's
loaded the disk as an option if you want so you can see what was going on. We're pretty crazy about
it, but security is really, really important. I think the free software community pays more
attention to security and privacy of individuals and any of these big commercial companies.
And it's important. We're also extensible. Adobe flash has these big class libraries,
which are cold, but if you want to do anything outside the class library, you then have to write
everything and, you know, action script and byte code interpreted. So, Ganesh actually supports writing
wrappers for any development library on your system. So much like Pearl and Python and stuff,
write thin wrappers for every development library on your GNU Linux platform. Ganesh does that too.
So we have things like direct my SQL support, direct raw network support, support for remote
control devices. So when you're using your set top box, you can grab a remote control and it
just works in Ganesh like a mouse. So we're pretty much write wrappers for everything. Debus,
I wrote wrappers once for GTK. So I could program GTK in action script because I don't have the Adobe
SDK. It's kind of fun. You can actually, we turn action script in a general purpose scripting
language. It's got really good graphics support, which is kind of neat. In addition to that,
then we also support a thing called XML messaging, which Adobe's had for a while. For instance,
the stereo that I used, the flash movie because flash runs in a sandbox, you click, you know,
play. It can't really do anything. It can't talk to the hardware, although Ganesh can,
but the Adobe player can't. So what you do is now you pick a body that sends an XML message,
things happen. So the ability to have an XML-based networking scheme lets you do pretty nice
complicated protocols and all sorts of other kind of fancy stuff. And finally, we're really big
fans of patent-free codecs. If you go to internet archive and you have Ganesh, you'll get
the aura instead of MPEG, stuff like that. We're big fans of making the whole sort of patent-free
codec infrastructure actually work. So this is another tough one. Compatibility of Ganesh,
it changes daily, but not heavily. So I'll make the attempt here. Primarily, we're originally
a Flash7 project, but Flash7 is kind of old now. So we actually last year released the original
beginning of a Flash9 support, which is good because YouTube and everybody else is now using
Adobe Flash support and things like that. So we have Flash9 support good, but we don't have all
the class libraries. So that's kind of our next part is the work on that. We've got about 80% of
the up-to-action, up-to-flash9 libraries implemented, but with Flash9, they created a Flash
library, you know, five times the size. It's crazy. But luckily ActionScript 3 is like ActionScript 2.
They completely changed all the binary bindings in the interfaces and gunk. But we figured all that out
and got it working in an experimental branch. And the next Ganesh release all have pretty good
Flash9 support, we believe. I wish I got 10 minutes. I'll start going faster. We're really portable.
We're really in the portability. So I won't bother to read this whole slide, but we run on a lot of
different stuff. That's half the fun because free software should run anywhere you need it to.
And we even run on that Windows thing. A lot of weird operating systems I never heard of. We're
really in the performance because we believe that's one spot where Adobe is completely blown it.
So we support both the X video extension for scaling if your hardware supports it like on the
OOPC. So we can do like full, 19 by 1200 full-screen resolution about 10, 12% CPU load. Let's see
Adobe do that. We use MIT shared memory extension. So your average Flash rendering and stuff
typically is a good 10, 15, 20% lower than the Adobe player on the same hardware. I don't run
Adobe so I can't give you numbers other than the ones people give me. And we're doing a lot of
work now with variations on supporting hardware based audio and video decoding, mostly for the
sort of embedded market. So basically Ganesh is written in C++. I think we're one of the few
GNU projects that is actually in C++ base. The original project I worked on was written in C++,
so I didn't really decide. I just used it, but I like C++ so who cares. We use Boost instead of
Glib for threads and portable data types. A lot of that stuff. We use both GStreamer or FFM
Peg. We're big on internal APIs. We support a lot of weird stuff. And FFM Peg's got better
performance, but most of the distributions build it with GStreamer support. We use lib
curl for networking, although I'm about to replace that. And we support GNU and KDE pretty much natively.
The extensions and stuff like I said, we can write extensions for pretty much any development
library on your computer. It makes Flash an actual decent programming language with lots of
eye candy and removing objects and stuff. I'll throw this one into it. So we're big in the testing.
Among other things, I was the author at the Ganesh Ganesh Regression Testing format. So I'm really
big in the Regression Testing like a maniac. We have something like 35,000 test cases or huge
believers in test cases. We're big in the build bot and things like that. We use a lot of other
tools because there's several now sort of free Flash compilers around. We actually run our test
suites through every other Flash compiler we can find. We maintain Ming, but we use M task and
Hacks and Swift Mill. And Swift Tools, two weeks ago, released an ActionScript 3 compiler,
which is going to be very, very useful to us. You talk about projects helping each other.
They saw we need an ActionScript 3 compiler and they cranked it out in a month. It was wonderful.
We have a pretty good size build farm and stuff because we like to run a lot of machines,
so you got to do it all the time. I'll put in a little blurb for build bot, another GPL project.
If you got a bunch of different machines or supporting a lot of different configurations,
build bot basically builds, you know, one config two hours later builds a different
configuration and just works its way through all the computations until it's done and gives you
little charts that you can check. I really like build bot, although it's a little flaky sometimes,
but mostly works good. So our current focuses right now are improving our Flash9 library
and support. We're doing a lot of work on that. We've reversed engineered the RTMP network
protocols, Adobe uses and the BBC iPlayer uses and it's kind of what all the proprietary companies
like to use. We now have an implementation both client and server side that's about to get released.
We're more in the better performance, like I said, like hardware video acceleration decoding.
And we're actually now working on Flashbased video conferencing applications on topic
and action on our media server. I'll briefly mention this. I just relieved an alpha of
signal like two weeks ago. And signal is a media server that happens to be a clone of the Adobe
media server, which means it speaks Flash. Most of the video conferencing works by actually sending
Flash to the server and executing it like a CGI bin kind of thing in a sandbox and stuff.
And so we're actually working on, you know, the full media server and stuff like that that supports
patent-free codex as well as proprietary ones. It already handles a half dozen different protocols.
Lots of other stuff I'm adding support for actually PHP and Python CGI bins within the media
server so you can do really cool stuff. Like you can send it Python code and execute it in the
server in a sandbox, not having to have it pre-installed, which is kind of a cool feature that Adobe
actually did. And it's really in heavy development and anybody who wants to work on media servers,
I would love to have some more volunteer help because it's been kind of a solo project for me lately.
This one started out of the lab. One of the big things is we did a lot of work on the LPC,
which is what brought along these issues with multimedia codex because we started shipping
exos all over the planet. Everybody said, but YouTube doesn't work because they couldn't ship
the stupid codec, which I think is in another slide here in a second. But that was actually a fun
project to Nicholas Rowan that I think he started it at once, but he basically killed his own
project as far as I can tell. So codex. So Flash right now is his MP3 MP4 Nelly Moser and
Sorenson, FLV, which YouTube uses is just a container format. It's not really a codec. We also
support, you know, Speaks, Varbus, Fiora, and then we're going to be using kelp for our video
conferencing support instead of Nelly Moser. And then the big thing is that we had an
inability to redistribute Ganesh on anybody's machines. And so I just literally a few days ago
created a new website with John Gilmer called codecpatents.org. And we're actually launching a
campaign to do legal, clean room implementations for proprietary codex. I think it's got to happen.
So anybody who's got a little time, what we'd like to do is, well, one thing we could do some
system in help on codecpatents.org, but there's a lot of research that needs to be done by the
community for prior art. We saw how powerful Groclaw was and we wanted to do the same thing with
multimedia codex because as you get into the patents, they're bogus. A lot of them. Nobody's just
ever bothered to do anything about it because they're scared to death. It's a little more complicated
than that. Oh, great. More than a little more complicated. But people just,
oh, I don't cost you $600 million. I'm like, yeah, we might as well get started now.
As Jeremy said, we're a non-profit. What are we going to do? Get sued.
They can have my old Toyota truck, you know? So when people ask how they can help,
the Ganesh project is interesting. We actually have a lot of non-engineers on the Ganesh project.
It's one of the fun things of doing free software is the community of active people that are doing
documentation translations. We're really big in translating and supporting multiple languages
because it's important and stuff like that. So we're really big in the translation. So if you speak
a language that we're not supporting right now, please send us a translation for Ganesh,
that way all the error messages show up and you can actually read them. We do a lot of testing
and feedback from people because they run the Adobe Player and we can't. And so without our volunteers
running the Adobe Player saying, oh, and this with Ganesh, I had a pink border, but with Adobe,
I had a red border. We go, oh, thank you, you know? And so without people testing us with the Adobe
Player compatibility, we would not be making much progress. This is where volunteers are so wonderful.
Good bug reports. They do a lot with us. We can't run the Adobe Player. So they say, well, the Adobe
does this, Ganesh does this. Good bug reports are really useful, even if you get thousands of them
other than the YouTube one. For help, please make a better project and we want a better project
and more stable and all that. Documentation writing and updating. I wrote a user manual,
a tutorial on a reference manual. Nobody's ever touched its sense. I think it needs to be updated.
Do you run your, do you run test that compare the equivalent of NAC and Adobe Grand Flap?
Well, we can't exactly.
What makes you want me to run a build bot that runs by?
Well, the problem though is we can talk about this later, but it's really hard to test a graphical
application. And so most of our tests are much more unit level and integration level than they
are actually at the top level because, you know, to x11, Flash is just a big bit now. It can't tell
where there's a button. It can't tell anything. And I've been doing some work on trying to work
around this problem, but don't have a good solution yet. But, so volunteers running Adobe
Player by hand is our automation and they're very useful to us.
So I was going to say, I believe one of the problems is that the development license on the player
could just be as a surrograsse of what we will know if we have run it personally.
That could be.
Yeah, if he's never seen it.
I don't know, you're done.
When I have a client, I think you're great, it's definitely us.
So.
And then of course, anybody who plays with build bot, I'm really sick of being our build bot
build farm maintainer, so I'm dying for a volunteer. I'm just sick of it. I just did
the release, which was like, you know, three weeks of build farm hacking. And basically,
here's a bunch of different resources URLs for getting more information on Gnash, of course.
Gnashdev.org is our big developer site where much of the technical detail is.
Get Gnash.org, our build farm hanks out, devs, rpms, binary, tarballs,
and source snapshots every night, if it works. OpenMediaNow.org is our nonprofit.
If you want to give us 10 or 15 cents or a free six pack or something.
And of course, the pound Gnash channel on free note is a pretty much a great spot for
kind of front end technical support.
So anybody got more questions?
Well, Adobe's ad feature to the official platform pretty rapidly.
I wouldn't put it that way, but yeah.
We're definitely catching up because most of their features are actually not truly
re-implementations or format changes. They're often stuff that we actually already implemented.
They added a high quality video support for YouTube. We had had it for a year already.
We couldn't figure out what the big deal was. So who's chasing who?
Somebody just suggested a sound by on the IRC.
Flashgate done till Gnash walled run.
I was just going to suggest something. I'm sure some of the truth is you already thought of this,
but if you use part of the thing from the closing codex project or some of the other projects,
you can take a small amount and fire a few professional search engine optimization people
to try to make Gnash come up just as often as a flash in a lot of people's Google searches.
Because this is really fabulous.
I've known about it for a long time. I wasn't paying attention to it.
I mean, the biggest problem is that the URLs for Flash Content and almost every web page on the
planet have the macro media and Adobe URL embedded in it as an attribute. And unfortunately,
there's millions and millions of those and that's it.
What I really want to see is have icecat look for www.macramedia.com.
And instead of going to their plugin page, send you to get Gnash to get it. Gnash XPI for $1000.
That should be possible with icecat, I would help.
What do you know if I thought to play in that? Because that numerically, for a lot of sites,
it's a free software project. We can all do with it what we want. We take contributions.
Thank you very much.
Thank you for listening to Hack or Public Radio. HPR is sponsored by tarot.net.
So head on over to CARO.nc for all of our team.