Wednesday, May 30, 2012

ideas to build content stores on

In my last blog entry I wrote about building communities on ideas that tie the individual actors together, and letting those communities of individual actors interact freely, guided and driven by those ideas. I'd like to share with you one of two ways we're trying to bring that spirit to a practical result with the Make·Play·Live Add-Ons system.

First, though, a little update on the app itself in a screencast I hastily threw together for this blog entry to show some of the improvements made to the application since the last screencast. You can grab the original ogg recording here, or watch it via youtube below:



A couple years back, I spent a lot of time thinking about "app stores" and this led rather organically to the broader topic of add-ons of any type: books, graphic art, music, applications, widgets, services ... what principles should it embody, and for whom?

Free(dom) Software

Societies that rely on technologies for processes impacting basic human rights must be open for all to use, to review and to modify for their specific needs. To forgo any of those things means trading rights that should not be negotiable in exchange for tools. This is a very poor exchange and would very likely eliminate the possibility of free societies with strong guarantees for human rights.

The add-ons system respects this in a number of different ways. Firstly, the implementation itself is Free software. The implications go way beyond being able to make client apps that integrate well with a given system, as the above Add-ons App does with Plasma Active. It means that other entities can also host their own content and other add-ons in their own database. This result of freeing the server side code will mean there is no single point where censorship or decisions made against you can be erected. It also means that those whose needs we can not take care of, say the needs of a specific educational environment or a specific community's needs, will be able to build those services.

However, there is another way we can support Free software: by promoting it in the catalogs. We show the licensing of applications directly, will be allowing you to filter based on Free-ness and will promote Free software applications to the device owners who are using the Add-ons App.

Keep in mind that Free software can be sold, and on devices such as these getting software that is tested and well packaged is a service much like bottling water. Yes, water can be had at no cost, but the convenience and safety of bottled water makes it something you can sell. So while we are shipping a ton of great Free software applications by default as part of Plasma Active (and therefore the Vivaldi tablet) so that it is useful out of the box, we are also going to be encouraging developers of Free software to think about putting a small price tag on their applications in the catalog.

The idea of voluntary payments, or "pay what you feel", has also come up and is something we've discussed. It isn't in the first version of the software, but I rather expect it to show up eventually. It will be interesting to see how well that works.

Free(dom) Culture

Freedom doesn't begin and end with software, though. We are big fans of Free culture in general. There are a few reasons for this. First, we like sharing stuff with people and really enjoy experiencing the creative efforts of others. It's thrilling and enjoyable and highlights how "Make" and "Play" fit together so well.

That would be enough on its own, but there are other reasons to support Free culture. By sharing openly and broadly, society as a whole is enriched and entirely new and powerful works can be derived from this commons. Shakespeare didn't invent many (any?) storylines, but he took old themes and made them amazing, immortal. Disney as well tapped the large body of existing children's fiction that was in the commons to create animated films that many consider masterpieces. A society with Free culture is a society that invents more, creates more and is richer as a result.

This does not "just happen" on its own, though. Free culture needs to be supported. So we have put a focus on making Free culture works available, even if they may not draw a single penny for us. It makes the experience better for those of us using it and helps invest in our culture.

We've started with Project Gutenberg, but that will only be the beginning. Which brings up another interesting topic: federation of data.

Open Participation

Central storage of all the data is OK, but then we would once again have another silo, albeit one that was rooting for freedom. A rather more enticing concept is being able to have data that is worked on and exists outside our little silo available through the add-ons system. This allows greater opportunities for people to participate in their own way, in specialized communities, while bringing our audience to their doorstep.

With Project Gutenberg, they are doing a wonderful job of digitizing books left and right. There is no need for us to get in the way of that. So we mirror their content and make their catalog available to our audience. I contacted them about this and they were wonderfully supportive of the idea. And why not?

The system can already handle installing software from third party repositories, which will bring software communities using OBS into the same sort of relationship. Imagine: hundreds or even thousands of different communities working whatever it is they do, and able to be syndicated into a seamless whole by hundreds or even thousands of add-ons stores around the world in hundreds or even thousands of different constellations? Wow!

In the coming weeks we will also be unveiling the developer program. There will be no up-front cost to participate, and aside from illegal content we won't be telling you what you can and can not be sharing with others. You can upload what you make.

Of course, the audience needs to be taken care of and it would not be fair to them (which also includes us ;) if there was just an unfiltered firehose of whateverness sprayed through the Add-ons App. We designed the system so that catalog owners have tags which they can put on any content they want in their catalog.

This balances the participation of those making content available with the participation of those delivering the content. The result? One body of globally federated content that can be presented in an infinite number of catalogs that meet the needs of different audiences.

If a catalog owner doesn't like fart apps, they can filter those out. If a catalog owner wants only to show HTML5 apps, they can filter only those in. But nobody tells you what kind of app you can write, what sort of book you can author, etc.

tl;dr

None of this is ground breaking philosophically. It is simply the re-application of well known principles from and attributes of Free societies to an add-ons system. But that required us to identify that those attributes ought to be in an add-ons system, and to develop that system from those principles as the first principles of the system.

It is also not enough to only be content with the application, in this case the add-ons app, itself being free enough. It is critical to consider the network effects and social interactions that are implied by the design. We live in a networked world and we are building the tools of togetherness, the tools of culture. It is therefore a requirement that we start designing with respect for the responsibilities that comes with.

We also believe that when you do that ... the results can only be more compelling.

p.s. 

I forgot to add some links that I had meant to .. so here they are:

Creating systems of support for Free culture is a trending topic. Just yesterday I came across Bryan Lunduke's project to move to a completely Free software approach for his work. This is a big gamble for him, but he's betting on an ethical route and I have mad respect for that. It shouldn't be a gamble, however, and we can change that dynamic by building systems of support that can free people of the temptation to hold their their own work hostage. I'd rather see people able to participate easily in  free culture without making unreasonable financial sacrifices. This relates to our thinking on supporting Free software and Free culture in the add-ons system.

If you are interested in getting involved with the Big Picture ideas around the add-ons system and how it impacts mobile device usage, please join us over at OpenTablets to discuss it with us in the forums!

13 comments:

Shmerl said...

The system can already handle installing software from third party repositories, which will bring software communities using OBS into the same sort of relationship. Imagine: hundreds or even thousands of different communities working whatever it is they do, and able to be syndicated into a seamless whole by hundreds or even thousands of add-ons stores around the world in hundreds or even thousands of different constellations? Wow!

I already asked that before, and it's still rather unclear. How do you plan to handle dependencies resolutions for installed packages (especially common libraries). When many repositories are used at the same time, it becomes complicated and requires some clear guidelines, lest it becomes dependenices mess.

Nick Shaforostoff said...

as vivaldi has wifi, it would be cool if one could easily transfer an app or content from own vivaldi to another, without the need for the internet connection for example

Kevin Kofler said...

IMHO, the decision to develop an actual app store instead of working with the AppStream project which tries to offer an app-store-like interface on top of the existing repository infrastructure and technologies (e.g. PackageKit) was a very bad decision, for several reasons:
1. It reinvents the wheel. That also means that the effort wasn't invested into AppStream when it could have been, hurting all the KDE users on traditional desktop distributions (who are many times more than Vivaldi users).
2. Users have to pay for applications and content. The traditional repository system delivers it to users for free, taking advantage of the fact that Free as in speech licenses explicitly allow the repository owner to do that. (It is true that a Free license does not preclude the author from selling the material, but it is just as true that it cannot preclude the repository owner from packaging and/or mirroring it for no charge, that would be non-Free.) And in the traditional repository system, it is not the author's job to package the software for your distribution and test it on it, that's what the packager is for, and distro packagers are happy to do this work for free. So why should the author do it and charge for it?
3. Encouraging charging for applications and content also ends up encouraging proprietary licenses, exactly because a Free as in speech license also means the recipient can redistribute the material at no or a lower price.
4. Does your app store even do dependency resolution? Huge blobs with everything bundled are a huge step backwards. Dependency resolution was developed for a reason. The space savings it gives are all the more important on a mobile device!

An open GNU/Linux tablet should be based on the established repository system. Why are you embracing the iPhone model instead of the GNU/Linux model? An app store runs counter to the ideals of our community in many ways.

Shmerl said...

@Kevin Kofler: Mer (underlying OS on Vivaldi) uses zypper infrastructure, so you can rely on conventional repositories. That at minimum should include Mer core repo, and I guess Plasma Active repo (I'm not yet familiar how the later will work).

The serious issue comes when you are trying to add third party zypper repos. Where are open source developers / maintainers supposed to upload packages? To Meego/Mer OBS? How do you handle shared libraries which aren't part of Mer? And so on.

Meego devs decided to handle this issue (for Mer/Nemo) with creating community repository apps.formeego.org which has QA process and some formal structure. However it doesn't resolve dependencies at the moment, and as you pointed out, static linking or bundling all libraries every time significantly increases bloat.

Aaron J. Seigo said...

@Shmerl: that is up to Zypper + PackageKit to handle. we'll do our best to keep it generally sane, though of course you can go ahead and add whatever repos you wish and create your own corner of hell..er.. fun :)

@Nick: data transfer and sync, esp of live activities, is something we'll be working on after this release. code writing hands welcome! :)

Aaron J. Seigo said...

@Kevin Koffler: "It reinvents the wheel"

no, it doesn't. read the article again, go look at the source code .. there are significant differences between what exists elsewhere and this.

"the effort wasn't invested into AppStream when it could have been"

AppStream is an app store. that is a subset of what our system does, and it fails the most interesting aspects of having multiple server installations.

AppStream also uses OCS which is workable, but also rather deficient in both its API and what it replies with. (i've written OCS apps, so i am speaking through experience here)

"hurting all the KDE users on traditional desktop distributions"

ah, so any effort that isn't on the One True Solution as beknighted by Kevin Koffler is hurting people. what rubbish, Kevin.

firstly, perhaps what we're doing is better. secondly, you can use this same app and much of the content on the desktop. it would be very easy to even set up various software catalogs for desktop targets.

multiple experiments in software is a good thing. it lets us explore different ways of doing things and finding ways that work better (or worse).

"(who are many times more than Vivaldi users)."

so what? the desktop is not the audience for Plasma Active.

that said, this works just as well on the desktop as it does on the tablet. i use it to get ebooks on my laptop all the time, in fact. it's the best project gutenberg front end i've ever used.

"Users have to pay for applications and content. "

no they don't. obviously you haven't even tried the app, have you? if you did, you'll see the 37000+ books for no cost.

many software titles, art, etc will be as well.

"The traditional repository system delivers it to users for free"

i find such appeals to cheapness to be sad and unfortunate.

you may herald zero cost as important, i herald freedom as important.

and you can still download whatever you want and install it at no cost yourself.

"it is not the author's job to package the software for your distribution and test it on it"

that's no different here.

"So why should the author do it and charge for it?"

because they'd like to be able to spend their days writing Free software but also have bills to pay.

others will decide not to charge for it, and that's cool too.

why do you judge this?

"Encouraging charging for applications and content also ends up encouraging proprietary licenses"

where is your proof for this bold statement? we're building a system by which people can easily have no-cost free content and for-payment free content. that's kind of the point. (and yes, proprietary content will be tolerated)

really, your argument can be applied to any Free software company that charges for their products or services. Red Hat hasn't drifted into proprietary land, have they?

"Does your app store even do dependency resolution?"

yes, thanks to repositories and packagekit/zypper. which makes the rest of your paragraph and senseless rant.

"Why are you embracing the iPhone model instead of the GNU/Linux model?"

you seriously did not read and comprehend what i wrote in this blog entry did you?

no single central point of control; an emphasis on free content and fulture; open participation. it's the diametric opposite of the iPhone model.

you know what i think Kevin? i think you dislike what we're doing for some reason of principle that exists in your mind, and so are intent on finding at every turn some reason to invent reasons to complain. i can't fathom why else you'd fabricate such bizarrely fictional complaints.

i'm really tired of it. please find a soapbox somewhere else.

bruce said...

What I think would be really cool is a nice seamless donation integration.
I think it would be great for encouraging the foss nature of the platform too.
What I'm thinking is something like after clicking the install button/after something's installed, the "install" button changes to a donate link.
Then the donate link could seamlessly integrate to a service like flattr (with your account pre-configured, hence clicking the link instantly flattrs the app developer).
I can see it being "I can donate $10 to foss each month", and then if it's something I value enough, I can click on the donate button (with minimal effort on my part). Then a service like flattr would mean that the money automatically gets distributed at the end of the month.
Just seems cool to me :-)

Aaron J. Seigo said...

@bruce: well, the Install button needs to become Uninstall .. but that's a minor detail. i love the idea of having a "Donate" button, and that's very very close to what i've been considering doing (and there is some allowance for this already in the server backend) ....

yeee .. now i'm super tempted to break the self-imposed feature freeze on the client to implement that! :P

Alejandro Nova said...

Aaron, will there be content in other languages? And, if my native language is Spanish, but if I also speak English, will the system adapt to show me only Spanish and English results and not, say, Russian?

Shmerl said...

that is up to Zypper + PackageKit to handle. we'll do our best to keep it generally sane, though of course you can go ahead and add whatever repos you wish and create your own corner of hell..er.. fun :)

Yes, I understood that Zypper/PackageKit can provide dependencies resolution, I was rather asking what is the proposed (i.e. advised) workflow to avoid that "dependencies hell".

Let's say add-ons client will be a front end for the add-ons repo (which somehow will be able to handle free [as in no payment] and paid software (by the way, as you well pointed out, both can be perfectly free as in freedom at the same time).

So, in a common use case, someone wants to be a maintainer for package A (which is some end-user-useful application). They'll need to upload A to the add-ons repo. A in its turn however might depend on shared libraries B and C which aren't part of the Mer core. So both of those libraries will have to be packaged for add-ons repo as well (and one will need to become / find a maintainer for B and C)? Or that repo is intended for end user applications only, while libraries have to go to some other repo? I was basically asking about the intended design for these kind of issues.

Andreas said...

bruce++

A flattr-like donation button would be very nice indeed. I have a Nokia N9 with Harmattan and gladly pay a few € for FLOSS apps on the Ovi store for this platform since I i) like to support the devs and ii) the actual implementation is super convenient in the form of a one-press button where the cost is put on phone bill (no credit card needed).

Nathan said...

Is it likely or even possible for add-on stores to be created for nonfree environments?

a said...

Information in this content is really good and very use full.



desktop alert software