seniorgod / ifi-tidal-release Goto Github PK
View Code? Open in Web Editor NEWtidal connect application for ARM SBC based on https://github.com/ppy2/ifi-tidal-release
tidal connect application for ARM SBC based on https://github.com/ppy2/ifi-tidal-release
Hello. I was using ifi-tidal-release successfully for long time, streaming from my android mobile. Then I started to use second android, installed Tidal and logged in, but the Pi streamer server is not visible as a device on it. So I have checked on first mobile and server IS visible.
How it is possible that on first phone I can see the server and on second phone, which has exactly same Tidal registration and is connected to same wifi, the server does not show up? Can it be fixed? Thanks, Jan
Hi, thank you for docker writeup
Have couple of questions:
Last run in docker file:
RUN apt-get
Is it missing package?
Also pa does not see my USB device ๐
device#0=sysdefault
device#1=lavrate
device#2=samplerate
device#3=speexrate
device#4=upmix
device#5=vdownmix
device#6=default
Number of devices = 7
However aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: Headphones [bcm2835 Headphones], device 0: bcm2835 Headphones [bcm2835 Headphones]
Subdevices: 7/8
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
Subdevice #4: subdevice #4
Subdevice #5: subdevice #5
Subdevice #6: subdevice #6
Subdevice #7: subdevice #7
card 1: C20 [CA DacMagic 200M 2.0], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 2: vc4hdmi0 [vc4-hdmi-0], device 0: MAI PCM i2s-hifi-0 [MAI PCM i2s-hifi-0]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 3: vc4hdmi1 [vc4-hdmi-1], device 0: MAI PCM i2s-hifi-0 [MAI PCM i2s-hifi-0]
Subdevices: 1/1
Subdevice #0: subdevice #0
I am running PI4 with bullseye
Hello, often when I try to connect and play music, at the connection time, after some time without playing elapsed, I get error and have to restart the service. Any advice?
Feb 03 21:15:52 tidal-pi tidal_connect_application[23225]: [2022-02-03 21:15:52.356] [tisoc] [error] [logger.cpp:25] [http_stream_fetcher.cpp:162] Content-Range is missing from response!
Feb 03 21:15:52 tidal-pi tidal_connect_application[23225]: [2022-02-03 21:15:52.433] [tisoc] [error] [logger.cpp:25] [http_stream_fetcher.cpp:162] Content-Range is missing from response!
Feb 03 21:15:52 tidal-pi tidal_connect_application[23225]: [2022-02-03 21:15:52.510] [tisoc] [error] [logger.cpp:25] [http_stream_fetcher.cpp:162] Content-Range is missing from response!
Feb 03 21:15:52 tidal-pi tidal_connect_application[23225]: [2022-02-03 21:15:52.514] [tisoc] [warning] [logger.cpp:22] [audio_worker.cpp:288] Max connection attempts reached!
It looks like when I play music from my Android TIDAL app to connected Raspberry, nothing is scrobbled to last.fm.
Any advice please?
Hello,
Is there a way to deamonize bin/speaker_controller_application? I tried to make a .service file but no luke.
speaker controller, make good job. When launch in a terminal, I can vol + vol - with my smartphone.
if I try to launch by ./speaker_controller_application &, nothing happen :'(
Is it possible to set pulseaudio to passthrough? I have USB -> S/PDIF converter. When I play audio from Raspberry Pi, I hear very silent clicking sound, about 7 clicks pers second (like scratched CD but quieter). Looks like resampling problem, but I want passthrough as I play uncompressed music. I had this problem before with various linux distros and I always fixed it by adjusting sample rate in /etc/pulse/daemon.conf like here:
default-sample-format = float32ne
default-sample-rate = 44100
alternate-sample-rate = 48000
Or similar. But here with Raspbian OS, it does not help and I tried all combinatons. Any suggestion?
Hi, is there an android version?
Hello
I have and built a system that uses the DAC activity to turn on and off an amplifier and noticed that while using ifi-tidal that it turns on and stays on the entire time.
I would like to have the sound system released while nothing is actually being played back so that my amplifier will turn on and off on its own, rather than me having to manually do so each time I want to listen to music.
Thanks for any tips tricks
Scott
when this application is run. it continues to output.
Aug 09 05:04:15 volumio speaker_controller_application[455]: Error opening terminal: unknown.
Aug 09 05:04:15 volumio systemd[1]: speaker-controller.service: Main process exited, code=exited, status=1/FAILURE
Aug 09 05:04:15 volumio systemd[1]: speaker-controller.service: Failed with result 'exit-code'.
Aug 09 05:04:16 volumio systemd[1]: speaker-controller.service: Service RestartSec=1s expired, scheduling restart.
Aug 09 05:04:16 volumio systemd[1]: speaker-controller.service: Scheduled restart job, restart counter is at 1.
Aug 09 05:04:16 volumio systemd[1]: Stopped Tidal Volume Control.
Aug 09 05:04:16 volumio systemd[1]: Started Tidal Volume Control.
Aug 09 05:04:16 volumio speaker_controller_application[640]: Error opening terminal: unknown.
Aug 09 05:04:16 volumio systemd[1]: speaker-controller.service: Main process exited, code=exited, status=1/FAILURE
Aug 09 05:04:16 volumio systemd[1]: speaker-controller.service: Failed with result 'exit-code'.
Aug 09 05:04:17 volumio systemd[1]: speaker-controller.service: Service RestartSec=1s expired, scheduling restart.
Aug 09 05:04:17 volumio systemd[1]: speaker-controller.service: Scheduled restart job, restart counter is at 2.
Aug 09 05:04:17 volumio systemd[1]: Stopped Tidal Volume Control.
Aug 09 05:04:17 volumio systemd[1]: Started Tidal Volume Control.
Aug 09 05:04:17 volumio speaker_controller_application[642]: Error opening terminal: unknown.
Aug 09 05:04:17 volumio systemd[1]: speaker-controller.service: Main process exited, code=exited, status=1/FAILURE
Aug 09 05:04:17 volumio systemd[1]: speaker-controller.service: Failed with result 'exit-code'.
Aug 09 05:04:18 volumio systemd[1]: speaker-controller.service: Service RestartSec=1s expired, scheduling restart.
Aug 09 05:04:18 volumio systemd[1]: speaker-controller.service: Scheduled restart job, restart counter is at 3.
Aug 09 05:04:18 volumio systemd[1]: Stopped Tidal Volume Control.
Aug 09 05:04:18 volumio systemd[1]: Started Tidal Volume Control.
Aug 09 05:04:18 volumio speaker_controller_application[648]: Error opening terminal: unknown.
Aug 09 05:04:18 volumio systemd[1]: speaker-controller.service: Main process exited, code=exited, status=1/FAILURE
Aug 09 05:04:18 volumio systemd[1]: speaker-controller.service: Failed with result 'exit-code'.
Aug 09 05:04:19 volumio systemd[1]: speaker-controller.service: Service RestartSec=1s expired, scheduling restart.
Aug 09 05:04:19 volumio systemd[1]: speaker-controller.service: Scheduled restart job, restart counter is at 4.
Aug 09 05:04:19 volumio systemd[1]: Stopped Tidal Volume Control.
Aug 09 05:04:19 volumio systemd[1]: Started Tidal Volume Control.
Aug 09 05:04:19 volumio speaker_controller_application[655]: Error opening terminal: unknown.
Aug 09 05:04:19 volumio systemd[1]: speaker-controller.service: Main process exited, code=exited, status=1/FAILURE
Aug 09 05:04:19 volumio systemd[1]: speaker-controller.service: Failed with result 'exit-code'.
Aug 09 05:04:20 volumio systemd[1]: speaker-controller.service: Service RestartSec=1s expired, scheduling restart.
Aug 09 05:04:20 volumio systemd[1]: speaker-controller.service: Scheduled restart job, restart counter is at 5.
Aug 09 05:04:21 volumio systemd[1]: Stopped Tidal Volume Control.
Aug 09 05:04:21 volumio systemd[1]: speaker-controller.service: Start request repeated too quickly.
Aug 09 05:04:21 volumio systemd[1]: speaker-controller.service: Failed with result 'exit-code'.
this is happening on pi 3b+
there is no useful information to debug. what can I do here?
Hi, I install it into a rapsberry pi 4b, and runs well but only for one and half song, then stops hearing and music continues, i need to restart services or even reboot raspberry to make it work again.. in service status says broken pipe.. could help me, i have reinstalled more than once keeps happening the same.. thanks!!
Hi,
I think maybe the tidal app has been upgraded or the certificate has become invalid I don't know exactly, but the TLS handshake between the Android app and the ifi connect service won't work any more.
tidal_connect_application[1347]: [2022-08-20 10:22:23] [error] handle_transport_init received error: TLS handshake failed
This is what it looks like in tcpdump. 129.85 is my raspberry pi while 129.82 is my Android device.
Hi, where the binaries are comes from, how legal is to use, what is inside?
https://github.com/ppy2 does not have any thing related to tidal connect from what I can see.
I have a super strange error running TIDAL Connect Docker on my HiFiBerry. After the installation everything worked as expected for month. Then I switched the HiFiBerry off for two weeks and afterwards the Docker container isn't really working anymore. I even tried to re-install it. The docker logs showing this error:
# docker-compose up
tidal_connect is up-to-date
Attaching to tidal_connect
tidal_connect | Starting Speaker Application in Background (TMUX)
tidal_connect | Starting TIDAL Connect..
tidal_connect | STARTING TidalConnect services, version: 1.1.3
tidal_connect | ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.front
tidal_connect | ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
tidal_connect | ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
tidal_connect | ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
tidal_connect | ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround21
tidal_connect | ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround21
tidal_connect | ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround40
tidal_connect | ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround41
tidal_connect | ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround50
tidal_connect | ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround51
tidal_connect | ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround71
tidal_connect | ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.hdmi
tidal_connect | ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.hdmi
tidal_connect | ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem
tidal_connect | ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem
tidal_connect | ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline
tidal_connect | ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline
tidal_connect | Cannot connect to server socket err = No such file or directory
tidal_connect | Cannot connect to server request channel
tidal_connect | jack server is not running or cannot be started
tidal_connect | JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
tidal_connect | JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
tidal_connect | tidal_connect_application: simple-watch.c:99: avahi_simple_poll_wakeup: Assertion `s' failed.
tidal_connect | /entrypoint.sh: line 19: 12 Aborted (core dumped) /app/ifi-tidal-release/bin/tidal_connect_application --tc-certificate-path "/app/ifi-tidal-release/id_certificate/IfiAudio_ZenStream.dat" --playback-device "${PLAYBACK_DEVICE}" -f "${FRIENDLY_NAME}" --codec-mpegh true --codec-mqa ${MQA_CODEC} --model-name "${MODEL_NAME}" --disable-app-security false --disable-web-security false --enable-mqa-passthrough ${MQA_PASSTHROUGH} --log-level 3 --enable-websocket-log "0"
tidal_connect | TIDAL Connect Container Stopped..
tidal_connect | Starting Speaker Application in Background (TMUX)
tidal_connect | Starting TIDAL Connect..
tidal_connect | STARTING TidalConnect services, version: 1.1.3
tidal_connect | ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.front
tidal_connect | ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
tidal_connect | ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
tidal_connect | ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
tidal_connect | ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround21
tidal_connect | ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround21
tidal_connect | ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround40
tidal_connect | ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround41
tidal_connect | ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround50
tidal_connect | ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround51
tidal_connect | ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround71
tidal_connect | ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.hdmi
tidal_connect | ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.hdmi
tidal_connect | ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem
tidal_connect | ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem
tidal_connect | ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline
tidal_connect | ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline
tidal_connect | Cannot connect to server socket err = No such file or directory
tidal_connect | Cannot connect to server request channel
tidal_connect | jack server is not running or cannot be started
tidal_connect | JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
tidal_connect | JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
tidal_connect | /entrypoint.sh: line 19: 12 Segmentation fault (core dumped) /app/ifi-tidal-release/bin/tidal_connect_application --tc-certificate-path "/app/ifi-tidal-release/id_certificate/IfiAudio_ZenStream.dat" --playback-device "${PLAYBACK_DEVICE}" -f "${FRIENDLY_NAME}" --codec-mpegh true --codec-mqa ${MQA_CODEC} --model-name "${MODEL_NAME}" --disable-app-security false --disable-web-security false --enable-mqa-passthrough ${MQA_PASSTHROUGH} --log-level 3 --enable-websocket-log "0"
tidal_connect | TIDAL Connect Container Stopped..
tidal_connect | Starting Speaker Application in Background (TMUX)
tidal_connect | Starting TIDAL Connect..
tidal_connect | STARTING TidalConnect services, version: 1.1.3
tidal_connect | ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.front
tidal_connect | ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
tidal_connect | ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
tidal_connect | ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
tidal_connect | ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround21
tidal_connect | ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround21
tidal_connect | ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround40
tidal_connect | ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround41
tidal_connect | ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround50
tidal_connect | ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround51
tidal_connect | ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround71
tidal_connect | ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.hdmi
tidal_connect | ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.hdmi
tidal_connect | ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem
tidal_connect | ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem
tidal_connect | ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline
tidal_connect | ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline
tidal_connect | Cannot connect to server socket err = No such file or directory
tidal_connect | Cannot connect to server request channel
tidal_connect | jack server is not running or cannot be started
tidal_connect | JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
tidal_connect | JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
tidal_connect | STARTED TidalConnect services.
tidal_connect | [2023-02-16 09:15:24.919] [tisoc] [warning] [PlaybackControllerImpl.cpp:472] Illegal state:1
tidal_connect | [2023-02-16 09:15:42.681] [tisoc] [error] [logger.cpp:25] [operation_curl.cpp:258] curl_easy_perform failed: Timeout was reached - Resolving timed out after 5514 milliseconds
tidal_connect | [2023-02-16 09:15:42.681] [tisoc] [error] [logger.cpp:25] [http_stream_fetcher.cpp:162] Content-Range is missing from response!
tidal_connect | [2023-02-16 09:15:48.211] [tisoc] [error] [logger.cpp:25] [operation_curl.cpp:258] curl_easy_perform failed: Timeout was reached - Resolving timed out after 5515 milliseconds
tidal_connect | [2023-02-16 09:15:48.212] [tisoc] [error] [logger.cpp:25] [http_stream_fetcher.cpp:162] Content-Range is missing from response!
tidal_connect | [2023-02-16 09:15:53.740] [tisoc] [error] [logger.cpp:25] [operation_curl.cpp:258] curl_easy_perform failed: Timeout was reached - Resolving timed out after 5513 milliseconds
tidal_connect | [2023-02-16 09:15:53.740] [tisoc] [error] [logger.cpp:25] [http_stream_fetcher.cpp:162] Content-Range is missing from response!
tidal_connect | [2023-02-16 09:15:53.743] [tisoc] [warning] [logger.cpp:22] [audio_worker.cpp:288] Max connection attempts reached!
tidal_connect | [2023-02-16 09:16:27] [info] asio async_shutdown error: asio.misc:2 (End of file)
# cat docker-compose.yml
version: '2.2'
services:
tidal-connect:
container_name: tidal_connect
env_file:
- .env
image: edgecrush3r/tidal-connect:latest
tty: true
network_mode: host
devices:
- /dev/snd
volumes:
- ./entrypoint.sh:/entrypoint.sh
- /var/run/dbus:/var/run/dbus
restart: always
dns:
- 8.8.8.8
# cat .env
FRIENDLY_NAME=hifiberry
MODEL_NAME=hifiberry
MQA_PASSTHROUGH=true
MQA_CODEC=false
PLAYBACK_DEVICE=snd_rpi_hifiberry_digi: HifiBerry Digi HiFi wm8804-spdif-0 (hw:0,0)
What is going on here? As soon as I connect via TIDAL to my TIDAL Connect server all the errors appear:
tidal_connect | [2023-02-16 09:15:24.919] [tisoc] [warning] [PlaybackControllerImpl.cpp:472] Illegal state:1
tidal_connect | [2023-02-16 09:15:42.681] [tisoc] [error] [logger.cpp:25] [operation_curl.cpp:258] curl_easy_perform failed: Timeout was reached - Resolving timed out after 5514 milliseconds
tidal_connect | [2023-02-16 09:15:42.681] [tisoc] [error] [logger.cpp:25] [http_stream_fetcher.cpp:162] Content-Range is missing from response!
tidal_connect | [2023-02-16 09:15:48.211] [tisoc] [error] [logger.cpp:25] [operation_curl.cpp:258] curl_easy_perform failed: Timeout was reached - Resolving timed out after 5515 milliseconds
tidal_connect | [2023-02-16 09:15:48.212] [tisoc] [error] [logger.cpp:25] [http_stream_fetcher.cpp:162] Content-Range is missing from response!
tidal_connect | [2023-02-16 09:15:53.740] [tisoc] [error] [logger.cpp:25] [operation_curl.cpp:258] curl_easy_perform failed: Timeout was reached - Resolving timed out after 5513 milliseconds
tidal_connect | [2023-02-16 09:15:53.740] [tisoc] [error] [logger.cpp:25] [http_stream_fetcher.cpp:162] Content-Range is missing from response!
tidal_connect | [2023-02-16 09:15:53.743] [tisoc] [warning] [logger.cpp:22] [audio_worker.cpp:288] Max connection attempts reached!
tidal_connect | [2023-02-16 09:16:27] [info] asio async_shutdown error: asio.misc:2 (End of file)
Music tries to be streamed but I cannot hear something. And as soon tidal_connect | [2023-02-16 09:16:27] [info] asio async_shutdown error: asio.misc:2 (End of file)
appears my TIDAL app disconnect from the TIDAL Connect server.
HiFiBerry OS: 20221128
Im using Moode Audio OS. Plays fine though my USB DAC. No other HDMI or USB devices plugged into the RPI4.
But this tool cannot see the DAC, the devices file does not show it.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.