App report - ISIS3510-202510-T14/Documentation GitHub Wiki

Table of Contents

1. App Description

For this analysis, we have selected FluffyChat, an open-source and decentralized instant messaging application that uses the Matrix protocol. Its main focus is to offer a secure, private, and easy-to-use alternative to apps like WhatsApp and Telegram without relying on centralized servers.


1.1. Core Features:

  • Instant messaging: Allows users to send text messages, images, videos, and files.
  • End-to-end encryption: Ensures that only the sender and recipient can read the messages, enhancing privacy.
  • No phone number required: Unlike WhatsApp and Telegram, users can sign up with a username without sharing their phone number.
  • Group chats and public rooms: Supports private group conversations and open channels accessible to any user.
  • Interoperability with other Matrix clients: FluffyChat enables communication with other apps using the Matrix protocol, such as Element.
  • User-friendly and customizable design: The app offers a colorful and modern interface with theme customization options.

1.2. Revenue Model:

FluffyChat is an open-source project and does not rely on advertising or subscription-based revenue. Instead, it is funded through:

  • Community donations via platforms like Liberapay or GitHub Sponsors.
  • Support from developers and contributors who work on the project voluntarily.

1.3. Downloads and Popularity:

FluffyChat is available on multiple platforms, including Android, iOS, and desktop systems (Linux, Windows, macOS). According to the Google Play Store, the app has over 100,000 downloads, and it is one of the most popular messaging apps on the F-Droid store.

1.4. Interesting Aspects:

  • Privacy-first approach: By avoiding centralized servers and data collection, FluffyChat is a trustworthy alternative for users concerned about security.
  • Ease of use: Unlike other Matrix-based apps, FluffyChat provides a more user-friendly experience for newcomers.
  • Attractive design: It offers a visually modern and appealing experience compared to other options in the Matrix ecosystem.

2. FluffyChat GitHub Repository Analysis

The FluffyChat repository is a public open-source project hosted on GitHub under the AGPL-3.0 license. It is an actively maintained application designed as a decentralized instant messaging client based on the Matrix protocol. Below is a detailed breakdown of its structure and key components.


2.1. Repository Overview and General Stats

  • Stars: 1.3k (shows community interest and engagement).
  • Forks: 259 (indicating multiple contributions and independent adaptations).
  • Watchers: 18 (users actively following repository changes).
  • Branches: 88 (suggesting active development, bug fixes, and feature testing).
  • Tags: 83 (indicating multiple releases and stable versions).
  • Public repository: Allows community contributions and transparency.

2.2. Repository Structure and Important Components

The repository is well-organized, with multiple directories and files serving specific purposes.

Main Directories

  • .github/ → Contains CI/CD workflows, issue templates, and other GitHub-related automation tools.
  • android/ → Includes platform-specific code and configurations for Android builds.
  • ios/ → Contains iOS-specific configurations, including Xcode project files.
  • appimage/ → Suggests support for AppImage packaging (Linux distributions).
  • fdroid/ → Uncludes metadata and configurations for distributing FluffyChat on F-Droid (an open-source android app store).
  • assets/ → Stores images, icons, and other static resources used in the application.
  • fonts/ → Contains custom fonts used in the UI.
  • docs/ → Includes assets used in Documentation.
  • integration_test/ → Includes test scripts for automated integration testing.

Main Files

  • README.md → Provides an overview of the project, installation guides, and contribution instructions.
  • LICENSE → States that the project follows the AGPL-3.0 open-source license.
  • .gitignore → Defines files and directories that should be ignored by Git.

2.3. Development and Contribution Activity

2.3.1 Commits and Code Contributions

The repository shows active maintenance, with recent commits made just 3 days ago.

  • Frequent updates to Android and iOS build configurations indicate continuous improvements for platform compatibility.
  • Recent commits mention fixes for iOS debugging and AppImage builds, showing efforts to maintain a stable cross-platform experience.
  • A mix of bug fixes, feature additions, and documentation updates suggests an active and engaged developer community.

2.3.2 Branches and Development Workflow

2.3.2.1 General Branching Strategy

The FluffyChat repository follows a structured branching model, utilizing different types of branches for specific development needs. The repository currently has multiple active branches, suggesting ongoing work on features, bug fixes, and experiments.

  • main branch (default branch)

    • This is the primary production branch, containing stable and tested code.
    • It was last updated 17 hours ago (02/11/2025), indicating frequent updates.
    • All new features and fixes are merged here after passing quality checks.
  • gh-pages branch

    • Used for hosting documentation or a web-based project page.
    • It was also updated 17 hours ago (02/11/2025), meaning it is actively maintained.
  • Feature branches

    • Several branches begin with krille/, indicating they are likely created by a lead contributor.
    • Examples include:
      • krille/polls → Possibly adding a polling feature.
      • krille/room-theme-feature → Could be related to theme customization for chat rooms.
      • krille/firebase-messaging → Likely for integrating Firebase push notifications.
      • krille/new-notification-actions → Suggests improvements in notification handling.
    • These branches are intended for new functionalities and are merged into main once complete.
  • Bugfix branches

    • Some branches seem to address specific issues or improvements:
      • krille/update-lints → Likely fixing code style and linting issues.
      • krille/update-linter-and-deps → Suggests updating dependencies and linters for better code quality.
      • krille/convert-ogg-to-aac-on-ios → Possibly fixing an audio format compatibility issue on iOS.
    • These branches are used for maintaining stability and resolving reported issues.
  • Experimental and Migration branches

    • krille/migrate-to-new-keyboard-shortcuts-package → Suggests a UI/UX improvement for keyboard shortcuts.
    • krille/migrate-to-scrollable-list → Likely refactoring the UI to improve performance and scrolling experience.

2.3.2.2 Branch Activity and Status

From the branch list, we can observe:

  • The main branch (main) is actively updated and synchronized.
  • Several feature branches have pull requests (PRs) open, meaning they are being reviewed before merging.
  • Some branches have failed checks, indicating build or test failures.
  • Others have successful checks, meaning they have passed all automated tests and are ready for merging.
  • The number of commits ahead/behind main varies:
    • Some branches are far behind (gh-pages is 7549 commits behind).
    • Others are only a few commits behind, meaning they are still being actively worked on.

2.3.2.3 Summary and Observations

  • The FluffyChat team follows a disciplined branching strategy, ensuring that new features and fixes go through review processes before merging.
  • Most branches are well-maintained, with some updated as recently as last week.
  • PRs are actively managed, and automated checks are run to ensure stability.
  • The repository is structured for long-term maintainability, with separate branches for bug fixes, features, and refactors.

2.4. Programming Languages Used

Based on the repository stats, FluffyChat is primarily built with:

  • Dart (91.0%) → The main language, as the app is developed using Flutter, a cross-platform framework.
  • C++ (2.8%) → Likely used for performance optimization and native integrations.
  • CMake (2.4%) → Build system for managing compilation processes.
  • Shell (1.4%) → Used for automation scripts and deployment processes.
  • C (1.0%) → Possibly for low-level operations or library dependencies.
  • Ruby (0.6%) → Likely for CI/CD scripting or automation tools.

This mix of languages ensures that FluffyChat is optimized for performance across different platforms while maintaining a clean and modular codebase.


2.5. Codebase and Lines of Code

To get an exact count of commits and lines of code, we would need to run Git commands or use tools like cloc. However, based on the size and structure of the repository, we can infer:

  • The app has thousands of lines of Dart code, given that Flutter is the primary framework.
  • The presence of C, C++, and Shell scripts suggests additional performance-related components.
  • Given the high number of branches (88) and commit frequency , it's clear that the project undergoes continuous development.

2.6. Analysis of FluffyChat Issues

The FluffyChat GitHub repository currently has a total of 1,185 issues, with 453 open and 732 closed. This indicates that the development team is actively working on resolving issues, but also that new problems and feature requests continue to arise. The issues are categorized using labels such as "bug", "enhancement", and "feature request", which help organize the workflow and development priorities.

2.6.1 General Observations

  1. A significant number of bug reports

    • Many of the open issues are labeled as "bug", suggesting that FluffyChat is actively dealing with stability and performance problems.
    • Some notable bugs include:
      • "Fluffychat’s Flatpak package doesn’t work on Linux desktops" (#1606), which highlights compatibility issues with a key Linux distribution method.
      • "FluffyChat becomes unusable/memory leak with a lot of rooms such as bridges" (#1603), indicating possible scalability and performance concerns.
      • "Message content/previews are not displayed in the notification" (#1598), a critical issue affecting user experience.
  2. Active feature enhancement requests

    • Several open issues are tagged as "enhancement", indicating that the community is actively requesting improvements rather than just bug fixes.
    • Examples include:
      • "Web support for the sticker picker" (#1604), suggesting demand for a more interactive chat experience.
      • "Starts video before full downloading" (#1599), showing interest in improved media playback.
      • "Feature Request: Multi-Selection for Chats" (#1597), which could enhance chat management.
  3. Diversity of reported issues

    • The issues range from UI/UX problems (such as missing image subtext) to platform-specific bugs (e.g., problems with Flatpak on Linux or audio messages on Bluetooth earbuds in Android).
    • This suggests that FluffyChat, as a cross-platform application, faces different challenges depending on the operating system and distribution method.
  4. Community engagement

    • Several issues have comments and discussions, which indicate that both users and developers are actively participating in resolving problems.
    • Some bug reports also have multiple confirmations from different users, suggesting that certain issues affect a wide range of users.

** 2.6.2 Key Takeaways from the Issues Analysis**

  • FluffyChat is actively maintained, with many issues being addressed and categorized properly.
  • There is a balance between bug fixes and feature improvements, showing that the project is focused on both stability and user experience.
  • Platform-specific issues are common, meaning that maintaining compatibility across Linux, Android, iOS, and other platforms remains a challenge.
  • The community is engaged in reporting issues and requesting features, demonstrating that FluffyChat has an active and interested user base.

Analyzing the open issues provides valuable insight into the technical challenges, user priorities, and development focus areas for FluffyChat. This information is useful not only for developers working on the project but also for users who want to understand the state and future direction*of the application.


2.7. Summary and Final Thoughts

The FluffyChat repository is a well-maintained open-source project with an active community, modular code organization, and a structured development workflow.

Key Strengths:

  • Active development with frequent updates and fixes.
  • Good branch management (88 branches suggest multiple feature developments).
  • Cross-platform support (Flutter-based with native optimizations).
  • Strong community involvement (259 forks & 1.3k stars).
  • Decentralized approach using the Matrix protocol.

3. Business Questions Analysis for FluffyChat

3.1. Business Question Type 2

BQ 2.1: Which messaging features (e.g., text messaging, image/video sharing, file attachments) do users engage with most during their daily interactions?

  • a. Possible Data Source:

    • Internal analytics logs that record in-app events (button taps, message sends, media uploads, etc.) can be used to track the frequency of each feature’s use.
  • b. How It Is Displayed on the Mobile App:

    • The app could include an in-app “Activity Dashboard” or “Usage Statistics” screen where users see a summary of their interactions. For example, a chart or list might indicate that text messaging accounts for 60% of interactions, image/video sharing 30%, and file attachments 10%.
    • This visualization not only helps users understand their behavior but also provides feedback that may encourage exploration of less-used features.

BQ 2.2: What is the impact of customizable UI themes on user session duration and overall satisfaction?

  • a. Possible Data Source:

    • Internal logs tracking when users access the theme customization section and the duration of their sessions after a theme change.
    • In-app surveys or user feedback forms that collect qualitative ratings regarding satisfaction with the UI themes.
  • b. How It Is Displayed on the Mobile App:

    • Theme customization options are prominently available in the settings menu.
    • The app might showcase popular themes (e.g., “Most Used” or “User Favorite”) with preview images.
    • Additionally, after selecting a theme, users might receive subtle feedback (like a congratulatory message or a short tip) that acknowledges their choice, enhancing their overall experience.

3.2. Business Question Type 4

BQ 4.1: Which sections of the app exhibit the highest user dwell times, and how can this information be leveraged to form strategic partnerships or sponsorship opportunities?

  • a. Possible Data Source:

    • Detailed internal analytics that capture user engagement metrics—specifically the time users spend on different sections of the app (such as private chats, group chats, and public rooms).
    • Heatmaps or session recordings that provide insights into user navigation patterns within the app.
  • c. How It Benefits the Business/App:

    • By identifying high-engagement zones within the app, FluffyChat can pinpoint areas that hold users’ attention the longest.
    • This information is valuable when approaching potential sponsors or strategic partners who are interested in reaching an engaged audience. For example, a partner might sponsor a feature or display a branded, yet non-intrusive, element in a section where users spend significant time.
    • Such partnerships can generate revenue or support community initiatives without compromising the privacy-first philosophy of FluffyChat.