[Sugar-devel] Proposal to build app store for python 3 activities

Sumit Srivastava sumitsrisumit at gmail.com
Sun Apr 12 13:34:03 EDT 2020

I thought that you wanted to work on it regardless of GSoC.

Note that period to submit a new application for GSoC 2020 has passed.

On Sun, Apr 12, 2020, 10:59 PM Sumit Srivastava <sumitsrisumit at gmail.com>

> This seems awesome.
> On Sun, Apr 12, 2020, 6:36 PM <sugar at radii.dev> wrote:
>> Unified App Store
>> Once the app store is built with all the specified requirements, we can
>> with minimal effort turn it into the unified app store for all activities
>> including python 2 (though all would be ported to python 3), JavaScript and
>> those (if any) written in other languages. Based on user-agent we can
>> decide:
>>    - Sugar OS - all activities including JS written for Sugar and
>>    Sugarizer
>>    - Old Sugar OS - python 2 activities (was there any support to run JS
>>    written activities?)
>>    - All other - Sugarizer activities unless toggled to show all
>> This combined with building native app store (again with minor
>> modification to web app store) which is geared only towards students for
>> searching, browsing, installing and uninstalling apps would provide single
>> app store codebase for entire platform.
>> Please provide your comments on the idea. If idea is supported by the
>> community than I can work towards building it.
>> Regards,
>> Manish
>> Apr 12, 2020, 01:18 by sugar at radii.dev:
>> Hello everyone,
>> I wish to build app store for python 3 activities
>> <https://github.com/sugarlabs/GSoC/blob/master/Ideas-2020.md#sugar-app-store-for-python-3-activities-aslov4>.
>> For this I would like to inquire exact requirements of the project from the
>> mentors and community at large.
>> Below is my current understanding of project. Please read through it and
>> correct where these are wrong. After it are some questions to answer to
>> further improve my understanding. Some of these are merely more elaborate
>> rewording of requirements specified on website
>> <https://github.com/sugarlabs/GSoC/blob/master/Ideas-2020.md#sugar-app-store-for-python-3-activities-aslov4>.
>> It is meant to detect possible misunderstanding that I may have from
>> reading very brief one-line requirements.
>> After few responses for this mail, a draft requirements document will be
>> mailed for feedback before final requirements specification.
>> Objective
>>    - The objective of app store is to provide a one-stop platform for
>>    students to browse or search and download activities to their system. It is
>>    expected than once the app store is built, students would not have to
>>    search for activities over internet, on GitHub or on wiki and download from
>>    there.
>>    - Sugar will use app store to automatically upgrade newer version of
>>    activities.
>> Users of app store
>>    - *Students*: search and browse app store for activities and download
>>    them if not already installed.
>>    - *Trusted developers*: add and modify activities to app store via
>>    SSH and than check them on app store. These are trusted developers and not
>>    all the developers. Their role would be similar to package managers for
>>    distros. That is, most of the times, the developer who built activity would
>>    not be the one who uploads it but request trusted developer to grant access
>>    or upload themselve.
>>    - *Sugar desktop environment/OS*: check for current version on app
>>    store and if new version found than download and upgrade activities on
>>    local machine.
>> User-interface
>>    - The user interface/frontend of app store would be catering to
>>    students primarily and therefore must be built keeping them in mind rather
>>    than developers. But developers would still use it (or not?), therefore
>>    there would be some consideration of them and providing information
>>    relevant to them such as version of app, size, detailed/complete release
>>    note, website/link to repository, license etc.
>>    - Special attention needs to be made towards user experience and
>>    usability. Such as web app should be responsive, delightful to use by
>>    students. For this, some artwork also needs to be built such as logo of app
>>    store, button icons, background etc.
>> Functionalities
>>    - *Upload activities to app store using SSH*: Trusted developers with
>>    access granted/account created for this specific purpose can upload
>>    activities to app store and have parameters to specify such as markdown
>>    supported detailed description of activities etc. but information which is
>>    available in activity.info will not be asked/cannot be specified in
>>    parameters while uploading, instead it will be processed directly by
>>    parsing activity.info file.
>>    - *Search box*: There will be a single search input field in which
>>    user enters search query. Thee are no complicated search query features
>>    such as selecting category, no. of entries per page etc. At backend, based
>>    on query keywords either a) a simple keyword match is performed and results
>>    are returned in order in which received. b) some search improvement
>>    processing is done such as a rank based search prioritizing keyword matches
>>    in activities tile over activities description. There will/will not (please
>>    inform) functionality to sort search results based on activities last
>>    updated or added, no. of downloads etc.
>>    - *Redirect older Sugar to python 2 app store
>>    <https://activities.sugarlabs.org/en-US/sugar/>*: Redirect only
>>    Fedora 18 or earlier version based Suger 0.112 or earlier version to
>>    activities.sugarlabs.org. Suger 0.112 or earlier desktop environment
>>    is not running on any other distribution other than Fedora 18 or earlier or
>>    not needed to be checked for.
>>    - *List activities*: There will be a category in browse section of
>>    app store named “All activities”, using it user can browse through all
>>    activities and not just in some specific activity.
>>    - *Support for Sugar’s microformat software upgrade feature*: Embed
>>    CSS selectors and HTML data on activity bundles page and activity bundle
>>    list page, to allow microformats based Sugar software upgrade feature to
>>    check and automatically update activities when new version available on app
>>    store. Should there be a page listing all activity bundles where Sugar
>>    software upgrade feature will check for updates or should I follow the same
>>    tree structure as on wiki <http://wiki.laptop.org/go/Activities/> or
>>    should there be a way to let know Sugar of dedicated page of each activity
>>    bundle to check for update (but modification to activity.info is not
>>    allowed)?
>>    - *Content-Type*: When user downloading activity bundle from app
>>    store, server sends Content-Type header in response with the content-type
>>    of sugar activities that is:
>>    - application/vnd.olpc-sugar for Sugar activity bundle (extension .xo)
>>       - application/vnd.olpc-content for Sugar content bundle (extension
>>       .xol).
>>       - application/vnd.olpc-journal-entry for Sugar Journal entry
>>       bundle (extension .xoj)
>>       - application/vnd.olpc-journal-backup for Sugar Journal backup
>>       files (extension .xob)
>> There would not be any other file than .xo but better to have information
>> for all file types used by Sugar in app store software.
>>    - *Automatically update activities from activities repository
>>    specified in activity.info <http://activity.info> file*: A standard
>>    recipe/script is to be made for server/app store to periodically check for
>>    newer release under ‘releases’ section of activities hosted on GitHub and
>>    automatically create its bundle and add it to the app store. However, it
>>    will not be done for all activities which specify its website/repository as
>>    GitHub repository but only for those which are whitelisted by website
>>    admin/trusted developers as trusted repositories for security reasons and
>>    all GitHub repositories starting with https://github.com/sugarlabs/
>>    i.e. hosted by Sugar labs organization.
>>    - *Inform if activity is already installed*: Wherever on app store,
>>    there will be download buttons for activities, A check will be performed if
>>    activity bundles are already installed on system. If so, than download
>>    button colour will be changed and “already installed” will be displayed
>>    below it. But, user can still download it. This need to be accomplished
>>    without modifying activities and should work for all activities available
>>    on app store. So, options which rely on modifying app itself are out of
>>    option but Sugar can be modified to support this functionality such
>>    supporting something similar to getInstalledRelatedApps() in Android.
>>    - *Download count*: Every activity bundle should display no. of times
>>    it is downloaded. It should include download count of all previous version
>>    as well.
>> Development
>>    - Use general database such as MySQL/MariaDB for storing all textual
>>    data such as app title, description, author name etc. and use their
>>    in-built search functionality to perform search (after sanitizing input).
>>    - The website will not be using JavaScript to make requests and
>>    update page dynamically.
>> Constraints
>>    - Activities itself won’t be modified including their metadata file
>>    located at activity/activity.info in their source tree for supporting
>>    any of the required feature. Request for modifying metadata should not be
>>    made such as for adding detailed description and instead should be fetched
>>    from their repository or options should be provided for specifying
>>    description while uploading activity bundle via SSH.
>> Security
>>    - Only developers which have been provided access in advance can
>>    upload activities to app store. Some may have admin access, so they can add
>>    other developers as well. A simple CLI script should be provided to easily
>>    add new developers and their access level as ‘can upload new activities’,
>>    ‘can modify specified activity’ and admin access.
>> Additional Questions
>>    1. Developer uploading activities via SSH? Will access to uploading
>>    activities be with few trusted developers (my assumption as of now) or
>>    anyone can upload activities to app store once approved.
>>    2. Future considerations: how far is the app store expected to grow
>>    in future in terms of its scope and functionalities. What considerations
>>    should be kept in mind if app store functionalities and codebase is
>>    expected to be a lot bigger in future.
>>    3. Is programming language to be used for backend is per-decided to
>>    be Python or can be JavaScript as well? I am comfortable with using any of
>>    the two. My suggested framework for Python is Flask and if JavaScript is
>>    used than Express.js. I also suggest using MySQL database similar to
>>    aslo <https://github.com/sugarlabs/aslo> for backend for storing and
>>    looking up activities metadata but store activities bundles as normal files
>>    on disk. Is their any reverse proxy used on server where it will be
>>    installed such as Nginx or Apache?
>> Please give your comments on these questions.
>> Regards,
>> Manish
>> _______________________________________________
>> Sugar-devel mailing list
>> Sugar-devel at lists.sugarlabs.org
>> http://lists.sugarlabs.org/listinfo/sugar-devel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sugarlabs.org/archive/sugar-devel/attachments/20200412/5e7e3a90/attachment-0001.htm>

More information about the Sugar-devel mailing list