{"id":556,"date":"2023-08-07T18:24:59","date_gmt":"2023-08-07T18:24:59","guid":{"rendered":"https:\/\/blogs.gentoo.org\/gsoc\/?p=556"},"modified":"2023-08-07T18:24:59","modified_gmt":"2023-08-07T18:24:59","slug":"week-910-report-automated-gentoo-system-updater","status":"publish","type":"post","link":"https:\/\/blogs.gentoo.org\/gsoc\/2023\/08\/07\/week-910-report-automated-gentoo-system-updater\/","title":{"rendered":"Week 9+10 Report, Automated Gentoo System Updater"},"content":{"rendered":"<p>This article is a summary of all the changes made on\u00a0<a href=\"https:\/\/wiki.gentoo.org\/wiki\/Google_Summer_of_Code\/2023\/Ideas\/Automated_Gentoo_system_updater\">Automated Gentoo System Updater<\/a>\u00a0project during\u00a0<strong>weeks 9 and 10<\/strong>\u00a0of GSoC.<\/p>\n<p>Project is hosted on GitHub (<a href=\"https:\/\/github.com\/Lab-Brat\/gentoo_update\">gentoo_update<\/a>\u00a0and\u00a0<a href=\"https:\/\/github.com\/Lab-Brat\/gentoo_update_flutter\">mobile app<\/a>).<\/p>\n<h3 id=\"progress-on-week-10\">Progress on Weeks 9 and 10<\/h3>\n<p>I have finalized app architecture, here are the details:<\/p>\n<p>The app&#8217;s main functionality is to receive notification from the push server. For each user, it will create a unique API token after authentication (there is an Anonymous option). This token will be used by <code>gentoo_update<\/code> to send the encrypted report to the mobile device using a push server endpoint. Update reports will be kept only on the mobile device, ensuring privacy.<\/p>\n<p>After much discussion, I decided to implement app\u2019s backend in Firebase. Since GSoC is organized by Google, it seems appropriate to use their products for this project. However, future plans include the possibility of implementing a self-hosted web server, so that instead of authentication user will just enter server public IP and port.<\/p>\n<p>Example usage will be something like:<\/p>\n<ol>\n<li>Download the app and sign-in.<\/li>\n<li>App will generate a token, 1 token per 1 account.<\/li>\n<li>Save the token into an environmental variable on Gentoo Linux.<\/li>\n<li>Run\u00a0<code>gentoo_update --send-report mobile<\/code><\/li>\n<li>Wait until notification arrives on the mobile app.<\/li>\n<\/ol>\n<p>I have also made some progress on the app&#8217;s code. I\u2019ve decided to host it in another <a href=\"https:\/\/github.com\/Lab-Brat\/gentoo_update_flutter\">repository<\/a>\u00a0because it doesn\u2019t require direct access to\u00a0<code>gentoo_update<\/code>, and this way it will be easier to manage versions and set up CI\/CD.<\/p>\n<p>Splitting tasks for the app into\u00a0<code>UI<\/code>\u00a0and\u00a0<code>Backend<\/code>\u00a0categories was not very efficient in practice, since two are very closely related. Here is what I have done so far:<\/p>\n<ul>\n<li>Create an app layout<\/li>\n<li>Set up Firebase backend for the app<\/li>\n<li>Set up database structure for storing tokens<\/li>\n<li>Configure anonymous authentication<\/li>\n<li>UI elements for everything above<\/li>\n<\/ul>\n<h3 id=\"challenges\">Challenges<\/h3>\n<p>I\u2019m finding it somewhat challenging to get used to Flutter and design an modern-looking app. My comfort zone lies more in coding backend and automation tasks rather than focusing on the intricacies of UI components. Despite these challenges, I am 60% sure that in end app will look half-decent.<\/p>\n<h3 id=\"plans-for-week-11\">Plans for Week 11<\/h3>\n<p>After week 11 I plan to have a mechanism to deliver update reports from a Gentoo Linux machine.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This article is a summary of all the changes made on\u00a0Automated Gentoo System Updater\u00a0project during\u00a0weeks 9 and 10\u00a0of GSoC. Project is hosted on GitHub (gentoo_update\u00a0and\u00a0mobile app). Progress on Weeks 9 and 10 I have finalized app architecture, here are the &hellip; <a href=\"https:\/\/blogs.gentoo.org\/gsoc\/2023\/08\/07\/week-910-report-automated-gentoo-system-updater\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":182,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[16,18],"tags":[],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/blogs.gentoo.org\/gsoc\/wp-json\/wp\/v2\/posts\/556"}],"collection":[{"href":"https:\/\/blogs.gentoo.org\/gsoc\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.gentoo.org\/gsoc\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.gentoo.org\/gsoc\/wp-json\/wp\/v2\/users\/182"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.gentoo.org\/gsoc\/wp-json\/wp\/v2\/comments?post=556"}],"version-history":[{"count":1,"href":"https:\/\/blogs.gentoo.org\/gsoc\/wp-json\/wp\/v2\/posts\/556\/revisions"}],"predecessor-version":[{"id":557,"href":"https:\/\/blogs.gentoo.org\/gsoc\/wp-json\/wp\/v2\/posts\/556\/revisions\/557"}],"wp:attachment":[{"href":"https:\/\/blogs.gentoo.org\/gsoc\/wp-json\/wp\/v2\/media?parent=556"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.gentoo.org\/gsoc\/wp-json\/wp\/v2\/categories?post=556"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.gentoo.org\/gsoc\/wp-json\/wp\/v2\/tags?post=556"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}