<div dir="ltr"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span style="font-size:12.8px">One thing you could look at. On activities.sugarlabs,org, can you determine from Remora where the metadata is stored? I assume a db. Currently I am thinking to use BeautifulSoup to scrape the site to get that data, but it would be much easier to access the data directly.</span></blockquote>As per wiki <a href="https://wiki.mozilla.org/Update:Remora_Server_Requirements#SVN.2C_DB_and_app_config">https://wiki.mozilla.org/Update:Remora_Server_Requirements#SVN.2C_DB_and_app_config</a> data is stored in mysql database. I don't have access to the production server where ASLO is currently running, following file <a href="https://github.com/sugarlabs/aslo/blob/master/aslo/db-update.sh#L9">https://github.com/sugarlabs/aslo/blob/master/aslo/db-update.sh#L9</a> confirms that data is stored in a mysql db. However it would be interesting and fun to scrape the data from live site. I would do that.<br><div><br></div><div>Thanks will poke around the code, looks to me it's a django app and I have to mount it on my django project, thanks :)</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span style="font-size:12.8px">If you are talking about IRC as a place to meet Sugar community members, use the freenode #sugar. This is probably most active from 8-17 EST (UTC-5). I am currently in the Philippines which is UTC+ 7. </span></blockquote><div><br></div><div> Yes, tried that.  <a href="https://gitter.im">https://gitter.im</a> fits in naturally with Github (really sorry for suggesting a new mode of communication everyday) 😅</div><div><br></div><div>- Jatin Dhankhar</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Apr 11, 2017 at 6:14 AM, Tony Anderson <span dir="ltr"><<a href="mailto:tony_anderson@usa.net" target="_blank">tony_anderson@usa.net</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
  
    
  
  <div text="#000000" bgcolor="#FFFFFF">
    If you are talking about IRC as a place to meet Sugar community
    members, use the freenode #sugar. This is probably most active from
    8-17 EST (UTC-5). I am currently in the Philippines which is UTC+ 7.
    <br>
    <br>
    Localization of Python activities is done by Pootle, when
    implemented by the developer. The developer does something like the
    following:<br>
            <br>
            from gettext import gettext as _<br>
    <br>
            self.copy.set_tooltip(_('Copy'<wbr>))<br>
    <br>
    In this way, all text displayed is taken from a po file based on the
    locale (e.g. en.po or hi.po). This is a simplification as the actual
    file is compressed: en.mo, hi.mo. These files are in the activity
    bundle. The detail is that when a new version is released, there is
    a master file: Paint.pot from which the local language files are
    built. This needs to be submitted to <a href="http://translate.sugarlabs.org" target="_blank">translate.sugarlabs.org</a> which
    maintains a copy. However, then the localized version needs to be
    added back to the bundle. However, the localizations can take months
    for 100 languages so how synchronize the po directory with the
    activity release is difficult. <br>
    <br>
    The sugar3 vs sugar issue is decided. The community wants to move to
    sugar3 (gtk3). The problem is that less that 20% of the activities
    have been converted.<br>
    The ones that have been converted are low hanging fruit. The
    unconverted ones may require intensive work (gimp which developed
    gtk originally has not made the conversion). <br>
    <br>
    One thing you could look at. On activities.sugarlabs,org, can you
    determine from Remora where the metadata is stored? I assume a db.
    Currently I am thinking to use BeautifulSoup to scrape the site to
    get that data, but it would be much easier to access the data
    directly.<br>
    <br>
    Yesterday afternoon, the ISP restored service. Last time it died
    after two days, but I am keeping my fingers crossed. I am attaching
    the django stuff.<span class="HOEnZb"><font color="#888888"><br>
    <br>
    Tony</font></span><div><div class="h5"><br>
    <br>
    <div class="m_5089198513458135942moz-cite-prefix">On 04/11/2017 01:36 AM, Jatin Dhankhar
      wrote:<br>
    </div>
    <blockquote type="cite">
      <div dir="ltr">
        <div>Hi Tony,</div>
        <div> </div>
        <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span style="font-size:12.8px">Normally, we use </span><a class="m_5089198513458135942gmail-m_2297804042014618975moz-txt-link-freetext" href="http://chat.sugarlabs.org/" style="font-size:12.8px" target="_blank"></a><a class="m_5089198513458135942moz-txt-link-freetext" href="http://chat.sugarlabs.org" target="_blank">http://chat.sugarlabs.org</a><span style="font-size:12.8px"> <wbr>or on freenode: sugar-meeting or
            sugar-newbies. These are logged sites so that there is a
            record. The second is more appropriate since sugar-meeting
            is used for SLOB meetings and the like. The real problem
            with IRC is time zones. Email has the advantage that either
            party can send or receive at any time. Last year with a GSOC
            mentee we used sugar-newbies by arranging a specific meeting
            time in advance. </span></blockquote>
        <div>Yes, that is correct, main issue in communication barrier
          is due to timezone issues. Since most of the people are
          familiar and are available on IRC, it's seems to be the
          primary channel of communication along with mailing lists and
          email. But since you said we can use anything else, giving
          Slack a try won't hurt (if issue is about not using closed
          source software then IRC is fine, or we can try <a href="https://about.mattermost.com/" target="_blank">Mattermost</a>).</div>
        <div><br>
        </div>
        <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span style="font-size:12.8px"> Another part of the process is how
            to update '</span><a href="http://translate.sugarlabs.org/" style="font-size:12.8px" target="_blank">translate.sugarlabs.org</a><span style="font-size:12.8px">' with the corresponding POT file
            to enable localization. We can get help from Chris Leonard
            on this. </span></blockquote>
        <div><br>
        </div>
        <div>I am not aware on how localization works. Do we need to
          download relevant files and bundle them with the acitvity
          before making it available on ASLO ? </div>
        <div><br>
        </div>
        <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span style="font-size:12.8px">I have my Django version available
            - but the internet problems here are still unresolved. The
            technician is supposed to make another visit today to see
            what is wrong with our connection. Let me know if and when
            you think this will be useful to you.</span></blockquote>
        <div>Let me know when your connection is stable and I would
          start.</div>
        <div> What  are the things you need me to do in the meantime ? </div>
        <div><br style="font-size:12.8px">
          <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span style="font-size:12.8px">One open issue is sugar3 vs
              sugar. Currently two versions of Sugar are released. The
              sugar version supports gtk while sugar3 supports gtk3.
              Unfortunately, gtk3 was developed to be totally
              incompatible with gtk. For example, incorporation of one
              gtk3 feature requires that all direct and indirect
              references to gtk be removed or the activity will throw an
              exception. Several of the gtk3 conversions failed to meet
              this test and so fail. The issue is whether curated
              activities be limited to ones converted to gtk3. The
              positive is that Sugar could revert to releasing and
              maintaining only a single version. The downside is that
              100 or more activities will no longer be available.
              Specifically, in our implementation of ASLO, we need to
              show which versions of an activity work on which versions
              of Sugar (e.g. i86, arm, amd64, sugar or sugar3, and so
              on). We also need to show which ones support localization.
              There are many English activities and many Spanish
              activities that make no provision for localization.
              Luckily there are many that have no language component.
              However, for many of these, some kind of help is needed to
              convey the way the activity works. </span></blockquote>
          <div><br>
          </div>
          <div><a href="https://www.reddit.com/r/linux/comments/3e3q8n/is_there_a_technical_reason_why_gtk3_is_better/" target="_blank">Some
              people believe GTK3 is slightly better</a> and I think
            GTK3 will stay but that should be asked in community and
            voted upon and taking in considerations cost of development
            and porting, only a discussion will help in this one.</div>
        </div>
        <div><br>
        </div>
        <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span style="font-size:12.8px">You are wading into a deep and vast
            body of water!</span></blockquote>
        <div>As long as I have something to hold onto, I will not drown
          😅 </div>
        <div><br>
        </div>
        <div>Thanks,</div>
        <div>Jatin Dhankhar</div>
      </div>
      <div class="gmail_extra"><br>
        <div class="gmail_quote">On Mon, Apr 10, 2017 at 9:11 AM, Tony
          Anderson <span dir="ltr"><<a href="mailto:tony_anderson@usa.net" target="_blank">tony_anderson@usa.net</a>></span>
          wrote:<br>
          <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
            <div text="#000000" bgcolor="#FFFFFF"> Hi, Jatin<br>
              <br>
              Normally, we use <a class="m_5089198513458135942m_2297804042014618975moz-txt-link-freetext" href="http://chat.sugarlabs.org" target="_blank">http://chat.sugarlabs.org</a>
              or on freenode: sugar-meeting or sugar-newbies. These are
              logged sites so that there is a record. The second is more
              appropriate since sugar-meeting is used for SLOB meetings
              and the like. The real problem with IRC is time zones.
              Email has the advantage that either party can send or
              receive at any time. Last year with a GSOC mentee we used
              sugar-newbies by arranging a specific meeting time in
              advance. <br>
              <br>
              I haven't heard from Walter, but my preference would be to
              use the Sugarlabs server since the content is largely
              already there and it would be easier to make it the
              official site if that were decided. So in the short run, I
              think you should do whatever is best for your own
              development process. <br>
              <br>
              I am not sure how CI fits into this. If the activity
              development is done on GitHub, then the deployment model
              is to run setup.py to create an xo bundle and then copy
              that bundle to the appropriate location in the <a href="http://download.sugarlabs.org" target="_blank">download.sugarlabs.org</a>
              tree. Assuming the update results from a PR, the deployer
              would need to update the activity information on ASLO
              appropriately. However, that process depends on where that
              data (metadata) is stored. Another part of the process is
              how to update '<a href="http://translate.sugarlabs.org" target="_blank">translate.sugarlabs.org</a>'
              with the corresponding POT file to enable localization. We
              can get help from Chris Leonard on this. <br>
              <br>
              I have my Django version available - but the internet
              problems here are still unresolved. The technician is
              supposed to make another visit today to see what is wrong
              with our connection. Let me know if and when you think
              this will be useful to you.<br>
              <br>
              I have now tested most of the activities (~400). I was
              optimistic in the number that work out of the box.
              However, a part of this is running them in the Ubuntu
              version of Sugar (amd64). There are many activities which
              launch object code (mostly c) which is dependent on the
              architecture. I am now trying to repeat the tests on an
              XO-1.75. One issue on Ubuntu is that many activities
              assume a 1200x900 screen and so on a 1024X768 screen
              overflow. This makes some of the games unusable since part
              of the controls are off the screen. Because of the
              internet problems, the untested activities tend to be new
              ones since I was using my local repository which is a
              snapshot taken several months ago. The other group are the
              GCompris activities (about 70). <br>
              <br>
              My intent is to build a 'curated' repository of activities
              known to work and be usable on the XO and on Ubuntu (or
              such other platform that Sugar may choose to support).
              Most of the currently not work activities have software
              dependencies no longer included in the current Sugar
              release. So the curated library will grow as activities
              are repaired over time. <br>
              <br>
              One open issue is sugar3 vs sugar. Currently two versions
              of Sugar are released. The sugar version supports gtk
              while sugar3 supports gtk3. Unfortunately, gtk3 was
              developed to be totally incompatible with gtk. For
              example, incorporation of one gtk3 feature requires that
              all direct and indirect references to gtk be removed or
              the activity will throw an exception. Several of the gtk3
              conversions failed to meet this test and so fail. The
              issue is whether curated activities be limited to ones
              converted to gtk3. The positive is that Sugar could revert
              to releasing and maintaining only a single version. The
              downside is that 100 or more activities will no longer be
              available. Specifically, in our implementation of ASLO, we
              need to show which versions of an activity work on which
              versions of Sugar (e.g. i86, arm, amd64, sugar or sugar3,
              and so on). We also need to show which ones support
              localization. There are many English activities and many
              Spanish activities that make no provision for
              localization. Luckily there are many that have no language
              component. However, for many of these, some kind of help
              is needed to convey the way the activity works. <br>
              <br>
              You are wading into a deep and vast body of water!<span class="m_5089198513458135942HOEnZb"><font color="#888888"><br>
                  <br>
                  Tony</font></span>
              <div>
                <div class="m_5089198513458135942h5"><br>
                  <br>
                  <div class="m_5089198513458135942m_2297804042014618975moz-cite-prefix">On
                    04/10/2017 12:00 AM, Jatin Dhankhar wrote:<br>
                  </div>
                  <blockquote type="cite">
                    <div dir="ltr">Hi,
                      <div>Sorry for the delay. I went through the polls
                        tutorials and I think I am getting hang of
                        Django. I have one query that is out of context,
                        what is your IRC setup ? IRC doesn't allow
                        message to be delivered or stored once either
                        party is offline, people login through a
                        external server for IRC's to maintain their
                        availability in a channel. May I suggest
                        something like Slack or Flock for communication.
                        IRC is good for quick and fast connection but
                        Slack and alternatives allow easy communication.
                        (Just a suggestion, though)</div>
                      <div><br>
                      </div>
                      <div>Should I  deploy the same polls app on
                        DigitalOcean along with CI pipeline and
                        branching model in the meantime with code hosted
                        on Github ?</div>
                      <div><br>
                      </div>
                      <div>Thanks,</div>
                      <div>Jatin Dhankhar</div>
                    </div>
                    <div class="gmail_extra"><br>
                      <div class="gmail_quote">On Sat, Apr 8, 2017 at
                        6:28 AM, Tony Anderson <span dir="ltr"><<a href="mailto:tony_anderson@usa.net" target="_blank"></a><a class="m_5089198513458135942moz-txt-link-abbreviated" href="mailto:tony_anderson@usa.net" target="_blank">tony_anderson@usa.net</a>></span>
                        wrote:<br>
                        <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
                          <div text="#000000" bgcolor="#FFFFFF"> Hi,
                            Jatin<br>
                            <br>
                            I abbreviated this thread because I am
                            getting complaints from the list that the
                            emails are too long.<br>
                            <br>
                            Yesterday, I was able to complete a set of
                            25 activities to use as a test base. The
                            Django app now has two views. First is a
                            display of all of the <br>
                            activities with the icon and name. A link
                            for each opens the full activity page. The
                            data for the views is in a file which is a
                            list of jsons, one json per line. <br>
                            The  views.py reads this file and builds the
                            view from the jsons. <br>
                            <br>
                            So the app consists of:<br>
                                urls.py<br>
                                views.py<br>
                                templates/<br>
                                    base.html<br>
                                    list.html<br>
                                    activity.html<br>
                            <br>
                            with the data:<br>
                                    fixtures/activities.json <br>
                                    icons/<br>
                                    xo/<br>
                            <br>
                            The icons directory has the activity icons
                            (*.svg)<br>
                            The xo directory has the activity bundles
                            (*.xo)<br>
                            <br>
                            Meanwhile, I am having more troubles with
                            the ISP (a new one). When that gets
                            resolved, I should be able to send the above
                            to you.<br>
                            <br>
                            I have also mentioned our dialog to Walter
                            Bender suggesting that you could set up your
                            working model as <a href="http://activities3.sugarlabs.org" target="_blank">activities3.sugarlabs.org</a>.
                            This would give you a permanent place to do
                            the development and make your project
                            visible to the community so that we can
                            obtain feedback. I aslo suggested that the
                            project repository could be placed on GitHub
                            so that again the community can comment and
                            potentially contribute.<span class="m_5089198513458135942m_2297804042014618975HOEnZb"><font color="#888888"><br>
                                <br>
                                Tony</font></span><span><br>
                              <div class="m_5089198513458135942m_2297804042014618975m_-2022019510050925157moz-cite-prefix">On

                                04/07/2017 12:23 AM, Jatin Dhankhar
                                wrote:<br>
                              </div>
                              <blockquote type="cite">
                                <div dir="ltr">Hi,
                                  <div><br>
                                  </div>
                                  <div>I am setting up Django now and
                                    going through some tutorials. I will
                                    setup the code with a very basic and
                                    barebones version of what we want to
                                    achieve and put it in a private
                                    repo. We can even host it online,
                                    since I have some DigitalOcean
                                    credit left. Will keep you posted. </div>
                                  <div><br>
                                  </div>
                                  <div>Thanks.</div>
                                  <div>Jatin Dhankhar</div>
                                </div>
                                <div class="gmail_extra"><br>
                                  <div class="gmail_quote">On Thu, Apr
                                    6, 2017 at 7:11 AM, Tony Anderson <span dir="ltr"><<a class="m_5089198513458135942m_2297804042014618975moz-txt-link-abbreviated" href="mailto:tony_anderson@usa.net" target="_blank"></a><a class="m_5089198513458135942moz-txt-link-abbreviated" href="mailto:tony_anderson@usa.net" target="_blank">tony_anderson@usa.net</a>></span>
                                    wrote:<br>
                                    <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
                                      <div text="#000000" bgcolor="#FFFFFF"> Hi, Jatin<br>
                                        <br>
                                        In setting up Django, I think
                                        you will do it on your computer
                                        not on a separate server. Django
                                        handles that through its own
                                        server and has sgqlite as a
                                        database built-in. A good first
                                        start would be to set up the
                                        tutorial app (<a class="m_5089198513458135942m_2297804042014618975m_-2022019510050925157m_6069057648541672779moz-txt-link-freetext" href="https://www.djangoproject.com/" target="_blank"></a><a class="m_5089198513458135942moz-txt-link-freetext" href="https://www.djangoproject.com" target="_blank">https://www.djangoproject.com</a><wbr>/).



                                        Essentially you will need to
                                        install django and then set up
                                        the tutorial app 'poll'. Working
                                        through this tutorial will help
                                        a lot later on. The key point is
                                        that after initial setup, there
                                        are three important elements:
                                        url.py which defines the urls to
                                        access the application, views.py
                                        which is the python code that
                                        responds to a request by
                                        accessing the db and delivering
                                        the relevant information to a
                                        template. The template is an
                                        html file with variables of the
                                        form {{ <a href="http://activity.name" target="_blank">activity.name</a>
                                        }} transferring information from
                                        the view to the template.<br>
                                        <br>
                                        What I have is an application:
                                        aslo. Once you have Django
                                        installed and have run the
                                        tutorial app through Django's
                                        server, you'll be ready.
                                        Essentially, you will only need
                                        to add aslo as a second app in
                                        the settings. One possible
                                        confusion is that DJango lives
                                        in a project - essentially a
                                        directory containing its
                                        manage.py admin interface. In
                                        the directory is another
                                        directory of the same name with
                                        the settings.py and url.py. The
                                        poll app is a directory in the
                                        top-level alongside the inner
                                        directory with the project name.<br>
                                        <br>
                                        For example, my project is
                                        schoolsite. So my setup looks
                                        like:<br>
                                        <br>
                                        /library/schoolsite/schoolsite<br>
                                        /library/schoolsite/aslo<br>
                                        <br>
                                        Meanwhile my code links directly
                                        to an activity page with no
                                        index. I'll add an index so the
                                        essential structure will be
                                        there. I'll also include the
                                        'fixtures' to set up a 25
                                        activity capability. Fixtures
                                        are csv files from which the
                                        database (metadata) can be
                                        loaded. <br>
                                        <span class="m_5089198513458135942m_2297804042014618975m_-2022019510050925157HOEnZb"><font color="#888888"> <br>
                                            Tony</font></span></div>
                                    </blockquote>
                                  </div>
                                </div>
                              </blockquote>
                              <br>
                            </span></div>
                        </blockquote>
                      </div>
                      <br>
                    </div>
                  </blockquote>
                  <br>
                </div>
              </div>
            </div>
          </blockquote>
        </div>
        <br>
      </div>
    </blockquote>
    <br>
  </div></div></div>

</blockquote></div><br></div>