[GCompris-devel] GCompris Architecture Reconfig Discussion

Bruno Coudoin bruno.coudoin at gcompris.net
Tue Mar 22 22:14:50 UTC 2016



Le 22/03/2016 15:27, Devendra Vyas a écrit :
> Hi
> Thanks for the prompt response!
>
> On Tue, Mar 22, 2016 at 6:27 PM, Johnny Jazeix <jazeix at gmail.com
> <mailto:jazeix at gmail.com>> wrote:
>
>     Hi,
>
>     2016-03-22 13:10 GMT+01:00 Devendra Vyas
>     <devendra.y12 at lnmiit.ac.in <mailto:devendra.y12 at lnmiit.ac.in>>:
>
>         Hi
>
>         This mail comprises of what I've understood after the
>         discussions on mailing lists and IRC regarding modifying the
>         core of Gcompris.
>
>         Purpose: To provide users an option to download activities as
>         per their wish/need. Keeping the full download option intact.
>
>         Phases of development:
>         P-1 -> Separate ActivityInfo.qml and icons from some
>         activities and make new ActivityInfo.rcc. See whether we are
>         successfully able to load them. The activities selected here
>         will not have have any inter-dependencies on some other activity.
>
>         P-2 -> Now for the activities that are inter-dependent, I
>         think we'll have to code a new download manger in a way that
>         it downloads all dependencies required for running that
>         activity and nothing extra. As mentioned earlier by Johnny,
>         erase_2clic needs erase. So download manager's code will
>         manage accordingly.
>
>
>     I'm not sure we need to update the DownloadManager in this case,
>     we can just first download the dependencies and then the wanted
>     package. I think there is a system with a job list that should
>     work here?
>
>> If it's available already then, we could incorporate it.​
>  
>
>      
>
>         P-3 -> Now providing option of selective activity download to
>         end-user in a way that it is easy to understand. I suggest
>         that we have two buttons at the very beginning of the app,
>         that prompts user with two options/buttons: a) Full Download
>         b) Selective download
>
>
>     There are two things to consider: the first run where your
>     solution works (should it depend on the platform? I mean for
>     Desktop packages, do we propose all the activities directly? We
>     also need to take care of not propose it if the user is not
>     connected to internet, it should work offline).
>
>> First phase could be do it for android users only, as desktop users
> don't usually face space problems. However, once tested for android,
> we could discuss about it's implementation for desktop users as well.
> Does the approach feel right?
Well, the code is platform agnostic. It is just our decision to provide
a given version with a download mode for a given platform.
> We could provide the option of download, but if the user is offline,
> it would check and notify the user through a Dialog/Alert Box that the
> device is not connected to the internet. ​
>  
Sure.
>  
>
>     Then, there should be the possibility to install/update/uninstall
>     any activity when you want using the configuration panel.
>
>  Sure, I've mentioned that in P-5 as an optional component, but now I
> think it could be added to the main To-Do list :)​
I would like to avoid a such configuration panel. This feature belongs
to the admin mode. Let's not give the option to uninstall specific
activities.
>  
>
>     For the selective download, do you have an idea of what it should
>     look like, which information should be displayed? The icon, name,
>     difficulty, tags, version? Can we reuse the existing menu to
>     display these activities (and instead of flagging favorite, we can
>     flag "already downloaded/can be upgraded") or maybe use a list?
>
>> One way that I could think of is, the icons of the activities that are
> downloaded will be in color and those not on device will be in
> grayscale. By doing this, we could use the existing menu. Also, if we
> do this, the already downloaded flag won't be needed. Now there could
> be multiple ways to display "can be upgraded" flag or info, one of
> them could be to have a separate configuration screen where every
> downloaded activity is listed and there the user could be notified of
> upgrades via some some button. The button would be active only when
> there is an upgrade possible.
Ok
>
>      
>
>         P-4 -> Versioning of APIs. I'm a little unsure here. We have
>         two issues to handle here: a) Avoid download of duplicate
>         activity on the user end b) check and update correct version
>         of activity to core. I think one of the ways could be, while
>         we are creating a separate activityInfo.rcc for every
>         activity, the download manger could check the corresponding
>         ActivityInfo.qml file in activityInfo.rcc for version and then
>         perform the necessary action.
>
>
>     To avoid duplicate, you should already know if you have the
>     activity or not, and its version. I think we can only have one
>     downloadable_activities.rcc on server containing:
>     |- activity1/{icon/ActivityInfo.qml}
>     |- activity2/{icon/ActivityInfo.qml}
>     |- activity3/{icon/ActivityInfo.qml} ...
>
>     This file would be downloaded, if automatic download is activated,
>     when the user starts the application if the version is more recent
>     else with a button in the config, like for the voices. Then, we
>     can see for each activity if we have a more recent one or not.
>
>     For knowing the minimum/maximum core version, we can probably add
>     it in the ActivityInfo.qml. We have a createdInVersion field,
>     maybe we can improve it.
>
> ​I'm a little unsure here. May be we could discuss this further as
> Sagar suggested.​
>  
Yes, we can just decide not to manage versioning more than refusing to
install a new activity on a previous core. This is a safe bet and a good
start.

Bruno.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/gcompris-devel/attachments/20160322/b93536aa/attachment.html>


More information about the GCompris-devel mailing list