<picture>
  <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/bokeh/pm/main/assets/logos/SVG/bokeh-logo-white-text-no-padding.svg">

</picture>

----

[Bokeh](https://bokeh.org) is an interactive visualization library for modern web browsers. It provides elegant, concise construction of versatile graphics and affords high-performance interactivity across large or streaming datasets. Bokeh can help anyone who wants to create interactive plots, dashboards, and data applications quickly and easily.

  Package

  Project

  Downloads

  Build

  Community

*Consider [making a donation](https://opencollective.com/bokeh) if you enjoy using Bokeh and want to support its development.*

![4x9 image grid of Bokeh plots](https://user-images.githubusercontent.com/1078448/190840954-dc243c99-9295-44de-88e9-fafd0f4f7f8a.jpg)

## Installation

To install Bokeh and its required dependencies using `pip`, enter the following command at a Bash or Windows command prompt:
```
pip install bokeh
```

To install `conda`, enter the following command at a Bash or Windows command prompt:

```
conda install bokeh
```

Refer to the [installation documentation](https://docs.bokeh.org/en/latest/docs/first_steps/installation.html) for more details.

## Resources

Once Bokeh is installed, check out the [first steps guides](https://docs.bokeh.org/en/latest/docs/first_steps.html#first-steps-guides).

Visit the [full documentation site](https://docs.bokeh.org) to view the [User's Guide](https://docs.bokeh.org/en/latest/docs/user_guide.html) or [launch the Bokeh tutorial](https://mybinder.org/v2/gh/bokeh/bokeh-notebooks/HEAD?labpath=index.ipynb) to learn about Bokeh in live Jupyter Notebooks.

Community support is available on the [Project Discourse](https://discourse.bokeh.org).

If you would like to contribute to Bokeh, please review the [Contributor Guide](https://docs.bokeh.org/en/latest/docs/dev_guide.html) and [request an invitation to the Bokeh Dev Slack workspace](https://slack-invite.bokeh.org/).

*Note: Everyone who engages in the Bokeh project's discussion forums, codebases, and issue trackers is expected to follow the [Code of Conduct](https://github.com/bokeh/bokeh/blob/branch-3.0/docs/CODE_OF_CONDUCT.md).*

## Support

### Fiscal Support

The Bokeh project is grateful for [individual contributions](https://opencollective.com/bokeh), as well as for monetary support from the organizations and companies listed below:

If your company uses Bokeh and is able to sponsor the project, please contact info@bokeh.org

*Bokeh is a Sponsored Project of NumFOCUS, a 501(c)(3) nonprofit charity in the United States. NumFOCUS provides Bokeh with fiscal, legal, and administrative support to help ensure the health and sustainability of the project. Visit [numfocus.org](https://numfocus.org) for more information.*

*Donations to Bokeh are managed by NumFOCUS. For donors in the United States, your gift is tax-deductible to the extent provided by law. As with any donation, you should consult with your tax adviser about your particular tax situation.*

### In-kind Support

Non-monetary support can help with development, collaboration, infrastructure, security, and vulnerability management. The Bokeh project is grateful to the following companies for their donation of services:

* [Amazon Web Services](https://aws.amazon.com/)
* [GitGuardian](https://gitguardian.com/)
* [GitHub](https://github.com/)
* [makepath](https://makepath.com/)
* [Pingdom](https://www.pingdom.com/website-monitoring)
* [Slack](https://slack.com)
* [QuestionScout](https://www.questionscout.com/)
* [1Password](https://1password.com/)


# NUR

The Nix User Repository (NUR) is a community-driven meta repository for Nix packages.
It provides access to user repositories that contain package descriptions (Nix
expressions) and allows you to install packages by referencing them via attributes.
In contrast to [Nixpkgs](https://github.com/NixOS/nixpkgs/), packages are built
from source and **are not reviewed by any Nixpkgs member**.

The NUR was created to share new packages from the community in a faster and
more decentralized way.

NUR automatically checks its list of repositories and performs evaluation checks
before it propagates the updates.

## Installation

First include NUR in your `packageOverrides`:

To make NUR accessible for your login user, add the following to `~/.config/nixpkgs/config.nix`:

```nix
{
  packageOverrides = pkgs: {
    nur = import (builtins.fetchTarball "https://github.com/nix-community/NUR/archive/master.tar.gz") {
      inherit pkgs;
    };
  };
}
```

For NixOS add the following to your `/etc/nixos/configuration.nix`
Notice: If you want to use NUR in nix-env, home-manager or in nix-shell you also need NUR in `~/.config/nixpkgs/config.nix`
as shown above!

```nix
{
  nixpkgs.config.packageOverrides = pkgs: {
    nur = import (builtins.fetchTarball "https://github.com/nix-community/NUR/archive/master.tar.gz") {
      inherit pkgs;
    };
  };
}
```

### Pinning

Using `builtins.fetchTarball` without a sha256 will only cache the download for 1 hour by default, so you need internet access almost every time you build something. You can pin the version if you don't want that:

```nix
builtins.fetchTarball {
  # Get the revision by choosing a version from https://github.com/nix-community/NUR/commits/master
  url = "https://github.com/nix-community/NUR/archive/3a6a6f4da737da41e27922ce2cfacf68a109ebce.tar.gz";
  # Get the hash by running `nix-prefetch-url --unpack <url>` on the above url
  sha256 = "04387gzgl8y555b3lkz9aiw9xsldfg4zmzp930m62qw8zbrvrshd";
}
```

## How to use

Then packages can be used or installed from the NUR namespace.

```console
$ nix-shell -p nur.repos.mic92.hello-nur
nix-shell> hello
Hello, NUR!
```

or

```console
$ nix-env -f '<nixpkgs>' -iA nur.repos.mic92.hello-nur
```

or

```console
# configuration.nix
environment.systemPackages = with pkgs; [
  nur.repos.mic92.hello-nur
];
```

Each contributor can register their repository under a name and is responsible
for its content.

***NUR does not check the repository for malicious content on a regular basis
and it is recommended to check the expressions before installing them.***

### Using the flake in NixOS

Using overlays and modules from NUR in your configuration is fairly straight forward.

In your flake.nix add `nur.nixosModules.nur` to your module list:

```nix
{
  inputs.nur.url = github:nix-community/NUR;

  outputs = { self, nixpkgs, nur }: {
    nixosConfigurations.myConfig = nixpkgs.lib.nixosSystem {
      # ...
      modules = [
        nur.nixosModules.nur
        # This adds a nur configuration option.
        # Use `config.nur` for packages like this:
        # ({ config, ... }: {
        #   environment.systemPackages = [ config.nur.repos.mic92.hello-nur ];
        # })
      ];
    };
  };
}
```

You cannot use `config.nur` for importing NixOS modules from NUR as this will lead to infinite recursion errors.

Instead use:

```nix
{
  inputs.nur.url = "github:nix-community/NUR";
  outputs = { self, nixpkgs, nur }: rec {
    nixosConfigurations.laptop = nixpkgs.lib.nixosSystem {
      system = "x86_64-linux";
      modules = [
        { nixpkgs.overlays = [ nur.overlay ]; }
        ({ pkgs, ... }:
          let
            nur-no-pkgs = import nur {
              nurpkgs = import nixpkgs { system = "x86_64-linux"; };
            };
          in {
            imports = [ nur-no-pkgs.repos.iopq.modules.xraya  ];
            services.xraya.enable = true;
          })
        #./configuration.nix or other imports here
      ];
    };
  };
}
```

### Using modules overlays or library functions in NixOS

If you intend to use modules, overlays or library functions in your NixOS configuration.nix, you need to take care not to introduce infinite recursion. Specifically, you need to import NUR like this in the modules:

```nix
{ pkgs, config, lib, ... }:
let
  nur-no-pkgs = import (builtins.fetchTarball "https://github.com/nix-community/NUR/archive/master.tar.gz") {};
in {

  imports = [
    nur-no-pkgs.repos.paul.modules.foo
  ];

  nixpkgs.overlays = [
    nur-no-pkgs.repos.ben.overlays.bar
  ];

}
```

### Integrating with Home Manager

Integrating with [Home Manager](https://github.com/rycee/home-manager) can be done by adding your modules to the `imports` attribute.
You can then configure your services like usual.

```nix
let
  nur-no-pkgs = import (builtins.fetchTarball "https://github.com/nix-community/NUR/archive/master.tar.gz") {};
in
{
  imports = lib.attrValues nur-no-pkgs.repos.moredhel.hmModules.rawModules;

  services.unison = {
    enable = true;
    profiles = {
      org = {
        src = "/home/moredhel/org";
        dest = "/home/moredhel/org.backup";
        extraArgs = "-batch -watch -ui text -repeat 60 -fat";
      };
    };
  };
}
```

## Finding packages

You can find all packages using
[Packages search for NUR](https://nur.nix-community.org/)
or search our
[nur-combined](https://github.com/nix-community/nur-combined)
repository, which contains all nix expressions from all users, via
[github](https://github.com/nix-community/nur-combined/search).

## How to add your own repository.

First, create a repository that contains a `default.nix` in its top-level directory.
We also provide a [repository template](https://github.com/nix-community/nur-packages-template) that contains
a prepared directory structure.

DO NOT import packages for example `with import <nixpkgs> {};`.
Instead take all dependency you want to import from Nixpkgs from the given `pkgs` argument.
Each repository should return a set of Nix derivations:

```nix
{ pkgs }:
{
  hello-nur = pkgs.callPackage ./hello-nur {};
}
```

In this example `hello-nur` would be a directory containing a `default.nix`:

```nix
{ stdenv, fetchurl, lib }:

stdenv.mkDerivation rec {
  pname = "hello";
  version = "2.10";

  src = fetchurl {
    url = "mirror://gnu/hello/${pname}-${version}.tar.gz";
    sha256 = "0ssi1wpaf7plaswqqjwigppsg5fyh99vdlb9kzl7c9lng89ndq1i";
  };

  postPatch = ''
    sed -i -e 's/Hello, world!/Hello, NUR!/' src/hello.c
  '';

  # fails due to patch
  doCheck = false;

  meta = with lib; {
    description = "A program that produces a familiar, friendly greeting";
    longDescription = ''
      GNU Hello is a program that prints "Hello, world!" when you run it.
      It is fully customizable.
    '';
    homepage = https://www.gnu.org/software/hello/manual/;
    changelog = "https://git.savannah.gnu.org/cgit/hello.git/plain/NEWS?h=v${version}";
    license = licenses.gpl3Plus;
    maintainers = [ maintainers.eelco ];
    platforms = platforms.all;
  };
}
```

You can use `nix-shell` or `nix-build` to build your packages:

```console
$ nix-shell --arg pkgs 'import <nixpkgs> {}' -A hello-nur
nix-shell> hello
nix-shell> find $buildInputs
```

```console
$ nix-build --arg pkgs 'import <nixpkgs> {}' -A hello-nur
```

For development convenience, you can also set a default value for the pkgs argument:

```nix
{ pkgs ? import <nixpkgs> {} }:
{
  hello-nur = pkgs.callPackage ./hello-nur {};
}
```

```console
$ nix-build -A hello-nur
```

Add your own repository to the `repos.json` of NUR:

```console
$ git clone --depth 1 https://github.com/nix-community/NUR
$ cd NUR
```

edit the file `repos.json`:

```json
{
    "repos": {
        "mic92": {
            "url": "https://github.com/Mic92/nur-packages"
        },
        "<fill-your-repo-name>": {
            "url": "https://github.com/<your-user>/<your-repo>"
        }
    }
}
```

At the moment, each URL must point to a git repository. By running `bin/nur update`
the corresponding `repos.json.lock` is updated and the repository is  tested. This will
also perform an evaluation check, which must be passed for your repository. Commit the changed
`repos.json` but NOT `repos.json.lock`

```
$ ./bin/nur format-manifest # ensure repos.json is sorted alphabetically
$ git add repos.json
$ git commit -m "add <your-repo-name> repository"
$ git push
```

and open a pull request towards [https://github.com/nix-community/NUR](https://github.com/nix-community/NUR).

At the moment repositories should be buildable on Nixpkgs unstable. Later we
will add options to also provide branches for other Nixpkgs channels.

### Use a different nix file as root expression

To use a different file instead of `default.nix` to load packages from, set the `file`
option to a path relative to the repository root:

```json
{
    "repos": {
        "mic92": {
            "url": "https://github.com/Mic92/nur-packages",
            "file": "subdirectory/default.nix"
        }
    }
}
```

### Update NUR's lock file after updating your repository

By default, we only check for repository updates once a day with an automatic
github action to update our lock file `repos.json.lock`.
To update NUR faster, you can use our service at https://nur-update.nix-community.org/
after you have pushed an update to your repository, e.g.:

```console
curl -XPOST https://nur-update.nix-community.org/update?repo=mic92
```

Check out the [github page](https://github.com/nix-community/nur-update#nur-update-endpoint) for further details

### HELP! Why are my NUR packages not updating?
With every build triggered via the URL hook, all repositories will be evaluated.Only if the evaluation does not contain errors the repository revision for the user is updated. Typical evaluation errors are:

* Using a wrong license attribute in the metadata.
* Using a builtin fetcher because it will cause access to external URLs during evaluation. Use pkgs.fetch* instead (i.e. instead of `builtins.fetchGit` use `pkgs.fetchgit`)

You can find out if your evaluation succeeded by checking the [latest build job](https://github.com/nix-community/NUR/actions).

#### Local evaluation check

In your `nur-packages/` folder, run the [check evaluation](https://github.com/nix-community/nur-packages-template/blob/master/.github/workflows/build.yml) task

```sh
nix-env -f . -qa \* --meta \
  --allowed-uris https://static.rust-lang.org \
  --option restrict-eval true \
  --option allow-import-from-derivation true \
  --drv-path --show-trace \
  -I nixpkgs=$(nix-instantiate --find-file nixpkgs) \
  -I ./ \
  --json | jq -r 'values | .[].name'
```

On success, this shows a list of your packages

### Git submodules

To fetch git submodules in repositories set `submodules`:

```json
{
    "repos": {
        "mic92": {
            "url": "https://github.com/Mic92/nur-packages",
            "submodules": true
        }
    }
}
```

### NixOS modules, overlays and library function support

It is also possible to define more than just packages. In fact any Nix expression can be used.

To make NixOS modules, overlays and library functions more discoverable,
we propose to put them in their own namespace within the repository.
This allows us to make them later searchable, when the indexer is ready.

#### Providing NixOS modules

NixOS modules should be placed in the `modules` attribute:

```nix
{ pkgs }: {
  modules = import ./modules;
}
```

```nix
# modules/default.nix
{
  example-module = ./example-module.nix;
}
```

An example can be found [here](https://github.com/Mic92/nur-packages/tree/master/modules).
Modules should be defined as paths, not functions, to avoid conflicts if imported from multiple locations.

#### Providing Overlays

For overlays use the `overlays` attribute:

```nix
# default.nix
{
  overlays = {
    hello-overlay = import ./hello-overlay;
  };
}
```

```nix
# hello-overlay/default.nix
self: super: {
  hello = super.hello.overrideAttrs (old: {
    separateDebugInfo = true;
  });
}
```

#### Providing library functions

Put reusable nix functions that are intend for public use in the `lib` attribute:

```nix
{ pkgs }:
with pkgs.lib;
{
  lib = {
    hexint = x: hexvals.${toLower x};

    hexvals = listToAttrs (imap (i: c: { name = c; value = i - 1; })
      (stringToCharacters "0123456789abcdef"));
  };
}
```

## Overriding repositories

You can override repositories using `repoOverrides` argument.
This allows to test changes before publishing.

```nix
{
  packageOverrides = pkgs: {
    nur = import (builtins.fetchTarball "https://github.com/nix-community/NUR/archive/master.tar.gz") {
      inherit pkgs;
      repoOverrides = {
        mic92 = import ../nur-packages { inherit pkgs; };
        ## remote locations are also possible:
        # mic92 = import (builtins.fetchTarball "https://github.com/your-user/nur-packages/archive/master.tar.gz") { inherit pkgs; };
      };
    };
  };
}
```

The repo must be a valid package repo, i.e. its root contains a `default.nix` file.

### Overriding repositories with Flake

**Experimental** Note that flake support is still experimental and might change in future in a backwards incompatible way.

You can override repositories in two ways:

- With packageOverrides
```nix
{
  inputs.nur.url = "github:nix-community/NUR";
  inputs.paul.url = "path:/some_path/nur-paul"; # example: a local nur.repos.paul for development

  outputs = {self, nixpkgs, nur, paul }: {

  system = "x86_64-linux";

  nurpkgs = import nixpkgs { inherit system; };

  ...
  modules = [
       {
         nixpkgs.config.packageOverrides = pkgs: {
            nur = import nur {
              inherit pkgs nurpkgs;
              repoOverrides = { paul = import paul { inherit pkgs; }; };
            };
          };
        }
  ];
  ...
}
```
- With overlay
```nix
{
  modules = [
    {
      nixpkgs.overlays = [
        (final: prev: {
          nur = import nur {
            nurpkgs = prev;
            pkgs = prev;
            repoOverrides = { paul = import paul { pkgs = prev; }; };
          };
        })
      ];
    }
    ...
  ];
}
```

The **repo must contains** a `flake.nix` file to addition of `default.nix`:  [flake.nix example](https://github.com/Mic92/nur-packages/blob/master/flake.nix)

- If you need to use NUR defined modules and to avoid infinite recursion complete `nur-no-pkgs` (from previous Flake Support section) as:
```nix
{
  nur-no-pkgs = import nur {
    nurpkgs = import nixpkgs { system = "x86_64-linux"; };
    repoOverrides = { paul = import paul { }; };
  };
}
```

## Contribution guideline

- When adding packages to your repository make sure they build and set
  `meta.broken` attribute to true otherwise.
- Supply meta attributes as described in the [Nixpkgs manual](https://nixos.org/nixpkgs/manual/#sec-standard-meta-attributes), so
  packages can be found by users.
- Keep your repositories slim - they are downloaded by users and our evaluator
  and needs to be hashed.
- Reuse packages from Nixpkgs when applicable, so the binary cache can be
  leveraged

Examples for packages that could be in NUR:

- Packages that are only interesting for a small audience
- Pre-releases
- Old versions of packages that are no longer in Nixpkgs, but needed for legacy reason (i.e. old versions of GCC/LLVM)
- Automatic generated package sets (i.e. generate packages sets from PyPi or CPAN)
- Software with opinionated patches
- Experiments

## Why package sets instead of overlays?

To make it easier to review nix expression NUR makes it obvious where the
package is coming from.
If NUR would be an overlay malicious repositories could
override existing packages.
Also without coordination multiple overlays could easily introduce dependency
cycles.

## Contact

We have a matrix channel on [#nur:nixos.org](https://matrix.to/#/#nur:nixos.org).
Apart from that we also read posts on [https://discourse.nixos.org](https://discourse.nixos.org/).

(🔼 Back to top)


# Python Utility Bot

[![Discord][1]][2]
[![CI][3]][4]
[![License](https://img.shields.io/badge/license-MIT-green)](LICENSE)

This project is a Discord bot specifically for use with the Python Discord server. It provides numerous utilities
and other tools to help keep the server running like a well-oiled machine.

Read the [Contributing Guide](https://pythondiscord.com/pages/contributing/bot/) on our website if you're interested in helping out.

[1]: https://raw.githubusercontent.com/python-discord/branding/main/logos/badge/badge_github.svg
[2]: https://discord.gg/python
[3]: https://github.com/python-discord/bot/actions/workflows/main.yml/badge.svg?branch=main
[4]: https://github.com/python-discord/bot/actions/workflows/main.yml?query=branch%3Amain


The Algorithms - Python

All algorithms implemented in Python - for education

Implementations are for learning purposes only. They may be less efficient than the implementations in the Python standard library. Use them at your discretion.

## Getting Started

Read through our [Contribution Guidelines](CONTRIBUTING.md) before you contribute.

## Community Channels

We are on [Discord](https://the-algorithms.com/discord) and [Gitter](https://gitter.im/TheAlgorithms/community)! Community channels are a great way for you to ask questions and get help. Please join us!

## List of Algorithms

See our [directory](DIRECTORY.md) for easier navigation and a better overview of the project.


<!-- See: www.tensorflow.org/tfx/ -->

# TFX

[![Python](https://img.shields.io/badge/python%20-3.9%7C3.10-blue)](https://github.com/tensorflow/tfx)
[![PyPI](https://badge.fury.io/py/tfx.svg)](https://badge.fury.io/py/tfx)
[![TensorFlow](https://img.shields.io/badge/TensorFow-page-orange)](https://www.tensorflow.org/tfx)

[TensorFlow Extended (TFX)](https://tensorflow.org/tfx) is a
Google-production-scale machine learning platform based on TensorFlow. It
provides a configuration framework to express ML pipelines consisting of TFX
components. TFX pipelines can be orchestrated using
[Apache Airflow](https://airflow.apache.org/) and
[Kubeflow Pipelines](https://www.kubeflow.org/). Both the components themselves
as well as the integrations with orchestration systems can be extended.

TFX components interact with a
[ML Metadata](https://github.com/google/ml-metadata) backend that keeps a record
of component runs, input and output artifacts, and runtime configuration. This
metadata backend enables advanced functionality like experiment tracking or
warmstarting/resuming ML models from previous runs.

![TFX Components](https://raw.githubusercontent.com/tensorflow/tfx/master/docs/guide/images/prog_fin.png)

## Documentation

### User Documentation

Please see the
[TFX User Guide](https://github.com/tensorflow/tfx/blob/master/docs/guide/index.md).

### Development References

#### Roadmap

The TFX [Roadmap](https://github.com/tensorflow/tfx/blob/master/ROADMAP.md),
which is updated quarterly.

#### Release Details

For detailed previous and upcoming changes, please
[check here](https://github.com/tensorflow/tfx/blob/master/RELEASE.md)

#### Requests For Comment

TFX is an open-source project and we strongly encourage active participation
by the ML community in helping to shape TFX to meet or exceed their needs. An
important component of that effort is the RFC process.  Please see the listing
of [current and past TFX RFCs](RFCs.md). Please see the
[TensorFlow Request for Comments (TF-RFC)](https://github.com/tensorflow/community/blob/master/governance/TF-RFCs.md)
process page for information on how community members can contribute.

## Examples

*   [Chicago Taxi Example](https://github.com/tensorflow/tfx/tree/master/tfx/examples/chicago_taxi_pipeline)

## Compatible versions

The following table describes how the `tfx` package versions are compatible with
its major dependency PyPI packages. This is determined by our testing framework,
but other *untested* combinations may also work.

tfx                                                                       | Python               | apache-beam[gcp] | ml-metadata | pyarrow | tensorflow        | tensorflow-data-validation | tensorflow-metadata | tensorflow-model-analysis | tensorflow-serving-api | tensorflow-transform | tfx-bsl
------------------------------------------------------------------------- | -------------------- | ---------------- | ----------- | ------- | ----------------- | -------------------------- | ------------------- | ------------------------- | ---------------------- | -------------------- | -------
[GitHub master](https://github.com/tensorflow/tfx/blob/master/RELEASE.md) | >=3.9,<3.11          | 2.47.0           | 1.15.0      | 10.0.0  | nightly (2.x)     | 1.15.1                     | 1.15.0              | 0.46.0                    | 2.15.1                  | 1.15.0               | 1.15.1
[1.15.0](https://github.com/tensorflow/tfx/blob/v1.15.0/RELEASE.md)       | >=3.9,<3.11          | 2.47.0           | 1.15.0      | 10.0.0  | 2.15              | 1.15.1                     | 1.15.0              | 0.46.0                    | 2.15.1                  | 1.15.0               | 1.15.1
[1.14.0](https://github.com/tensorflow/tfx/blob/v1.14.0/RELEASE.md)       | >=3.8,<3.11          | 2.47.0           | 1.14.0      | 10.0.0  | 2.13              | 1.14.0                     | 1.14.0              | 0.45.0                    | 2.9.0                  | 1.14.0               | 1.14.0
[1.13.0](https://github.com/tensorflow/tfx/blob/v1.13.0/RELEASE.md)       | >=3.8,<3.10          | 2.40.0           | 1.13.1      | 6.0.0   | 2.12              | 1.13.0                     | 1.13.1              | 0.44.0                    | 2.9.0                  | 1.13.0               | 1.13.0
[1.12.0](https://github.com/tensorflow/tfx/blob/v1.12.0/RELEASE.md)       | >=3.7,<3.10          | 2.40.0           | 1.12.0      | 6.0.0   | 2.11              | 1.12.0                     | 1.12.0              | 0.43.0                    | 2.9.0                  | 1.12.0               | 1.12.0
[1.11.0](https://github.com/tensorflow/tfx/blob/v1.11.0/RELEASE.md)       | >=3.7,<3.10          | 2.40.0           | 1.11.0      | 6.0.0   | 1.15.5 / 2.10.0   | 1.11.0                     | 1.11.0              | 0.42.0                    | 2.9.0                  | 1.11.0               | 1.11.0
[1.10.0](https://github.com/tensorflow/tfx/blob/v1.10.0/RELEASE.md)       | >=3.7,<3.10          | 2.40.0           | 1.10.0      | 6.0.0   | 1.15.5 / 2.9.0    | 1.10.0                     | 1.10.0              | 0.41.0                    | 2.9.0                  | 1.10.0               | 1.10.0
[1.9.0](https://github.com/tensorflow/tfx/blob/v1.9.0/RELEASE.md)         | >=3.7,<3.10          | 2.38.0           | 1.9.0       | 5.0.0   | 1.15.5 / 2.9.0    | 1.9.0                      | 1.9.0               | 0.40.0                    | 2.9.0                  | 1.9.0                | 1.9.0
[1.8.0](https://github.com/tensorflow/tfx/blob/v1.8.0/RELEASE.md)         | >=3.7,<3.10          | 2.38.0           | 1.8.0       | 5.0.0   | 1.15.5 / 2.8.0    | 1.8.0                      | 1.8.0               | 0.39.0                    | 2.8.0                  | 1.8.0                | 1.8.0
[1.7.0](https://github.com/tensorflow/tfx/blob/v1.7.0/RELEASE.md)         | >=3.7,<3.9           | 2.36.0           | 1.7.0       | 5.0.0   | 1.15.5 / 2.8.0    | 1.7.0                      | 1.7.0               | 0.38.0                    | 2.8.0                  | 1.7.0                | 1.7.0
[1.6.2](https://github.com/tensorflow/tfx/blob/v1.6.2/RELEASE.md)         | >=3.7,<3.9           | 2.35.0           | 1.6.0       | 5.0.0   | 1.15.5 / 2.8.0    | 1.6.0                      | 1.6.0               | 0.37.0                    | 2.7.0                  | 1.6.0                | 1.6.0
[1.6.0](https://github.com/tensorflow/tfx/blob/v1.6.0/RELEASE.md)         | >=3.7,<3.9           | 2.35.0           | 1.6.0       | 5.0.0   | 1.15.5 / 2.7.0    | 1.6.0                      | 1.6.0               | 0.37.0                    | 2.7.0                  | 1.6.0                | 1.6.0
[1.5.0](https://github.com/tensorflow/tfx/blob/v1.5.0/RELEASE.md)         | >=3.7,<3.9           | 2.34.0           | 1.5.0       | 5.0.0   | 1.15.2 / 2.7.0    | 1.5.0                      | 1.5.0               | 0.36.0                    | 2.7.0                  | 1.5.0                | 1.5.0
[1.4.0](https://github.com/tensorflow/tfx/blob/v1.4.0/RELEASE.md)         | >=3.7,<3.9           | 2.33.0           | 1.4.0       | 5.0.0   | 1.15.0 / 2.6.0    | 1.4.0                      | 1.4.0               | 0.35.0                    | 2.6.0                  | 1.4.0                | 1.4.0
[1.3.4](https://github.com/tensorflow/tfx/blob/v1.3.4/RELEASE.md)         | >=3.6,<3.9           | 2.32.0           | 1.3.0       | 2.0.0   | 1.15.0 / 2.6.0    | 1.3.0                      | 1.2.0               | 0.34.1                    | 2.6.0                  | 1.3.0                | 1.3.0
[1.3.3](https://github.com/tensorflow/tfx/blob/v1.3.3/RELEASE.md)         | >=3.6,<3.9           | 2.32.0           | 1.3.0       | 2.0.0   | 1.15.0 / 2.6.0    | 1.3.0                      | 1.2.0               | 0.34.1                    | 2.6.0                  | 1.3.0                | 1.3.0
[1.3.2](https://github.com/tensorflow/tfx/blob/v1.3.2/RELEASE.md)         | >=3.6,<3.9           | 2.32.0           | 1.3.0       | 2.0.0   | 1.15.0 / 2.6.0    | 1.3.0                      | 1.2.0               | 0.34.1                    | 2.6.0                  | 1.3.0                | 1.3.0
[1.3.1](https://github.com/tensorflow/tfx/blob/v1.3.1/RELEASE.md)         | >=3.6,<3.9           | 2.32.0           | 1.3.0       | 2.0.0   | 1.15.0 / 2.6.0    | 1.3.0                      | 1.2.0               | 0.34.1                    | 2.6.0                  | 1.3.0                | 1.3.0
[1.3.0](https://github.com/tensorflow/tfx/blob/v1.3.0/RELEASE.md)         | >=3.6,<3.9           | 2.32.0           | 1.3.0       | 2.0.0   | 1.15.0 / 2.6.0    | 1.3.0                      | 1.2.0               | 0.34.1                    | 2.6.0                  | 1.3.0                | 1.3.0
[1.2.1](https://github.com/tensorflow/tfx/blob/v1.2.1/RELEASE.md)         | >=3.6,<3.9           | 2.31.0           | 1.2.0       | 2.0.0   | 1.15.0 / 2.5.0    | 1.2.0                      | 1.2.0               | 0.33.0                    | 2.5.1                  | 1.2.0                | 1.2.0
[1.2.0](https://github.com/tensorflow/tfx/blob/v1.2.0/RELEASE.md)         | >=3.6,<3.9           | 2.31.0           | 1.2.0       | 2.0.0   | 1.15.0 / 2.5.0    | 1.2.0                      | 1.2.0               | 0.33.0                    | 2.5.1                  | 1.2.0                | 1.2.0
[1.0.0](https://github.com/tensorflow/tfx/blob/v1.0.0/RELEASE.md)         | >=3.6,<3.9           | 2.29.0           | 1.0.0       | 2.0.0   | 1.15.0 / 2.5.0    | 1.0.0                      | 1.0.0               | 0.31.0                    | 2.5.1                  | 1.0.0                | 1.0.0
[0.30.0](https://github.com/tensorflow/tfx/blob/v0.30.0/RELEASE.md)       | >=3.6,<3.9           | 2.28.0           | 0.30.0      | 2.0.0   | 1.15.0 / 2.4.0    | 0.30.0                     | 0.30.0              | 0.30.0                    | 2.4.0                  | 0.30.0               | 0.30.0
[0.29.0](https://github.com/tensorflow/tfx/blob/v0.29.0/RELEASE.md)       | >=3.6,<3.9           | 2.28.0           | 0.29.0      | 2.0.0   | 1.15.0 / 2.4.0    | 0.29.0                     | 0.29.0              | 0.29.0                    | 2.4.0                  | 0.29.0               | 0.29.0
[0.28.0](https://github.com/tensorflow/tfx/blob/v0.28.0/RELEASE.md)       | >=3.6,<3.9           | 2.28.0           | 0.28.0      | 2.0.0   | 1.15.0 / 2.4.0    | 0.28.0                     | 0.28.0              | 0.28.0                    | 2.4.0                  | 0.28.0               | 0.28.1
[0.27.0](https://github.com/tensorflow/tfx/blob/v0.27.0/RELEASE.md)       | >=3.6,<3.9           | 2.27.0           | 0.27.0      | 2.0.0   | 1.15.0 / 2.4.0    | 0.27.0                     | 0.27.0              | 0.27.0                    | 2.4.0                  | 0.27.0               | 0.27.0
[0.26.4](https://github.com/tensorflow/tfx/blob/v0.26.4/RELEASE.md)       | >=3.6,<3.9           | 2.28.0           | 0.26.0      | 0.17.0  | 1.15.0 / 2.3.0    | 0.26.1                     | 0.26.0              | 0.26.0                    | 2.3.0                  | 0.26.0               | 0.26.0
[0.26.3](https://github.com/tensorflow/tfx/blob/v0.26.3/RELEASE.md)       | >=3.6,<3.9           | 2.25.0           | 0.26.0      | 0.17.0  | 1.15.0 / 2.3.0    | 0.26.0                     | 0.26.0              | 0.26.0                    | 2.3.0                  | 0.26.0               | 0.26.0
[0.26.1](https://github.com/tensorflow/tfx/blob/v0.26.1/RELEASE.md)       | >=3.6,<3.9           | 2.25.0           | 0.26.0      | 0.17.0  | 1.15.0 / 2.3.0    | 0.26.0                     | 0.26.0              | 0.26.0                    | 2.3.0                  | 0.26.0               | 0.26.0
[0.26.0](https://github.com/tensorflow/tfx/blob/v0.26.0/RELEASE.md)       | >=3.6,<3.9           | 2.25.0           | 0.26.0      | 0.17.0  | 1.15.0 / 2.3.0    | 0.26.0                     | 0.26.0              | 0.26.0                    | 2.3.0                  | 0.26.0               | 0.26.0
[0.25.0](https://github.com/tensorflow/tfx/blob/v0.25.0/RELEASE.md)       | >=3.6,<3.9           | 2.25.0           | 0.24.0      | 0.17.0  | 1.15.0 / 2.3.0    | 0.25.0                     | 0.25.0              | 0.25.0                    | 2.3.0                  | 0.25.0               | 0.25.0
[0.24.1](https://github.com/tensorflow/tfx/blob/v0.24.1/RELEASE.md)       | >=3.6,<3.9           | 2.24.0           | 0.24.0      | 0.17.0  | 1.15.0 / 2.3.0    | 0.24.1                     | 0.24.0              | 0.24.3                    | 2.3.0                  | 0.24.1               | 0.24.1
[0.24.0](https://github.com/tensorflow/tfx/blob/v0.24.0/RELEASE.md)       | >=3.6,<3.9           | 2.24.0           | 0.24.0      | 0.17.0  | 1.15.0 / 2.3.0    | 0.24.1                     | 0.24.0              | 0.24.3                    | 2.3.0                  | 0.24.1               | 0.24.1
[0.23.1](https://github.com/tensorflow/tfx/blob/v0.23.1/RELEASE.md)       | >=3.5,<4             | 2.24.0           | 0.23.0      | 0.17.0  | 1.15.0 / 2.3.0    | 0.23.1                     | 0.23.0              | 0.23.0                    | 2.3.0                  | 0.23.0               | 0.23.0
[0.23.0](https://github.com/tensorflow/tfx/blob/v0.23.0/RELEASE.md)       | >=3.5,<4             | 2.23.0           | 0.23.0      | 0.17.0  | 1.15.0 / 2.3.0    | 0.23.0                     | 0.23.0              | 0.23.0                    | 2.3.0                  | 0.23.0               | 0.23.0
[0.22.2](https://github.com/tensorflow/tfx/blob/v0.22.2/RELEASE.md)       | >=3.5,<4             | 2.21.0           | 0.22.1      | 0.16.0  | 1.15.0 / 2.2.0    | 0.22.2                     | 0.22.2              | 0.22.2                    | 2.2.0                  | 0.22.0               | 0.22.1
[0.22.1](https://github.com/tensorflow/tfx/blob/v0.22.1/RELEASE.md)       | >=3.5,<4             | 2.21.0           | 0.22.1      | 0.16.0  | 1.15.0 / 2.2.0    | 0.22.2                     | 0.22.2              | 0.22.2                    | 2.2.0                  | 0.22.0               | 0.22.1
[0.22.0](https://github.com/tensorflow/tfx/blob/v0.22.0/RELEASE.md)       | >=3.5,<4             | 2.21.0           | 0.22.0      | 0.16.0  | 1.15.0 / 2.2.0    | 0.22.0                     | 0.22.0              | 0.22.1                    | 2.2.0                  | 0.22.0               | 0.22.0
[0.21.5](https://github.com/tensorflow/tfx/blob/v0.21.5/RELEASE.md)       | >=2.7,<3 or >=3.5,<4 | 2.17.0           | 0.21.2      | 0.15.0  | 1.15.0 / 2.1.0    | 0.21.5                     | 0.21.1              | 0.21.5                    | 2.1.0                  | 0.21.2               | 0.21.4
[0.21.4](https://github.com/tensorflow/tfx/blob/v0.21.4/RELEASE.md)       | >=2.7,<3 or >=3.5,<4 | 2.17.0           | 0.21.2      | 0.15.0  | 1.15.0 / 2.1.0    | 0.21.5                     | 0.21.1              | 0.21.5                    | 2.1.0                  | 0.21.2               | 0.21.4
[0.21.3](https://github.com/tensorflow/tfx/blob/v0.21.3/RELEASE.md)       | >=2.7,<3 or >=3.5,<4 | 2.17.0           | 0.21.2      | 0.15.0  | 1.15.0 / 2.1.0    | 0.21.5                     | 0.21.1              | 0.21.5                    | 2.1.0                  | 0.21.2               | 0.21.4
[0.21.2](https://github.com/tensorflow/tfx/blob/v0.21.2/RELEASE.md)       | >=2.7,<3 or >=3.5,<4 | 2.17.0           | 0.21.2      | 0.15.0  | 1.15.0 / 2.1.0    | 0.21.5                     | 0.21.1              | 0.21.5                    | 2.1.0                  | 0.21.2               | 0.21.4
[0.21.1](https://github.com/tensorflow/tfx/blob/0.21.1/RELEASE.md)        | >=2.7,<3 or >=3.5,<4 | 2.17.0           | 0.21.2      | 0.15.0  | 1.15.0 / 2.1.0    | 0.21.4                     | 0.21.1              | 0.21.4                    | 2.1.0                  | 0.21.2               | 0.21.3
[0.21.0](https://github.com/tensorflow/tfx/blob/0.21.0/RELEASE.md)        | >=2.7,<3 or >=3.5,<4 | 2.17.0           | 0.21.0      | 0.15.0  | 1.15.0 / 2.1.0    | 0.21.0                     | 0.21.0              | 0.21.1                    | 2.1.0                  | 0.21.0               | 0.21.0
[0.15.0](https://github.com/tensorflow/tfx/blob/0.15.0/RELEASE.md)        | >=2.7,<3 or >=3.5,<4 | 2.16.0           | 0.15.0      | 0.15.0  | 1.15.0            | 0.15.0                     | 0.15.0              | 0.15.2                    | 1.15.0                 | 0.15.0               | 0.15.1
[0.14.0](https://github.com/tensorflow/tfx/blob/0.14.0/RELEASE.md)        | >=2.7,<3 or >=3.5,<4 | 2.14.0           | 0.14.0      | 0.14.0  | 1.14.0            | 0.14.1                     | 0.14.0              | 0.14.0                    | 1.14.0                 | 0.14.0               | n/a
[0.13.0](https://github.com/tensorflow/tfx/blob/0.13.0/RELEASE.md)        | >=2.7,<3 or >=3.5,<4 | 2.12.0           | 0.13.2      | n/a     | 1.13.1            | 0.13.1                     | 0.13.0              | 0.13.2                    | 1.13.0                 | 0.13.0               | n/a
[0.12.0](https://github.com/tensorflow/tfx/blob/0.12.0/RELEASE.md)        | >=2.7,<3             | 2.10.0           | 0.13.2      | n/a     | 1.12.0            | 0.12.0                     | 0.12.1              | 0.12.1                    | 1.12.0                 | 0.12.0               | n/a

## Resources

*   [TFX tutorials ](https://www.tensorflow.org/tfx/tutorials)
*   [TensorFlow Extended (YouTube)](https://www.youtube.com/playlist?list=PLQY2H8rRoyvxR15n04JiW0ezF5HQRs_8F)
*   [ MLOps Specialization ](https://www.coursera.org/specializations/machine-learning-engineering-for-production-mlops)
*   [ML Pipelines on Google Cloud](https://www.coursera.org/learn/ml-pipelines-google-cloud?specialization=preparing-for-google-cloud-machine-learning-engineer-professional-certificate)
*   [Manage a production ML pipeline with TFX](https://www.youtube.com/watch?v=QQ13-Tkrbls)
*   [How to build an ML pipeline with TFX](https://www.youtube.com/watch?v=17l3VR2MIeg)


.. image:: https://github.com/ray-project/ray/raw/master/doc/source/images/ray_header_logo.png

.. image:: https://readthedocs.org/projects/ray/badge/?version=master
    :target: http://docs.ray.io/en/master/?badge=master

.. image:: https://img.shields.io/badge/Ray-Join%20Slack-blue
    :target: https://forms.gle/9TSdDYUgxYs8SA9e8

.. image:: https://img.shields.io/badge/Discuss-Ask%20Questions-blue
    :target: https://discuss.ray.io/

.. image:: https://img.shields.io/twitter/follow/raydistributed.svg?style=social&logo=twitter
    :target: https://twitter.com/raydistributed

Ray is a unified framework for scaling AI and Python applications. Ray consists of a core distributed runtime and a set of AI libraries for simplifying ML compute:

.. image:: https://github.com/ray-project/ray/raw/master/doc/source/images/what-is-ray-padded.svg

..
  https://docs.google.com/drawings/d/1Pl8aCYOsZCo61cmp57c7Sja6HhIygGCvSZLi_AuBuqo/edit

Learn more about `Ray AI Libraries`_:

- `Data`_: Scalable Datasets for ML
- `Train`_: Distributed Training
- `Tune`_: Scalable Hyperparameter Tuning
- `RLlib`_: Scalable Reinforcement Learning
- `Serve`_: Scalable and Programmable Serving

Or more about `Ray Core`_ and its key abstractions:

- `Tasks`_: Stateless functions executed in the cluster.
- `Actors`_: Stateful worker processes created in the cluster.
- `Objects`_: Immutable values accessible across the cluster.

Monitor and debug Ray applications and clusters using the `Ray dashboard <https://docs.ray.io/en/latest/ray-core/ray-dashboard.html>`__.

Ray runs on any machine, cluster, cloud provider, and Kubernetes, and features a growing
`ecosystem of community integrations`_.

Install Ray with: ``pip install ray``. For nightly wheels, see the
`Installation page <https://docs.ray.io/en/latest/installation.html>`__.

.. _`Serve`: https://docs.ray.io/en/latest/serve/index.html
.. _`Data`: https://docs.ray.io/en/latest/data/dataset.html
.. _`Workflow`: https://docs.ray.io/en/latest/workflows/concepts.html
.. _`Train`: https://docs.ray.io/en/latest/train/train.html
.. _`Tune`: https://docs.ray.io/en/latest/tune/index.html
.. _`RLlib`: https://docs.ray.io/en/latest/rllib/index.html
.. _`ecosystem of community integrations`: https://docs.ray.io/en/latest/ray-overview/ray-libraries.html

Why Ray?
--------

Today's ML workloads are increasingly compute-intensive. As convenient as they are, single-node development environments such as your laptop cannot scale to meet these demands.

Ray is a unified way to scale Python and AI applications from a laptop to a cluster.

With Ray, you can seamlessly scale the same code from a laptop to a cluster. Ray is designed to be general-purpose, meaning that it can performantly run any kind of workload. If your application is written in Python, you can scale it with Ray, no other infrastructure required.

More Information
----------------

- `Documentation`_
- `Ray Architecture whitepaper`_
- `Exoshuffle: large-scale data shuffle in Ray`_
- `Ownership: a distributed futures system for fine-grained tasks`_
- `RLlib paper`_
- `Tune paper`_

*Older documents:*

- `Ray paper`_
- `Ray HotOS paper`_
- `Ray Architecture v1 whitepaper`_

.. _`Ray AI Libraries`: https://docs.ray.io/en/latest/ray-air/getting-started.html
.. _`Ray Core`: https://docs.ray.io/en/latest/ray-core/walkthrough.html
.. _`Tasks`: https://docs.ray.io/en/latest/ray-core/tasks.html
.. _`Actors`: https://docs.ray.io/en/latest/ray-core/actors.html
.. _`Objects`: https://docs.ray.io/en/latest/ray-core/objects.html
.. _`Documentation`: http://docs.ray.io/en/latest/index.html
.. _`Ray Architecture v1 whitepaper`: https://docs.google.com/document/d/1lAy0Owi-vPz2jEqBSaHNQcy2IBSDEHyXNOQZlGuj93c/preview
.. _`Ray Architecture whitepaper`: https://docs.google.com/document/d/1tBw9A4j62ruI5omIJbMxly-la5w4q_TjyJgJL_jN2fI/preview
.. _`Exoshuffle: large-scale data shuffle in Ray`: https://arxiv.org/abs/2203.05072
.. _`Ownership: a distributed futures system for fine-grained tasks`: https://www.usenix.org/system/files/nsdi21-wang.pdf
.. _`Ray paper`: https://arxiv.org/abs/1712.05889
.. _`Ray HotOS paper`: https://arxiv.org/abs/1703.03924
.. _`RLlib paper`: https://arxiv.org/abs/1712.09381
.. _`Tune paper`: https://arxiv.org/abs/1807.05118

Getting Involved
----------------

.. list-table::
   :widths: 25 50 25 25
   :header-rows: 1

   * - Platform
     - Purpose
     - Estimated Response Time
     - Support Level
   * - `Discourse Forum`_
     - For discussions about development and questions about usage.
     - < 1 day
     - Community
   * - `GitHub Issues`_
     - For reporting bugs and filing feature requests.
     - < 2 days
     - Ray OSS Team
   * - `Slack`_
     - For collaborating with other Ray users.
     - < 2 days
     - Community
   * - `StackOverflow`_
     - For asking questions about how to use Ray.
     - 3-5 days
     - Community
   * - `Meetup Group`_
     - For learning about Ray projects and best practices.
     - Monthly
     - Ray DevRel
   * - `Twitter`_
     - For staying up-to-date on new features.
     - Daily
     - Ray DevRel

.. _`Discourse Forum`: https://discuss.ray.io/
.. _`GitHub Issues`: https://github.com/ray-project/ray/issues
.. _`StackOverflow`: https://stackoverflow.com/questions/tagged/ray
.. _`Meetup Group`: https://www.meetup.com/Bay-Area-Ray-Meetup/
.. _`Twitter`: https://twitter.com/raydistributed
.. _`Slack`: https://forms.gle/9TSdDYUgxYs8SA9e8


# Zulip overview

[Zulip](https://zulip.com) is an open-source team collaboration tool with unique
[topic-based threading][why-zulip] that combines the best of email and chat to
make remote work productive and delightful. Fortune 500 companies, [leading open
source projects][rust-case-study], and thousands of other organizations use
Zulip every day. Zulip is the only [modern team chat app][features] that is
designed for both live and asynchronous conversations.

Zulip is built by a distributed community of developers from all around the
world, with 74+ people who have each contributed 100+ commits. With
over 1000 contributors merging over 500 commits a month, Zulip is the
largest and fastest growing open source team chat project.

Come find us on the [development community chat](https://zulip.com/development-community/)!

[![GitHub Actions build status](https://github.com/zulip/zulip/actions/workflows/zulip-ci.yml/badge.svg)](https://github.com/zulip/zulip/actions/workflows/zulip-ci.yml?query=branch%3Amain)
[![coverage status](https://img.shields.io/codecov/c/github/zulip/zulip/main.svg)](https://codecov.io/gh/zulip/zulip)
[![Mypy coverage](https://img.shields.io/badge/mypy-100%25-green.svg)][mypy-coverage]
[![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
[![code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)](https://github.com/prettier/prettier)
[![GitHub release](https://img.shields.io/github/release/zulip/zulip.svg)](https://github.com/zulip/zulip/releases/latest)
[![docs](https://readthedocs.org/projects/zulip/badge/?version=latest)](https://zulip.readthedocs.io/en/latest/)
[![Zulip chat](https://img.shields.io/badge/zulip-join_chat-brightgreen.svg)](https://chat.zulip.org)
[![Twitter](https://img.shields.io/badge/twitter-@zulip-blue.svg?style=flat)](https://twitter.com/zulip)
[![GitHub Sponsors](https://img.shields.io/github/sponsors/zulip)](https://github.com/sponsors/zulip)

[mypy-coverage]: https://blog.zulip.org/2016/10/13/static-types-in-python-oh-mypy/
[why-zulip]: https://zulip.com/why-zulip/
[rust-case-study]: https://zulip.com/case-studies/rust/
[features]: https://zulip.com/features/

## Getting started

- **Contributing code**. Check out our [guide for new
  contributors](https://zulip.readthedocs.io/en/latest/contributing/contributing.html)
  to get started. We have invested in making Zulip’s code highly
  readable, thoughtfully tested, and easy to modify. Beyond that, we
  have written an extraordinary 150K words of documentation for Zulip
  contributors.

- **Contributing non-code**. [Report an
  issue](https://zulip.readthedocs.io/en/latest/contributing/contributing.html#reporting-issues),
  [translate](https://zulip.readthedocs.io/en/latest/translating/translating.html)
  Zulip into your language, or [give us
  feedback](https://zulip.readthedocs.io/en/latest/contributing/contributing.html#user-feedback).
  We'd love to hear from you, whether you've been using Zulip for years, or are just
  trying it out for the first time.

- **Checking Zulip out**. The best way to see Zulip in action is to drop by the
  [Zulip community server](https://zulip.com/development-community/). We also
  recommend reading about Zulip's [unique
  approach](https://zulip.com/why-zulip/) to organizing conversations.

- **Running a Zulip server**. Self-host Zulip directly on Ubuntu or Debian
  Linux, in [Docker](https://github.com/zulip/docker-zulip), or with prebuilt
  images for [Digital Ocean](https://marketplace.digitalocean.com/apps/zulip) and
  [Render](https://render.com/docs/deploy-zulip).
  Learn more about [self-hosting Zulip](https://zulip.com/self-hosting/).

- **Using Zulip without setting up a server**. Learn about [Zulip
  Cloud](https://zulip.com/plans/) hosting options. Zulip sponsors free [Zulip
  Cloud Standard](https://zulip.com/plans/) for hundreds of worthy
  organizations, including [fellow open-source
  projects](https://zulip.com/for/open-source/).

- **Participating in [outreach
  programs](https://zulip.readthedocs.io/en/latest/contributing/contributing.html#outreach-programs)**
  like [Google Summer of Code](https://developers.google.com/open-source/gsoc/)
  and [Outreachy](https://www.outreachy.org/).

- **Supporting Zulip**. Advocate for your organization to use Zulip, become a
  [sponsor](https://github.com/sponsors/zulip), write a review in the mobile app
  stores, or [help others find
  Zulip](https://zulip.readthedocs.io/en/latest/contributing/contributing.html#help-others-find-zulip).

You may also be interested in reading our [blog](https://blog.zulip.org/), and
following us on [Twitter](https://twitter.com/zulip) and
[LinkedIn](https://www.linkedin.com/company/zulip-project/).

Zulip is distributed under the
[Apache 2.0](https://github.com/zulip/zulip/blob/main/LICENSE) license.