← Back to team overview

elementary-dev-community team mailing list archive

Re: The future of appcenter


An AppCenter inherits the need to be "online", in a sense that it requires network connection to fetch package information and install packages. In terms of making it online like Google Play or PlayDeb, that is an idea I've pondered on myself.

In terms of the loading of an application data, I've already begun work on that over at https://bugs.launchpad.net/appcenter/+bug/1091406

The idea is to use a PHP-based API that fetches data from a database (it could be MariaDB / MySQL, Cassandra, etc) and returns it in a JSON formatted string. Obviously MySQL and MariaDB aren't all that scalable and I'd prefer whatever we use be ready to be scaled already.

In terms of implementing BOTH a web-based front-end and the AppCenter, that is a huge division in resources that I don't think should be undertaken. Either it should be a web-based front-end or not. Not only would you need to develop both but upkeep both and it makes no sense to have both when most people would use the native application anyways.

It is my opinion that since native application development is already occurring for the AppCenter, we stay on course with that.

"The AppCenter will need just to call the APIs that are already provided so we don't have to do any extra effort implementing APIs."

I'll be setting up either a repo on GitHub (I prefer git to be honest) or a bzr repo on LaunchPad for an API and push some code out (hopefully) by Friday. Whether it'll be officially supported / adopted by Elementary OS or not, I don't know, I'll honestly be working on it regardless since I'll be using the API internally as well (doing deployment at my startup).

- Joshua Strobl

On Mon, Mar 25, 2013 at 4:15 PM, Goncalo Margalho <g@xxxxxxxxxxxxx> wrote:
Hi all,
first of all I want to congratulate Mefrio (which I don't know his real name) for the good work on the AppCenter.

From my point of view the AppCenter should be completely online, like all the others appstore, like Play from google, (they have even the webversion which is fast so I don't see why it should be fast in an app). So what we can do it's make it completely online, so you will load everything from a server and if you don't have connection you can't see anything.

Or an other alternative it's to keep it like now and in the single view (the one of the app that you want to install) load the reviews, images etc in background. This could be good but You still have to synchronize with new apps. and what about the apps that you need to pay? those ones may not be on the repositories so you don't see them. Another solution could be that on the load of the AppCenter you download those app and update the local dabase.

Which one is the best solution for you?

I was thinking on an implementation of the AppCenter Server with a Couchbase server. I don't know if anyone used it before but it's a NoSQL DB born from the fusion between CouchDB and Memcached. The db stores the data in JSON, which is good because it has already an API by default for any "table"/"view" that you create http://www.couchbase.com/docs/couchbase-manual-2.0/couchbase-views-querying-rest-api.html ;) and the scaling is just amazing, you just add more servers and does everything on its own, just incredible to see. I could implement it (even in my server, since I know that the server at the moment is not very powerful) and do a test, we could easily implement a web interface for it with the webteam and we could work with mefrio to implement it in the appcenter in a way that we all agree.

The AppCenter will need just to call the APIs that are already provided so we don't have to do any extra effort implementing APIs.

I hope to get some feedback on this.

Goncalo "DevAlien" Margalho