Git Product home page Git Product logo

angie's Introduction

Angie logo

Angie

Angie /ˈendʒi/ is an efficient, powerful, and scalable web server that was forked from nginx to act as a drop-in replacement, so you can use existing setups without major changes to module layout or configuration.

The project was conceived by ex-devs from the original nginx team to venture beyond the earlier vision.

Getting Started

To start using Angie, see the official documentation:

Features

On top of all the capabilities of nginx 1.25.4, Angie adds a number of its own advantages, including these:

  • Supporting HTTP/3 for client connections, as well as for proxied server connections, with the ability to independently use different protocol versions (HTTP/1.x, HTTP/2, HTTP/3) on opposite sides.
  • Automatic HTTPS provisions TLS certificates using built-in ACME support.
  • Simplifying configuration: the location directive can define several matching expressions at once, which enables combining blocks with shared settings.
  • Exposing basic information about the web server, its configuration, as well as metrics of proxied servers, client connections, shared memory zones, and many other things via a RESTful API interface in JSON format.
  • Exporting statistics in Prometheus format with customizable templates.
  • Monitoring the server through the browser with the Console Light visual monitoring tool. See the online demo: https://console.angie.software/
  • Automatically updating lists of proxied servers matching a domain name or retrieving such lists from SRV DNS records.
  • Session binding mode, which directs all requests within one session to the same proxied server.
  • Recommissioning upstream servers after a failure smoothly using the slow_start option of the server directive.
  • Limiting the MP4 file transfer rate proportionally to its bitrate, thus reducing the bandwidth load.
  • Extending authorization and balancing capabilities for the MQTT protocol with the mqtt_preread directive under stream.
  • Pre-built binary packages for many popular third-party modules.
  • Server- and client-side support for NTLS when using the TongSuo TLS library, enabled at build time.

angie's People

Contributors

agentzh avatar andrey-zelenkov avatar arut avatar chobits avatar cubicdaiya avatar damz avatar debayang avatar defanator avatar erankor avatar fblr avatar fdasilvayy avatar flygoast avatar ghedo avatar igorsysoev avatar iphucc avatar jimf5 avatar kou avatar laz2 avatar mdocguard avatar mdounin avatar noobocoder avatar orgads avatar othree avatar p-pautov avatar piotrsikora avatar pluknet avatar thresheek avatar vbart avatar vlhomutov avatar xeioex avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

angie's Issues

angie 1.2.0 and modsecurity

HI, I have tried to compile angie with modsecurity as follow:

1-COmpile modsecurity 2.9.1 in standalone
2-Compile Angie 1.2.0 adding the module compiled in the configure (--add-module=../modsecurity-2.9.1/nginx/modsecurity), in the make the following error is shown:

/opt/modsec/modsecurity-2.9.1/nginx/modsecurity//ngx_http_modsecurity.c

/opt/modsec/modsecurity-2.9.1/nginx/modsecurity//ngx_http_modsecurity.c: In function ‘ngx_http_modsecurity_save_headers_in’:
/opt/modsec/modsecurity-2.9.1/nginx/modsecurity//ngx_http_modsecurity.c:358:39: error: ‘ngx_http_headers_in_t’ {aka ‘struct ’} has no member named ‘cookies’; did you mean ‘cookie’?
if (ngx_array_init(&r->headers_in.cookies, r->pool, 2,
^~~~~~~
cookie
/opt/modsec/modsecurity-2.9.1/nginx/modsecurity//ngx_http_modsecurity.c: In function ‘ngx_http_modsecurity_save_request_body’:
/opt/modsec/modsecurity-2.9.1/nginx/modsecurity//ngx_http_modsecurity.c:531:17: error: ‘ngx_http_connection_t’ {aka ‘struct ’} has no member named ‘nfree’; did you mean ‘free’?
if (hc->nfree && size == cscf->large_client_header_buffers.size) {
^~~~~
free
/opt/modsec/modsecurity-2.9.1/nginx/modsecurity//ngx_http_modsecurity.c:533:34: error: ‘ngx_http_connection_t’ {aka ‘struct ’} has no member named ‘nfree’; did you mean ‘free’?
buf = hc->free[--hc->nfree];
^~~~~
free
make[1]: *** [objs/Makefile:1304: objs/addon/modsecurity/ngx_http_modsecurity.o] Error 1

Is mod security supported in Angie? I tried modsecurity version 2.9.1 maybe another version is required.

Thanks!

Centos7

Добрый день.
Прошу добавить RPM пакеты для Centos7

Angie as an API gateway

Hello, Angie Developers!

Is it possible to use the Angie as an API gateway as Nginx Plus works, in terms of functionality?
I see Angie have JWT Auth module, location based upstream proxy, load balancing, etc...

Do Angie have a monitoring dashboard?

Заранее спасибо!

API status doubt

Hi, I am reading about this module:
https://angie.software/en/api/
the information shown in the API is quite useful and complete, I would like to know if there is some way of using this API or another method of sending POST/PUT or any modification through API for example for adding a server in an upstream, stopping sending traffic to a given server in a upstream, etc.

I know that the changes can be done from the command line and reload the service, but it should be great to have some kind of socket control in order to do the changes on the fly.

Thanks!

потерялись образы

вроде образы помечены на сайте как опубликованные, а их нет

vlad@turtle:/$ docker pull docker.angie.software/angie:1.1.0-alpine
Error response from daemon: manifest for docker.angie.software/angie:1.1.0-alpine not found: manifest unknown: manifest unknown
vlad@turtle:/$ docker pull docker.angie.software/angie:1.1.0
Error response from daemon: manifest for docker.angie.software/angie:1.1.0 not found: manifest unknown: manifest unknown

мож нужна помощь с ci какая? )

[Feature Request] Angie built-in the Prometheus Exporter

Добрый день.

В данный момент сервис совместим с NGINX Prometheus Exporter, но его использование требует установки дополнительного контейнера и отдается очень скудный набор метрик.
Тот же haproxy отдает гораздо больше метрик.

Было бы неплохо чтобы Angie мог отдавать метрики работы сервиса и его компонент в формате prometheus.

RISCV64 support

Hi guys,

I'm using angie from your deb repository on my rpi3b+(ubuntu, arm64), and it works great, specially for the http3.

And I want to use it on visionfive2 (ubuntu, riscv64)

Is there any plan to build a official riscv64 one?

when did the nginx 1.25.1 will be merged in angie ?

Thanks for your fork what is the policy about follow nginx mainline ? and when the nginx 1.25.1 will be merged

There is some feature intersting

*) Feature: the "http2" directive, which enables HTTP/2 on a per-server
   basis; the "http2" parameter of the "listen" directive is now
   deprecated.

*) Change: HTTP/2 server push support has been removed.

*) Change: the deprecated "ssl" directive is not supported anymore.

*) Bugfix: in HTTP/3 when using OpenSSL.  

image_filter and convertation in webp

Hi

A good feature for the module image_filter would be the ability to change the format of the resulting image, otherwise it is now issued in the same format as the original image. And converting to the webp format is quite a promising activity.

HTTP/2 для бэкэнда в режиме реверс-прокси

Всем привет,

благодарю за вашу работу и отличный проект. Очень не хватает протокола HTTP/2 для бэкэнда в режиме реверс-прокси. Пожалуйста, рассмотрите возможность его добавления.

Спасибо!
Cheers🤝

allow to use variables in "status_zone" string

I'm looking for a way to dynamically create metrics using variables in status_zone directive, like

server_name example.com domain.ru;
status_zone ${host}_server;

I hope this will allow to export prometheus metrics per used domain name later in template

enhancement replace sock option for better cpu pinning

Dear angie team and devs,

I patched my nginx with SO_ATTACH_REUSEPORT_CBPF

And it compiles very well and working and i see 6-11% performance increase in my lab with benchmark tools like wrk.

But redis1and2 modules compiled with nginx cant communicate with nginx --> redis anymore after patch.

If you can fix this, we could have easy performance win and latency reduction.

Thanks and

Best regards

I have seen discussions on the NGINX mailing list about adding SO_ATTACH_REUSEPORT_CBPF support, so it may become much more mainstream in the not too distant future. Like the libreactor implementation used in this benchmark, NGINX also has a process-per-core architecture and supports CPU pinning, so adding SO_ATTACH_REUSEPORT_CBPF support is potentially a big win if the OS is tuned to match.

"virtual" host in stream module (enhancement)

Добрый день.

В стрим модуле сейчас на одной паре ip:port можно разместить только 1 сервер, а было бы интересно видеть их там больше.
Понятно, что надо как-то различать хосты, моё предложение разделять по ssl сертификату, пусть работает только для ssl соединений, ведь на этапе хендшейка становится ясно, с каким ssl именем клиент запрашивает серт сервера, можно выбрать сервер для стрима.

Upstream dynamic DNS resolve

Upstreams resolved when server starts, but i need to resolve upstream domain names asynchronously, it is possible for now?

Несовместимость c nginx-lua-module

Пытаюсь собрать docker образ в angie + nginx-lua-module.
При конфигурации ловлю следующую ошибку

Аналогичный скрипт с использованием nginx-1.22.1 собирается без проблем.
Полный Dockerfile в аттаче.

cc -c -I/usr/local/include/luajit-2.1  -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -DNDK_SET_VAR -I src/core -I src/event -I src/event/modules -I src/os/unix -I /usr/src/ngx_devel_kit/objs -I objs/addon/ndk -I /usr/src/lua-nginx-module/src/api -I /usr/include/libxml2 -I objs -I src/http -I src/http/modules -I src/http/v2 -I /usr/src/ngx_devel_kit/src -I /usr/src/ngx_devel_kit/src -I /usr/src/ngx_devel_kit/objs -I objs/addon/ndk -I /usr/local/include/luajit-2.1 \
	-o objs/src/http/ngx_http_parse.o \
	src/http/ngx_http_parse.c
In file included from src/core/ngx_core.h:53,
                 from src/core/ngx_api.c:8:
src/core/ngx_api.c: In function ‘ngx_api_object_iterate’:
src/core/ngx_string.h:53:33: error: ‘*((void *)&name+8)’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
   53 | #define ngx_strncmp(s1, s2, n)  strncmp((const char *) s1, (const char *) s2, n)
      |                                 ^~~~~~~
src/core/ngx_api.c:178:23: note: ‘*((void *)&name+8)’ was declared here
  178 |     ngx_str_t         name;
      |                       ^~~~
In file included from src/core/ngx_core.h:53,
                 from src/core/ngx_api.c:8:
src/core/ngx_string.h:53:33: error: ‘name’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
   53 | #define ngx_strncmp(s1, s2, n)  strncmp((const char *) s1, (const char *) s2, n)
      |                                 ^~~~~~~
src/core/ngx_api.c:178:23: note: ‘name’ was declared here
  178 |     ngx_str_t         name;
      |                       ^~~~
cc1: all warnings being treated as errors
make[1]: *** [objs/Makefile:1235: objs/src/core/ngx_api.o] Error 1
make[1]: *** Waiting for unfinished jobs....
make[1]: Leaving directory '/usr/src/angie-1.0.0'
make: *** [Makefile:10: build] Error 2

Dockerfile.txt

Compilation instructions missing

For those not running Ubuntu and Debian, can you please provide some basic compilation instructions so that we can help test on other distros of Linux?

slow shutdown on WSL2

`root@LAPTOP-S4IIEANG:/etc/angie/http.d# sudo service angie restart

  • Restarting angie angie`
    опытным путём выяснил что рестарт тормозит (20 сек где то) на стадии стопа, стартует моментально

какую дополнительную информацию предоставить или это норма ?

Evaluate Profile-Guided Optimization (PGO) and LLVM BOLT

Hi!

Recently I checked Profile-Guided Optimization (PGO) improvements on multiple projects. The results are here. E.g. PGO helps with optimizing Envoyproxy, HAProxy (link), httpd (link), Nginx (link, but the more mature tests should be performed for it). According to the multiple tests, PGO can help with improving performance in many other cases. That's why I think trying to optimize the CPU parts of Angie with PGO can be a good idea.

I can suggest the following action points:

  • Perform PGO benchmarks on Angie. If it shows improvements - add a note about possible improvements in Angie performance with PGO.
  • Providing an easier way (e.g. a build option) to build scripts with PGO can be helpful for the end-users and maintainers since they will be able to optimize Angie according to their own workloads.
  • Optimize pre-built binaries

Maybe testing Post-Link Optimization techniques (like LLVM BOLT) would be interesting too (Clang and Rustc already use BOLT as an addition to PGO) but I recommend starting from the usual PGO.

Here are some examples of how PGO optimization is integrated in other projects:

Debianization and build package error

Привет, а можно в релиз еще и архив дебианизации выкладывать? Аналогично nginx'овскому .debian.tar.xz
Всеж 2022 год на дворе, многие свои пакеты собирают и свои репозитории держат

ROSA package

Здравствуйте!
В репозитории Росы (ROSA Fresh, РОСА Хром, http://wiki.rosalab.ru/ru/index.php/Server_12.4) существует angie практически с момента его появления.
git со спецификацией сборки: https://abf.io/import/angie
Сборка последней версии: https://abf.io/build_lists/4751172 (сейчас на тестировании: https://bugzilla.rosalinux.ru/show_bug.cgi?id=13045)
Буду рад услышать какие-либо комментарии на счет опакечивания angie. Может быть, можно куда-нибудь в документацию добавить информацию о пакете в Росе.
Спасибо!

ngx_http_vod_module.so build maybe missing some options

when I use angie (angie:1.3.1-alpine) docker image, after add ngx_http_vod_module.so module and do some tests

console log will print some warn message, like this , this will cause video missing sound

audio_encoder_process_init: failed to get AAC encoder, audio encoding is disabled. recompile libavcodec with libfdk_aac to enable it

[Feature] nginx-opentracing в составе angie

Здравствуйте. Спасибо за angie!
Было бы классно увидеть модуль nginx-opentracing включенный в состав angie.
Либо ваша реализация tracing.

jwt module

Добрый день.

Было бы очень круто, если бы добавили поддержку jwt модуля из коробки.
В данный момент мы самостоятельно собираем jwt модуль (https://github.com/max-lt/nginx-jwt-module), но это очень неудобно, т.к. после каждого обновления пакета Angie необходимо собирать модуль заново.

how to setup more than one http3 server?

I've set two server by including a conf

listen 443 quic reuseport;
listen [::]:443 quic reuseport;
add_header Alt-Svc 'h3=":443"; ma=86400';

however, when I run sudo angie -t
it reports

angie: [emerg] duplicate listen options for 0.0.0.0:443 in /home/ubuntu/ssl/quic.conf:1
angie: configuration file /etc/angie/angie.conf test failed

is there any guide to setup more than one http3 server?

Интеграция с CryptoPro CSP

Добрый день
Хотелось бы видеть интеграцию с cryptopro csp которая реализована в nginx 1.18 через сборку nginx с патчем от криптопро. Реализация нужна для поддержки ГОСТ шифрования.

HTTP/3 Grace Termination

Всем привет,

благодарю за вашу работу и отличный проект. Рассмотрите, пожалуйста, возможность добавления поддержки grace termination для протокола HTTP/3.

Спасибо!
Cheers✋🏼

NGINX ABI compatibility

Hi,

Are you going to keep the ABI compatibility between NGINX and Angie?

E.g. from the latest release:

Feature: all functionality of nginx 1.23.3.

Does this mean dynamic modules compiled using --with-compat against NGINX 1.23.3 would work with that Angie release without problems?

Feature document

Hi,

It would be nice to have a dedicated documentation page listing unique features of Angie in lieu of NGINX.
Currently, it seems the only source of truth for this is releases page on GitHub or CHANGES file.
Even then though, it's not clear whether a feature is brought by integrating the latest NGINX code, or is unique to Angie itself.

ManageSieve proxy

Приветствую.
В nginx предлагались патчи для внедрения поддержки протокола Sieve (на уровне проксирования) еще в 2020 году, тема на форуме nginx так и осталась без ответа, в трекере также.
Было бы хорошо, если в данном проекте данный патч был бы внедрен - для меня это был бы дополнительный, сильный повод мигрировать с ванильного nginx-а.

Я систематизировал предложенные патчи, включая тест от Максима, выложенный на форуме, и собрал наложил все изменения на текущую версию angie, собрал, проверил - sieve работает, патч работает как надо.

patch updated due some changes was not included.
sieve_protocol-2.patch

Implementing an auto SSL feature

Hi!
First of all I would like to thank you for creating Angie, it's a very good project, much friendlier and easier to use than nginx.
I've been testing it for some time and it works flawlessly.
My question is whether it is possible to implement auto SSL, such as it works in Caddy?
https://caddyserver.com/docs/automatic-https

This would be a real game changer in the NGINX environment and a big plus for Angie.
Do you have any plans for such a feature?

Greetings
PS - Sorry if this is not the right place to report such ideas

yum install failed on Centos 7.9.2009

When yum install angie, got error:

Downloading packages:
warning: /var/cache/yum/x86_64/7/angie/packages/angie-1.2.0-1.el7.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID cb849a76: NOKEY
从 https://angie.software/keys/angie-signing.gpg 检索密钥


from https://angie.software/keys/angie-signing.gpg invalid GPG key:No key found in given key data

rpm packages

Добрый день
Хотелось бы получать релизы в виде rpm пакетов.

Does not compile

cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -Wextra -Wwrite-strings -Wmissing-prototypes -Werror -Wno-discarded-qualifiers -DNDK_SET_VAR -DNDK_SET_VAR -DNDK_SET_VAR -DNDK_SET_VAR -DNDK_SET_VAR -DNDK_SET_VAR -DNDK_SET_VAR -DNDK_SET_VAR -DNDK_UPSTREAM_LIST -DNDK_SET_VAR -DNDK_SET_VAR -Wno-deprecated-declarations -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I modules/ngx_devel_kit/objs -I objs/addon/ndk -I modules/ngx_devel_kit/src -I modules/ngx_devel_kit/objs -I objs/addon/ndk -I /usr/include/postgresql -I /usr/include/postgresql/15/server -I /usr/include -I /usr/include/libxml2 -I objs \
	-o objs/src/core/ngx_slab.o \
	src/core/ngx_slab.c
src/core/ngx_slab.c:906:1: error: no previous prototype for 'ngx_api_slabs_handler' [-Werror=missing-prototypes]
  906 | ngx_api_slabs_handler(ngx_api_entry_data_t data, ngx_api_ctx_t *actx, void *ctx)
      | ^~~~~~~~~~~~~~~~~~~~~

Шаблоны файлов конфигурации

Официальный образ nginx поддерживает возможность шаблонизации файлов конфигурации, например для подстановки значений из переменных окружения (https://hub.docker.com/_/nginx см. Using environment variables in nginx configuration)

Есть ли альтернатива этому в Angie?

GOOD

Looks great. Works great.

angie -V and nginx -V: different results

Thank you for Angie. The problem is below:

user@tower ~]$ angie -V
Angie version: Angie/1.0.0
built by gcc 12.2.0 (GCC) 
configure arguments:

[user@tower ~]$ nginx -V
nginx version: nginx/1.22.1
built with OpenSSL 1.1.1q  5 Jul 2022
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --conf-path=/etc/nginx/nginx.conf --sbin-path=/usr/bin/nginx --pid-path=/run/nginx.pid --lock-path=/run/lock/nginx.lock --user=http --group=http --http-log-path=/var/log/nginx/access.log --error-log-path=stderr --http-client-body-temp-path=/var/lib/nginx/client-body --http-proxy-temp-path=/var/lib/nginx/proxy --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-cc-opt='-march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -flto=auto' --with-ld-opt='-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now -flto=auto' --with-compat --with-debug --with-file-aio --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_degradation_module --with-http_flv_module --with-http_geoip_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-pcre-jit --with-stream --with-stream_geoip_module --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-threads

Добавить возможность проактивных проверок Upstreams

Просьба добавить возможность проактивных проверок Upstreams, как это реализовано в Nginx Plus и Tengine от Alibaba
"Proactive health checks of upstream servers can be performed."
https://github.com/alibaba/tengine

	upstream cluster1 {
		# simple round-robin
		server 192.168.0.1:80;
		server 192.168.0.2:80;

		check interval=3000 rise=2 fall=5 timeout=1000 type=http;
		check_http_send "HEAD / HTTP/1.0\r\n\r\n";
		check_http_expect_alive http_2xx http_3xx;
	}

	upstream cluster2 {
		# simple round-robin
		server 192.168.0.3:80;
		server 192.168.0.4:80;

		check interval=3000 rise=2 fall=5 timeout=1000 type=http;
		check_keepalive_requests 100;
		check_http_send "HEAD / HTTP/1.1\r\nConnection: keep-alive\r\nHost: foo.bar.com\r\n\r\n";
		check_http_expect_alive http_2xx http_3xx;
	}

Документация к модулю:
https://github.com/alibaba/tengine/blob/master/docs/modules/ngx_http_upstream_check_module.md

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.