Skip to main content

Ideas List

Introduction

Welcome to our ideas page! Get familiar with our general philosophy by reading this section. The ideas follow afterwards.

General Considerations

This is not an exhaustive list of ideas, but they are the ones we feel need the most attention over the next 12 months.

We also welcome any other ideas that we could use. Please review the "Desired Features" section of this website for even more ideas and further necessary information.

Internship Participants

Many of you reading this page are interested in participating in our various internship programs (eg. Google Summer of Code, GitHub Externship).

  1. Make sure to read the relevant Introduction and Applying pages first.
    1. GitHub Externship:
      1. Introduction.
      2. Application Guide.
    2. GSoC:
      1. Introduction.
      2. Application Guide.
  2. Review the Selection Criteria to ensure you meet all the requirements for a good proposal.
  3. Use the Application Template as a guide to formatting your application. The tips on this page are very important.

Good luck!

Documentation

We need to reduce the learning curve of contributors and sysadmins alike. Project work needs to be well documented in our code so that tools can eventually automatically add it to our documentation websites.

Testing

All code submitted must be tested. We are working towards getting to 100% test code coverage on all Talawa repositories. This will mean that you will have to write tests for new code you write or modify.

The test percent code coverage requirement will incrementally rise with each pull request. In some cases you may have to write a few extra tests for code you may not have updated. We hope this will be rare.

Repository Languages and Skills

Here is a list of basic skills that will be required for each repository.

  1. Talawa: Flutter / Dart, GraphQL
  2. Talawa-API: Node.js, GraphQL, MongoDB
  3. Talawa-Admin Portal: TypeScript, Node.js

There are others, but these are the primary ones that will guide your contributions.

Impact Definition

We have categorized the various ideas according to the degree of impact they will have to the project. Use these definitions to understand how each idea will affect our overall project goals.

  1. Low-hanging fruit: These projects require minimal familiarity with the codebase and basic technical knowledge. They are relatively short, with clear goals.
  2. Risky/Exploratory: These projects push the scope boundaries of our development efforts. They might require expertise in an area not covered by our current development team. They might take advantage of a new technology. There is a reasonable chance that the project might be less successful, but the potential rewards make it worth the attempt.
  3. Fun/Peripheral: These projects might not be related to the current core development focus, but create new innovations and new perspective for our project.
  4. Core development: These projects derive from the ongoing work from the core of our development team. The list of features and bugs is never-ending, and help is always welcome.
  5. Infrastructure/Automation: These projects are the code that our organization uses to get our development work done; for example, projects that improve the automation of releases, regression tests and automated builds. This is a category in which a contributor can be really helpful, doing work that the development team has been putting off while they focus on core development.

Difficulty

Most of our project ideas require knowledge of two or more programming languages. Meaningful PRs that prove your understanding of the repos will always be beneficial. We have created testing issues specifically for this purpose.

  1. Hard: Requires dominion of the language used by the repo most affected by the project. A good working knowledge of the languages used by other affected repositories will be needed.
  2. Medium: A good working knowledge of the languages used by affected repositories will be needed.
  3. Easy: A beginner's level knowledge of the languages is sufficient.

Primary Idea Areas

Here are the features we'd like to implement in the coming months.

Admin Web Portal: Plugin Architecture

  1. Description: Latent features in the mobile app should be enabled by installing plugins via the Admin web portal. The API would need to detect the existence of a plugin, and automatically query the plugin for authorization to do some action. When authorized, the mobile app will display new capabilities. This project has two parts:
    1. The design and development of the plugin architecture
    2. The creation of a donations plugin to prove the concept
  2. Expected Outcomes:
    1. Architectural Design
      1. Easy to install, enable and remove either online or by the uploading of code
      2. Able to be installed, activated and configured at the global and/or per-organization level served by the API.
      3. Easy to configure in the Talawa-Admin portal.
    2. Plugin - Donations, Member Fees and Paid Events
      1. Organization admins must be able to install and enable the plugin.
      2. Allow organizations to receive payments for different types of customizable services and activities, both one time or recurring.
      3. Consider ways to accept payments for organizations in any part of the world using multiple payment gateways.
      4. Mobile app users must be able to select their preferred payment method in an easy intuitive way.
      5. The mobile app must be plugin aware
  3. Repos to update: Talawa, Talawa-API, Talawa-Admin
  4. Skills Required: Code stacks related to repos above. See introduction section.
  5. Depends on Project: None
  6. Project Size: 350 hours
  7. Possible Mentors: Jason Gayle, Yasharth Dubey, Gareth Thomas
  8. Difficulty: Hard
  9. Impact Definition: Core development, Risky/Exploratory

Admin Web Portal: Plugin - Newsfeed Advertising

  1. Description: Community organizations often rely on the support of local businesses. This plugin would allow companies to advertise on the mobile app news feed. The plugin must consider both unsophisticated advertisers who will only provide an image or video, and those who are experienced users of online platforms.
  2. Expected Outcomes:
    1. Organization admins must be able to install and enable the plugin.
    2. The best types of content and ways to upload and display it (placement) must be considered.
    3. The plugin must provide a comprehensive set of advertising campaign features.
    4. The mobile app must be plugin aware.
    5. Integration with well known mobile advertising platforms should be considered.
  3. Repos to update: Talawa, Talawa-API, Talawa-Admin
  4. Skills Required: Code stacks related to repos above. See introduction section.
  5. Depends on Project: Admin Portal Plugin Architecture
  6. Project Size: 175 hours
  7. Possible Mentors: Jason Gayle, Yasharth Dubey, Gareth Thomas
  8. Difficulty: Hard
  9. Impact Definition: Core development

Admin Web Portal: New Features Support

  1. Description: The Admin portal needs to be redesigned to intuitively accommodate the many new features needed by the other projects. Work on this project will be continuous as new features are required from other project ideas.
    1. The Admin Portal only supports English. Other languages need to be included.
  2. Expected Outcomes:
    1. Redesign
      1. Create a new modern, reactive, intuitive design following our "clean look" design standards that can be found on this site.
      2. New screens need to be created to support the new features of other projects
      3. As with our other repositories:
        1. Consolidate test, image and CSS files in separate dedicated directory trees outside of the code tree.
        2. Create a standardized file and directory naming convention in keeping with that of our other repositories.
    2. Multilingual
      1. Research and implement ways for users to select a preferred language.
      2. The languages supported must match those of the mobile app.
  3. Repos to update: Talawa-Admin
  4. Skills Required: Code stacks related to repos above. See introduction section.
  5. Depends on Project: None
  6. Project Size: 175 hours
  7. Possible Mentors: Jason Gayle, Yasharth Dubey, Gareth Thomas
  8. Difficulty: Medium
  9. Impact Definition: Core development, Low-hanging fruit

Admin Web Portal: Spam Mitigation

  1. Description: Detect whether a a user is spamming organization chat and news feed messages.
  2. Expected Outcomes:
    1. A reliable method to intercept new messages
    2. An accurate subsystem to evaluate the spaminess of messages using both implied and explicit triggers.
    3. Notification of the Talawa-Admin users of potential spam
    4. Creation of ways to ban both infringing and related users.
    5. This should ideally be a plugin so that administrators can eventually select the anti-SPAM engine of their choice.
  3. Repos to update: Talawa-Admin, Talawa-API
  4. Skills Required: Code stacks related to repos above. See introduction section.
  5. Depends on Project: Admin Web Portal: Plugin Architecture
  6. Project Size: 175 hours
  7. Possible Mentors: Jason Gayle, Yasharth Dubey, Gareth Thomas
  8. Difficulty: Medium
  9. Impact Definition: Core development, Low-hanging fruit

API: Content Uploads Support

  1. Description: The API does not have any media management controls that would be useful for the mobile app or Talawa admin portal. This functionality is sorely needed.
  2. Expected Outcomes:
    1. Must support events, posts, ads, and chats.
    2. Unnecessary duplication of objects must be avoided in all cases. Examples include:
      1. Uploads of identical filenames and / or files
      2. Message forwards or replies
    3. If necessary the solution must support multiple cloud providers.
      1. There must be an option for limited local storage for those who cannot use the cloud. (eg. some talawa developers and organizations who cannot use the cloud for various reasons)
      2. At this time support for only one methodology at a time is required.
    4. Content must only be deleted from storage when no one else needs it.
    5. Must have a unique identifier system independent of the backend storage methododology used.
      1. It must support a future where multiple backends could be used. Simple data migration between backends would be a plus.
    6. Cost Considerations
      1. The cost of using third party services must be borne by the end user organization, not The Palisadoes Foundation
  3. Repos to update: Talawa, Talawa-API, Talawa-Admin
  4. Skills Required: Code stacks related to repos above. See introduction section.
  5. Depends on Project: None
  6. Project Size: 175 hours
  7. Possible Mentors: Dominic Mills, Xavier Bryson, Shannika Jackson
  8. Difficulty: Medium
  9. Impact Definition: Core development, Risky/Exploratory

API: Improved Backend Performance and Security

  1. Description: The backend has some known deficiencies that need to be addressed.
    1. The GraphQL interface used by the API and mobile app is prone to over-fetching data. This is also known as the N+1 problem. It also does not store data re-use in an optimal way.
    2. The API allows anyone to do updates. There is security by obfuscation where capabilities are not presented to the user, but are still available. This allows for malicious actors to adversely affect organizations.
    3. Data is insufficiently encrypted
    4. There needs to be a way for Talawa mobile apps to have interoperability with older versions of the API. It is very possible that users will download the latest version of Talawa to work with a much older version of the API. The opposite could also be true after an upgrade of the API, with older versions of the mobile apps needing to communicate with a newer version of the API.
  2. Expected Outcomes:
    1. GraphQL
      1. Research and implement ways to batch queries for optimization.
      2. Evaluate and code ways to selectively cache data for reuse depending on the use case.
      3. Update the mobile app to take advantage of these new features.
    2. Access Security
      1. Implement roles tied to access and refresh token keys
    3. Encryption
      1. Implement ways to encrypt all information exchanged between the API, the mobile app and the Talawa Admin portal.
      2. Implement ways to encrypt PII data stored on disk.
    4. Versioning
      1. An API upgrade must not affect users of the Talawa mobile app which may be older.
      2. Differing ways of achieving this must be considered and evaluated for practicality.
  3. Repos to update: Talawa, Talawa-API, Talawa-Admin
  4. Skills Required: Code stacks related to repos above. See introduction section.
  5. Depends on Project: None
  6. Project Size: 175 hours
  7. Possible Mentors: Dominic Mills, Xavier Bryson, Shannika Jackson
  8. Difficulty: Medium
  9. Impact Definition: Core development, Risky/Exploratory

API: Simplify the Codebase

  1. Description: Our backend code needs better structure. The approach has introduced these challenges:
    1. Code complexity creates instability. It also makes trouble shooting, testing and scalability difficult.
    2. The exclusive use of functions means the code is reused inefficiently.
  2. Expected Outcomes:
    1. Research and suggest a preferred way of fixing these challenges. Suggesting paradigms to restructure the code under.This should be discussed with a mentor first to create a code style consistent with our standards.
    2. The solution must:
      1. Limit the need for contributors to learn new technologies. In other words it must be easy to contribute to more than one of our repos based on existing knowledge.
      2. Implement a strategy that requires no changes to the Talawa mobile app and Talawa-Admin.
      3. Achieve full test code coverage for maximum reliability
  3. Repos to update: Talawa-API
  4. Skills Required: Code stacks related to repos above. See introduction section.
  5. Depends on Project: None
  6. Project Size: 350 hours
  7. Possible Mentors: Dominic Mills, Xavier Bryson, Shannika Jackson
  8. Difficulty: Hard
  9. Impact Definition: Core development, Risky/Exploratory

API: Multi-Tennancy

  1. Description: Create a way to separate different API instances using a data segregation strategy to best optimise resources. It is likely that we will want to host Talawa as a service. Designing a solution to this problem is therefore required.
  2. Expected Outcomes:
    1. Research and suggest a preferred way of implementing this strategy.
    2. Implement the strategy so that it is transparent to the mobile app.
    3. Code ways to configure this solution simply via the Admin portal.
  3. Repos to update: Talawa-API, Talawa-Admin
  4. Skills Required: Code stacks related to repos above. See introduction section.
  5. Depends on Project: None
  6. Project Size: 350 hours
  7. Possible Mentors: Dominic Mills, Xavier Bryson, Shannika Jackson
  8. Difficulty: Hard
  9. Impact Definition: Core development, Risky/Exploratory

Mobile App: Event and Venue Management

  1. Description: Community organizations host events and venues that must be managed. Talawa offers a way to help coordinate these services better.
  2. Expected Outcomes:
    1. Create ways for volunteers and/or attendees have checked-in for events for better coordination.
    2. Implement ways to limit the number of event attendees.
    3. Allow venues to be reserved from being used for other events.
    4. Create ways for attendees to register for events with or without an invitation.
    5. Activate various combinations of ways to notify users of this feature.
  3. Repos to update: Talawa, Talawa-API, Talawa-Admin
  4. Skills Required: Code stacks related to repos above. See introduction section.
  5. Depends on Project: None
  6. Project Size: 175 hours
  7. Possible Mentors: Brandon Chung, Delton Phillips, Sagar Utekar, Troy Anderson
  8. Difficulty: Medium
  9. Impact Definition: Core development, Low-hanging fruit

Mobile App: Enhanced Chat

  1. Description: The encrypted chat feature being developed only allows persons to add their comments to the end of a thread. There are many ways in which this could be made more useful.
  2. Expected Outcomes:
    1. User Features
      1. Create ways for users to reply to any historical comment.
      2. Implement ways for users to manage content in chats.
      3. Allow administrators to respond in various ways to complaints about chats.
      4. Activate various combinations of ways to notify chat users.
      5. Implement encrypted group chat.
    2. Scalability features
      1. The Talawa mobile app currently uses graphql subscription for its chat feature. We need a highly scalable solution.
      2. Data migration between multiple backend data storage systems must be easy.
    3. Cost Considerations
      1. The cost of using third party services must be borne by the end user organization, not The Palisadoes Foundation
  3. Repos to update: Talawa, Talawa-API, Talawa-Admin
  4. Skills Required: Code stacks related to repos above. See introduction section.
  5. Depends on Project: API: Content Uploads Support
  6. Project Size: 350 hours
  7. Possible Mentors: Brandon Chung, Delton Phillips, Sagar Utekar, Troy Anderson
  8. Difficulty:
  9. Impact Definition: Core development

Mobile App: Improved Member Management

  1. Description: We need to generally improve the way the apps interact with the general membership through the use of the Talawa-Admin portal. For example:
    1. Community organizations will not want to have open membership. At the moment anyone knowing the Talawa-API URL can join an organization. This could create opportunities for malicious actors.
    2. Community organizations need to be able to send notifications to all, or groups of members. This could be required for natural disasters, fundraisers, functions or other significant events.
  2. Expected Outcomes:
    1. New Members
      1. There needs to be a way for pre-approved persons to join an organization with their mobile app.
      2. The solution should ideally not require the use of third party services that require payment.
      3. There must be a way to allow only certain organization members to approve new members.
      4. This feature needs to be managed via the Talawa-Admin portal
    2. Notifications
      1. Implement a notification scheme that is suitable for major forseeable use cases.
  3. Repos to update: Talawa, Talawa-API, Talawa-Admin
  4. Skills Required: Code stacks related to repos above. See introduction section.
  5. Depends on Project: None
  6. Project Size: 175 hours
  7. Possible Mentors: Brandon Chung, Delton Phillips, Sagar Utekar, Troy Anderson
  8. Difficulty: Medium
  9. Impact Definition: Risky/Exploratory

Automated Documentation (Google Season of Docs only)

  1. Description: We need to find ways to automate the creation of our documentation using the content of our code repositories. This needs to be automatically included in our existing documentation website.
  2. Expected Outcomes:
    1. Find and implement a way to automatically create API usage documentation from our GraphQL schema.
    2. Find and implement a way to automatically create user and engineer documentation from our code files in all repos.
    3. Document what developers must do to generate as much of our documentation directly from the code base as possible
    4. Complete in-code documentation for all Talawa repositories. This may require interaction with Google Summer of Code participants.
  3. Repos to update: Talawa-API, Talawa, Talawa-Admin
  4. Skills Required: Code stacks related to repos above. See introduction section.
  5. Depends on Project: None
  6. Project Size: 175 hours
  7. Possible Mentors: Shannika Jackson
  8. Difficulty: Medium
  9. Impact Definition: Infrastructure/Automation, Low-hanging fruit

Automated Documentation

  1. Description: We need to find ways to automate the creation of our documentation using the content of our code repositories. This needs to be automatically included in our existing documentation website.
  2. Expected Outcomes:
    1. Find and implement a way to automatically create API usage documentation from our GraphQL schema.
    2. Find and implement a way to automatically create user and engineer documentation from our code files in all repos.
    3. Document what developers must do to generate as much of our documentation directly from the code base as possible
    4. Complete in-code documentation for all Talawa repositories. This may require interaction with Google Summer of Code participants.
  3. Repos to update: Talawa-API, Talawa, Talawa-Admin
  4. Skills Required: Code stacks related to repos above. See introduction section.
  5. Depends on Project: None
  6. Project Size: 175 hours
  7. Possible Mentors: Shannika Jackson, Dominic Mills, Michael Lue, Tasneem Koushar
  8. Difficulty: Medium
  9. Impact Definition: Infrastructure/Automation, Low-hanging fruit

Secondary Idea Areas

We have other areas that need good ideas. This section highlights some primary areas of focus.

Backend Improvements

Take a look at the Desired Features section for guidance on what we'd like to achieve. Use these to create a unique vision of what you think Talawa could become.

Don't be limited by our desired features. Think of new areas of functionality for the various repos. How could it be better for both the end user and administrators?

Remember, preparing the backend for future features and creating intuitive ways of user interaction with the backend will be important.

Operational Considerations

Many community hosting their own solution won't have the funds to pay for additional services. They will be using slower, older equipment with limited storage. There will be low technical ability too. In many cases the users may not have completed schooling. Ideas on how to resolve these issues will be helpful.