Giter Site home page Giter Site logo

defrag-api's Introduction

Goal

The goal of this project is to combat the fragmentation between teams, groups and services in openSUSE.

It seems to us that openSUSE has many niche places that don't talk to each other that much, let alone report their activities to hubs accessible to outsiders or potentially interested contributors.

Also, events and activities are not always visible and more often than not, people would find out about a community event or an outage when it's too late.

We suspect that this kind of fragmentation and opacity makes it more difficult than necessary for new users to onboard the openSUSE Project and for users to enjoy it as much as it deserves.

Our hope is that in so doing we will also help strengthen the bounds between people, teams and communities.

Features

    • => not implemented
  • [...] => work in progress
    • => implemented

Middlewares

Cross-platform (Matrix, Telegram) moderation (depends on: https://github.com/openSUSE/defrag-api/projects/2#card-64817715)

    • implement CAPTCHA (e.g. with emojis)
    • (partially implemented in openGM) implement moderation tools (globally)
    • implement roles & badges for users (globally)

Broadcast (push-based)

    • send service alerts
    • send community announcements
    • probe and list external services for status (unknown issue | undergoing maintenance | ups and downs | all good

On-demand (poll-based)

    • probe and list external services for status (unknown issue | undergoing maintenance | ups and downs | all good
  • list recent news / events / contribution opportunities:
    • Reddit
    • Twitter
    • search forum posts
    • search wiki
    • search bugs on bugzilla
    • search openSUSE documentation
    • search Factory + Pre-Factory packages with zypper + opi
    • search for Progress / Pagure
    • search for activities/events

How to deploy?

Please see deploying.md for information on how to deploy the project.

How to contribute?

  1. Set up your environment.
  2. Think about what you want to change or what feature you want to add. Optionnally, talk to us about it at https://t.me/openSUSE_defrag. Ask as many questions as you need.
  3. Fork & clone the repository.
  4. Open an Issue where where you:
    • describe the goal of the change / new feature
    • provide an example of a typical use-case
    • request specific changes to the current code to support your feature, if you think that your feature justify making these changes and if you need such changes

Even though this is not required, in my experience working in peers (2 people working together on different parts of the same thing) works well. This can spare you a lot of time if the other person is more familiar with the code base. The better your Issue, the more likely someone will be willing to work with you.

Important to keep in mind:

  1. We are building an async server-side application/service. Make sure you don't write any code performing I/O bound computation that is not async. We provide the typical loop.run_in_executor(None, ...) trick to support sync libraries.
  2. If your Pull Request introduces a new function, it must feature a new unittest using pytest for it, unless your function is consumed by another function which is introduced in the same Pull Request and which does have a corresponding unittest. (Later we will need to have 1 unittest for each function though.)
  3. Try to squash your commits on your Pull Requests to avoid noise.

Set up your environment

  • a virtual environment, such as pipenv, virtualenv, venv, etc. See this page for ideas.
  • a Python 3.8 interpreter run from the CPython runtime (the default one)
  • a static type checker such as pyright (We are using it through Pylance and coc-pyright).
  • configure the project as described in configuration.md

Helpers to get started with GitHub

Design of this application

Architecture

Architecture

Handling logic

Handling logic

defrag-api's People

Contributors

dependabot[bot] avatar karatekhd avatar onuralpszr avatar why-not-try-calmer avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.