App Report 1 - ISIS-3510-Mobiles/Flutter GitHub Wiki
1. Chosen APP
ReVanced is an application designed to enhance the YouTube experience by providing additional features and customizations not available in the official YouTube app. Here’s a thorough description of ReVanced: Core Functionalities
- Ad Blocking: One of the primary features of ReVanced is its ability to block ads, both pre-roll and mid-roll, which can enhance the viewing experience by eliminating interruptions.
- Background Playback: The app allows videos to continue playing in the background while users use other apps or when the screen is turned off. This is particularly useful for listening to music or podcasts.
- Picture-in-Picture (PiP) Mode: Users can watch videos in a small, resizable window while navigating other applications on their device.
- Customization Options: ReVanced offers a variety of customization options for the user interface and playback settings, such as themes, video quality controls, and gesture-based controls.
- Enhanced Privacy Controls: The app may include features to improve privacy, such as disabling tracking and analytics.
Revenue Model
ReVanced itself is not a monetized app; instead, it’s often distributed as a free and open-source tool. However, its development and maintenance might be supported through donations or crowdfunding. Since it’s not an official app, it doesn't generate revenue through traditional means such as ads or in-app purchases. The model relies on community support and voluntary contributions.
Downloads and Popularity
ReVanced is not available through traditional app stores like Google Play or the Apple App Store, which can make it harder to gauge exact download numbers. Its distribution typically occurs through third-party sources and forums, and its popularity can vary based on its visibility and user recommendations. Estimates or exact numbers are hard to come by, but it generally attracts a significant user base interested in enhanced features for YouTube.
But just basing off repository follows it has over 19k users and active participants.
Interesting Aspects
- Community-Driven Development: ReVanced is developed by a community of contributors, which means its features and updates are often driven by user feedback and needs.
- Open-Source Nature: Being open-source allows users to review and modify the code, fostering transparency and trust.
- Customization Flexibility: The range of customization options makes it appealing to users who want a more tailored YouTube experience.
- Enhanced Functionality: It addresses common complaints about the official YouTube app, such as intrusive ads and lack of background playback.
- Advanced Patch Management: ReVanced offers a robust patch management system, enabling users to apply only the specific features they desire.
- Privacy Enhancement: ReVanced provides additional privacy features within the ability to block trackers and ads that collect user data.
Overall, ReVanced offers a more personalized and ad-free YouTube experience through a combination of enhanced features and community-driven development.
2. Repo Description
The app itself is split into multiple repositories (CLI, Patcher, Patches, Integrations, Manager, Website and API), for this report we will focus mostly on the Manager, as it is written in Flutter/Dart. Programming Languages
- Dart (93.8%): The majority of the code is written in Dart, reflecting the use of Flutter for building the cross-platform user interface. Dart is well-suited for developing mobile applications, providing a smooth and responsive user experience.
- Kotlin (6.0%): A smaller portion of the code is written in Kotlin, which is primarily used for integrating with Android-specific APIs and functionalities. Kotlin’s use indicates that some parts of the app may require native Android capabilities.
- Ruby (0.2%): A minimal amount of Ruby is present, likely for scripting or automation purposes within the development process.
At the time of writing it has 15 branches that can be seen in the following picture
Each branch is reflecting different stages of development and focus. The main branch, the default and stable version, was last updated two weeks ago, while the dev branch is actively maintained with updates occurring every 13 hours. Other branches like feat/translations and fix/translation-rejuv are updated regularly, showcasing ongoing enhancements and fixes. Meanwhile, branches such as compose-dev and feat/installer-dialog are updated less frequently but indicate significant updates and feature additions. Some branches, like ci/crowdin, show longer periods of inactivity but still have a substantial number of commits.
We also can see that different branches serve distinct functional purposes, contributing to various aspects of the app's development and maintenance. The main branch acts as the stable, production-ready version of the app, while the dev branch focuses on integrating new features and improvements before they are merged into the main branch. For instance, branches like feat/translations and fix/translation-rejuv are dedicated to specific functionalities such as enhancing translation support and refining translation-related features.
In addition, branches like compose-dev and feat/installer-dialog are centered around significant updates and feature additions. The compose-dev branch, for example, involve extensive changes related to the app’s UI/UX components. Meanwhile, feat/installer-dialog appears to be working on refining the installation process by enhancing dialog features. Other branches, such as docs/readme and ci/next-build, address documentation updates and continuous integration (CI) processes, respectively. These branches ensure that the app’s documentation remains current and that the CI pipeline supports ongoing development.
Commits
The repository has a substantial number of commits, indicating an active development cycle with continuous improvements and feature additions. Each commit reflects a change in the codebase, from bug fixes to new features, showcasing the repository's evolution.
Activity
With 17.2k stars showing strong approval and 719 forks indicating extensive use and modification by developers, it seems like the app is very influential. The 198 watchers reflect a solid base of users keeping up with updates.
LOC
The codebase consists of 11,734 lines, with a significant majority written in Dart (85.7%), indicating that the app is mainly developed using Flutter. Other notable components include LICENSE files (4.7%) and Gradle files (1.9%), which handle legal documentation and Android build configurations, respectively. Finally, smaller portions of the codebase are dedicated to various configuration and automation files, such as okt, releaserc, and Fastfile.
3. BQ
Type 2
1. Question: "Are there any new updates or features available for the ReVanced app that the user has not yet installed?"
Possible Data Source: The app’s internal update system or server that tracks the latest available versions and features.
Display on Mobile App: A notification or banner in the app’s settings or home screen that informs users about new updates or features, with an option to install or learn more.
2. Question: "What are the user's most frequent video quality settings, and can they optimize their viewing experience based on these preferences?"
Possible Data Source: The app’s usage data, which tracks video quality settings selected by the user.
Display on Mobile App: A settings or preferences screen where users can view and adjust their most frequently used video quality settings, possibly with recommendations for optimal settings based on their usage patterns.
Type 4 or *
1. Question: "Are there any correlations between the types of content users download using ReVanced and their likelihood to engage with premium features?"
Possible Data Source: Internal usage telemetry on downloaded content, premium feature activation logs, and engagement metrics.
How it benefits the Business/App: By identifying correlations between downloaded content and premium feature engagement, the business can tailor marketing strategies to promote premium features more effectively. This can lead to increased revenue from premium feature sales and better user retention by providing relevant content and features that align with user preferences.