Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

OEP-64 Mobile Application Codebase Modernization #496

Merged
merged 1 commit into from
Aug 23, 2023

Conversation

marcotuts
Copy link
Contributor

Opening this OEP draft for community review and input.

Abstract
As part of the discovery effort done for a funded contribution (FC-0011) we are recommending that the Open edX platform adopt newly built iOS and Android applications as the new default mobile applications for the platform moving forward, starting with the next named release. These new applications are rebuilt with MVVM architectural patterns and are fully rebuilt in Swift and Kotlin respectively. These new code bases should facilitate faster development cycles, improved pluggability and community contribution rates. Currently not all functionality is 100% identical to the existing mobile applications, but efforts are underway to improve pluggability and close common community requirements for the mobile experience.

The new mobile repositories are maintained by Raccoon Gang and can be accessed here:

The existing mobile repositories are maintained by edX / 2U and can be accessed here:

FYi @colinbrash, @e0d

@openedx-webhooks openedx-webhooks added the open-source-contribution PR author is not from Axim or 2U label Jun 12, 2023
@openedx-webhooks
Copy link

openedx-webhooks commented Jun 12, 2023

Thanks for the pull request, @marcotuts! Please note that it may take us up to several weeks or months to complete a review and merge your PR.

Feel free to add as much of the following information to the ticket as you can:

  • supporting documentation
  • Open edX discussion forum threads
  • timeline information ("this must be merged by XX date", and why that is)
  • partner information ("this is a course on edx.org")
  • any other information that can help Product understand the context for the PR

All technical communication about the code itself will be done via the GitHub pull request interface. As a reminder, our process documentation is here.

Please let us know once your PR is ready for our review and all tests are green.

@sarina
Copy link
Contributor

sarina commented Jun 13, 2023

@marcotuts Redwood!

@marcotuts marcotuts changed the title OEP-XXXX Mobile Application Codebase Modernization OEP-64 Mobile Application Codebase Modernization Jun 13, 2023
@marcotuts marcotuts force-pushed the marco/mobile-oep branch 2 times, most recently from 4dcee44 to 5136040 Compare June 13, 2023 17:02
@itsjeyd itsjeyd added the waiting on author PR author needs to resolve review requests, answer questions, fix tests, etc. label Jun 15, 2023
@marcotuts marcotuts changed the title OEP-64 Mobile Application Codebase Modernization OEP-64 Mobile Application Codebase Modernization Jun 19, 2023
@marcotuts marcotuts changed the title OEP-64 Mobile Application Codebase Modernization OEP-64 Mobile Applications Codebase Modernization Jun 19, 2023
@marcotuts marcotuts changed the title OEP-64 Mobile Applications Codebase Modernization OEP-64 Mobile Application Codebase Modernization Jun 19, 2023
@itsjeyd itsjeyd added the needs test run Author's first PR to this repository, awaiting test authorization from Axim label Jun 20, 2023
@e0d
Copy link
Contributor

e0d commented Jun 26, 2023

I notice there are some commit-lint failures. Please note that we use conventional commits across Open edX projects. You can read about the details here. Can you please amend your commit messages to follow our standard?

@e0d e0d removed the needs test run Author's first PR to this repository, awaiting test authorization from Axim label Jun 26, 2023

Backward Compatibility
**********************
The existing mobile applications will continue to be supported by edX / 2U for the foreseeable future. We do not yet have a clear timeline for when edX / 2U might switch over to the new applications, but their focus is on rollout and delivery of their latest improvements to the existing experience including the commerce capabilities that have been added recently.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can someone from 2U confirm and/or clarify this? Also, support in this context is not well defined as far as I know. Is there any working definition?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is the aim in including this section?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We dont actually know who else in the community is using the existing apps, this note was meant to convey continued support for these applications until edx / 2U decides to move to the new applications

I can strike if this concern doesn't feel core to what the OEP should be covering though!

Copy link
Contributor

@sarina sarina Jul 21, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think I understand the point, but as-written it feels too "point in time" - OEPs should be lasting documents. At minimum I would strike the point about commerce capabilities because I doubt edX/2U is planning to support that for the community.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

makes sense! updating. thanks for feedback on this.

sarina
sarina previously requested changes Jul 13, 2023
Copy link
Contributor

@sarina sarina left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The title of this file should be oep-0064-arch-mobile... - see convention here: https://github.com/openedx/open-edx-proposals/tree/master/oeps/architectural-decisions


Backward Compatibility
**********************
The existing mobile applications will continue to be supported by edX / 2U for the foreseeable future. We do not yet have a clear timeline for when edX / 2U might switch over to the new applications, but their focus is on rollout and delivery of their latest improvements to the existing experience including the commerce capabilities that have been added recently.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is the aim in including this section?

Copy link
Member

@felipemontoya felipemontoya left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There are some form issues that need to be fixed but I'm very supportive of the goal of this OEP. I'll leave an approve now since I could not catch any other inline corrections other than those already mentioned.

@marcotuts marcotuts force-pushed the marco/mobile-oep branch 2 times, most recently from ccd1e85 to a6cce4a Compare July 21, 2023 15:14
@marcotuts marcotuts requested review from sarina and e0d July 21, 2023 15:14

Expanded access and opportunities for learners around the globe means meeting learners where they are, and for many people that means on their only digital device, their phone. Furthermore, enabling learners to continue to learn on their desktop or laptop computers in addition to a full featured mobile experience allows us to support full day learning workflows for those with multiple devices.

Similar to the way the edx-platform has undergone a modernization process over the past few years with updated build processes, micro services, micro frontends, design system tools and more, the mobile experiences will benefit from a modern architecture, being written in the latest development language tools, and set up for increased pluggability and contribution as well.
Copy link
Member

@adamstankiewicz adamstankiewicz Jul 24, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[inform/question] Related to the mention of design system tools, just wanted to cross-link to this Paragon issue about mobile app branding as it relates to Paragon design tokens.

That is, there may be an opportunity to treat the Paragon design system as the "source of truth" for style properties like colors, typography, etc. across both web and mobile native platforms, as is the longer term vision for the Paragon design system.

The Paragon Working Group is currently working towards migrating the Open edX web-based experiences (MFEs) to use design tokens and CSS variables. I don't think it'd be a unreasonable lift to get Paragon design tokens transformed into iOS/Android compatible output that can be consumed by mobile apps. That way, when a style property in the design system changes, its update can more readily propagate across cross-platform with less maintenance required.

Do you think it's worth expanding on how design system tools (e.g., design tokens) could play a role here, or is that too "in the weeds" for the purpose of this OEP?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good question I think adding that detail might be in the weeds for the scope of the OEP but the issue in paragon that Ed created is a space we can continue the conversation toward the goal you described of a single source of truth for that kind of design meta.

Others can chime in if they feel like additional detail should be added. Thanks for reviewing!

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Makes sense, sounds good!

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@adamstankiewicz @marcotuts @volodymyr.chekyrta Non-blocking, but even as someone who is mostly out of the loop on MFEs and the mobile apps, I have the impression that Open edX's move towards Paragon design tokens is pivotal in terms of re-establishing a consistent branding interface for the project. Confusion around theming & branding is consistently identified as one of operators' major pain points ever since we started phasing out comprehensive theming.

What do you folks think of a high-level statement in the OEP stating the design tokens (or something like it) will be supported? For example:

In support of a consistent platform-wide branding interface, the experiences will implement branding via Paragon design tokens once tooling for the tokens reaches maturity.

or, to be more general:

The experiences will strive to support a branding interface consistent with other Open edX frontend applications based on recommendations from the Frontend and Paragon Working Groups.

Copy link
Member

@adamstankiewicz adamstankiewicz Jul 24, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Confusion around theming & branding is consistently identified as one of operators' major pain points ever since we started phasing out comprehensive theming.

@kdmccormick Definitely. I think aligning on how we communicate about Paragon could help begin to mitigate this confusion. For example, perhaps rather than saying "theme-ready" and other "theming" related messaging throughout the documentation, we could adopt "brand-ready" and "branding", as an incremental step:

"An accessible, theme-ready brand-ready, and open source design system built for learning applications."

(from docs site)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What do you folks think of a high-level statement in the OEP stating the design tokens (or something like it) will be supported?

@kdmccormick @marcotuts @volodymyr-chekyrta I would be in favor of including an explicit albeit brief, high-level mention of the design system (also, not blocking feedback though 😄). Perhaps a blend of your two suggestions, Kyle. E.g. something along the lines of:

In support of a consistent platform-wide branding interface, the mobile experiences will strive to identify opportunities to consume and extend the Paragon design system, helping to ensure consistent and maintainable UX across channels (i.e., mobile, web).

Copy link
Contributor Author

@marcotuts marcotuts Aug 9, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

adding in next commit / update - thank you for the thoughtful inclusion and deliberation on this point!

Copy link
Member

@kdmccormick kdmccormick left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks great. Very excited for this! 🚀

Just one non-blocking comment on design tokens.


Expanded access and opportunities for learners around the globe means meeting learners where they are, and for many people that means on their only digital device, their phone. Furthermore, enabling learners to continue to learn on their desktop or laptop computers in addition to a full featured mobile experience allows us to support full day learning workflows for those with multiple devices.

Similar to the way the edx-platform has undergone a modernization process over the past few years with updated build processes, micro services, micro frontends, design system tools and more, the mobile experiences will benefit from a modern architecture, being written in the latest development language tools, and set up for increased pluggability and contribution as well.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@adamstankiewicz @marcotuts @volodymyr.chekyrta Non-blocking, but even as someone who is mostly out of the loop on MFEs and the mobile apps, I have the impression that Open edX's move towards Paragon design tokens is pivotal in terms of re-establishing a consistent branding interface for the project. Confusion around theming & branding is consistently identified as one of operators' major pain points ever since we started phasing out comprehensive theming.

What do you folks think of a high-level statement in the OEP stating the design tokens (or something like it) will be supported? For example:

In support of a consistent platform-wide branding interface, the experiences will implement branding via Paragon design tokens once tooling for the tokens reaches maturity.

or, to be more general:

The experiences will strive to support a branding interface consistent with other Open edX frontend applications based on recommendations from the Frontend and Paragon Working Groups.

Rejected Alternatives
*********************

We considered exploring the development costs of incrementally improving the existing mobile applications to fully adopt new architectural patterns as well as the use of Swift and Kotlin. Efforts to use these new technologies go back many years, but it would take considerable effort for the community to support this migration. Realistically the current team at edX / 2U maintaining the repositories would have had to undertake a major development effort to achieve this transformation.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[curious/clarification] What other technologies/architectural patterns were considered beyond Swift and Kotlin?

For example, was React Native explored? While I personally don't have much experience with React Native, I believe one of its primary goals is to enable a "write one, use everywhere" approach where possible, enabling sharing of code across platforms (even between web + mobile). One might hypothesize having shared code across iOS, Android, and web could lead to having the mobile apps be more approachable/maintainable by the community, align closer to other React-based UI development in the Open edX platform (i.e., micro-frontends), etc.

More specifically, I'd be curious whether something like React Native could enable sharing of existing styles/patterns/functionality in the Paragon design system. For example, could common UI patterns across both web and mobile both live under the same Paragon design system, but ship with and get consumed via different implementations (React Native for mobile vs. React for web)? Food for thought; felt appropriate to expand a bit more on the technology choices.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi!

We did not do a deep dive into React Native in advance of this effort, but have received similar questions about this and Flutter ( https://flutter.dev/).

Currently, the belief from the team is that the benefits of native Swift + Kotlin development fit to OS purpose is preferred over the benefits of shared code bases. A number of other companies have posted articles on their adoption of React Native and subsequent decisions to switch back to native development.

As with anything there are likely happy companies and teams on boths sides of this, but we've chosen to stay on the native path for now.

@scottrish
Copy link

@marcotuts As the mobile apps are distributed as binaries via the respective app stores, I don't believe AGPL is the appropriate license to apply. Can we adopt GPL-V3 instead?

@e0d
Copy link
Contributor

e0d commented Aug 18, 2023

@marcotuts As the mobile apps are distributed as binaries via the respective app stores, I don't believe AGPL is the appropriate license to apply. Can we adopt GPL-V3 instead?

Apache2 has been the license under which our mobile applications have been offered historically. It's a project approved license and appropriate for this case. My recommendation is that we re-license these applications to Apache2.

@feanil feanil dismissed sarina’s stale review August 18, 2023 14:17

Changes have been addressed according to e0d but sarina is not able to re-review.

@e0d e0d merged commit 7e8a19a into openedx:master Aug 23, 2023
@openedx-webhooks
Copy link

@marcotuts 🎉 Your pull request was merged! Please take a moment to answer a two question survey so we can improve your experience in the future.

* Once available, we will link to documentation within the new repositories to describe transition options for community members migrating from existing builds of the older codebases.
* After the publication of the Quince release we will move the original repositories or the openedx-unsupported github organization to help make clear that these are no longer the default mobile application builds moving forward. A corresponding DEPR ticket will be linked to this OEP once it exists.

The new mobile repositories are maintained by Raccoon Gang and can be accessed here:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@marcotuts or @e0d, can you review the formatting of this section? I would suggest a fix ,but I'm not sure if this is meant to be one bullet list or multiple.

Here's how it currently renders: https://open-edx-proposals--496.org.readthedocs.build/en/496/architectural-decisions/oep-0064-arch-mobile-application-codebase-modernization.html

image

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for flagging Kyle, I didn't notice this so at some point I must have broken this. I can open a new PR for formatting fixes to this.

@itsjeyd itsjeyd removed the waiting on author PR author needs to resolve review requests, answer questions, fix tests, etc. label Sep 13, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
open-source-contribution PR author is not from Axim or 2U
Projects
Archived in project
Development

Successfully merging this pull request may close these issues.