nfive / nfive Goto Github PK
View Code? Open in Web Editor NEWNFive is a .NET plugin platform for FiveM
Home Page: https://nfive.io
License: GNU General Public License v3.0
NFive is a .NET plugin platform for FiveM
Home Page: https://nfive.io
License: GNU General Public License v3.0
Emitting nfive:server:sessionmanager:disconnectPlayer
from client to server in order to disconnect the player triggers a KeyNotFoundException on server.
Server/Rpc/Client.cs#L47 where the exception has been thrown.
nfive:server:sessionmanager:disconnectPlayer
from client to server.Player can be disconnected without throwing an Exception.
[ script:nfive] 2022-07-06T14:16:11 [Trace] [Client#1|RPC] Emit: "nfive:server:sessionmanager:disconnectPlayer" with 1 payload:
[ script:nfive] 2022-07-06T14:16:11 [Trace] [Client#1|RPC] "We appreciate your sacrifice"
[ script:nfive] 2022-07-06T14:16:11 [Trace] [FiveM] Triggered: playerDropped
[ script:nfive] 2022-07-06T14:16:11 [Trace] [ClientList] Client disconnected: Jesus Christus [1]
[ script:nfive] 2022-07-06T14:16:11 [Debug] [Session] [3a04e597-fd52-30a6-de33-12b01cebafc9] Player "Jesus Christus" disconnected: We appreciate your sacrifice
[ script:nfive] Error invoking callback for event nfive:log:mirror: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ----> System.Collections.Generic.KeyNotFoundException: The given key 'ip' was not present in the dictionary.
[ script:nfive] at System.Collections.Generic.Dictionary`2[TKey,TValue].get_Item (TKey key) [0x0001e] in <fbc4ec45371543bfba3678ebb82caf6d>:0
[ script:nfive] at NFive.Server.Rpc.Client..ctor (System.Int32 handle) [0x0002f] in <bb2f646511cd4cf580a67db5df103ce9>:0
[ script:nfive] at NFive.Server.Rpc.RpcManager+<>c__DisplayClass28_0.<InternalOn>b__0 (System.Byte[] data) [0x000a7] in <bb2f646511cd4cf580a67db5df103ce9>:0
[ script:nfive] at (wrapper managed-to-native) System.Reflection.RuntimeMethodInfo.InternalInvoke(System.Reflection.RuntimeMethodInfo,object,object[],System.Exception&)
[ script:nfive] at System.Reflection.RuntimeMethodInfo.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x0006a] in <fbc4ec45371543bfba3678ebb82caf6d>:0
[ script:nfive] Exception_EndOfInnerExceptionStack
[ script:nfive] at System.Reflection.RuntimeMethodInfo.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00083] in <fbc4ec45371543bfba3678ebb82caf6d>:0
[ script:nfive] at System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) [0x00000] in <fbc4ec45371543bfba3678ebb82caf6d>:0
[ script:nfive] at System.Delegate.DynamicInvokeImpl (System.Object[] args) [0x000e7] in <fbc4ec45371543bfba3678ebb82caf6d>:0
[ script:nfive] at System.MulticastDelegate.DynamicInvokeImpl (System.Object[] args) [0x00008] in <fbc4ec45371543bfba3678ebb82caf6d>:0
[ script:nfive] at System.Delegate.DynamicInvoke (System.Object[] args) [0x00000] in <fbc4ec45371543bfba3678ebb82caf6d>:0
[ script:nfive] at CitizenFX.Core.EventHandlerEntry.Invoke (System.String sourceString, System.Object[] args) [0x00064] in C:\gl\builds\4ff63adb\0\cfx\fivem\code\client\clrcore\EventHandlerDictionary.cs:107
[ script:nfive] Error invoking callback for event nfive:server:sessionmanager:disconnectPlayer: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.Collections.Generic.KeyNotFoundException: The given key 'ip' was not present in the dictionary.
[ script:nfive] at System.Collections.Generic.Dictionary`2[TKey,TValue].get_Item (TKey key) [0x0001e] in <fbc4ec45371543bfba3678ebb82caf6d>:0
[ script:nfive] at NFive.Server.Rpc.Client..ctor (System.Int32 handle) [0x0002f] in <bb2f646511cd4cf580a67db5df103ce9>:0
[ script:nfive] at NFive.Server.Rpc.RpcManager+<>c__DisplayClass28_0.<InternalOn>b__0 (System.Byte[] data) [0x000a7] in <bb2f646511cd4cf580a67db5df103ce9>:0
[ script:nfive] at (wrapper managed-to-native) System.Reflection.RuntimeMethodInfo.InternalInvoke(System.Reflection.RuntimeMethodInfo,object,object[],System.Exception&)
[ script:nfive] at System.Reflection.RuntimeMethodInfo.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x0006a] in <fbc4ec45371543bfba3678ebb82caf6d>:0
[ script:nfive] Exception_EndOfInnerExceptionStack
[ script:nfive] at System.Reflection.RuntimeMethodInfo.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00083] in <fbc4ec45371543bfba3678ebb82caf6d>:0
[ script:nfive] at System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) [0x00000] in <fbc4ec45371543bfba3678ebb82caf6d>:0
[ script:nfive] at System.Delegate.DynamicInvokeImpl (System.Object[] args) [0x000e7] in <fbc4ec45371543bfba3678ebb82caf6d>:0
[ script:nfive] at System.MulticastDelegate.DynamicInvokeImpl (System.Object[] args) [0x00008] in <fbc4ec45371543bfba3678ebb82caf6d>:0
[ script:nfive] at System.Delegate.DynamicInvoke (System.Object[] args) [0x00000] in <fbc4ec45371543bfba3678ebb82caf6d>:0
[ script:nfive] at CitizenFX.Core.EventHandlerEntry.Invoke (System.String sourceString, System.Object[] args) [0x00064] in C:\gl\builds\4ff63adb\0\cfx\fivem\code\client\clrcore\EventHandlerDictionary.cs:107
The NUI API needs some cleanup and unification to be more in line with everything else.
(i.e. change 'attach/detach' to 'on/off')
Is it still possible to use existing non NFive resources?
Currently all RPC sending and recieving generates a long debug output log. It is currently possible to control what log level is used for all RPC events via config/nfive.yml
however this will toggle all output as RPC is only raise at hardcoded levels.
The logger configuration should be improved to support controlling the log level for RPC events per event or with a wildcard, i.e something like:
log:
core: Debug
rpc:
# Default log level for RPC events unless overriden
default: Debug
except:
# Don't output
- nfive:sessionmanager:*
# Support negative matches
- !nfive:*:clientConnecting
...
Sometimes when I disconnect from the server, it crashes and shows the following in the console:
http://paste.fyi/FFCSqgGCt
The Time Zone .NET format is different between Windows and Linux OS.
So when I try to run the NFive server using mono nfpm.exe start
I get this error : System.IO.FileNotFoundException: Could not find file "/usr/share/zoneinfo/Pacific Standard Time"
On this website, they talk about this project : https://github.com/mj1856/TimeZoneConverter
That will bind the Linux OS format automatically.
Develop a shim that allows testing/development of in-game UI features without launching the game.
This conversion causes an error on Linux platforms as it assumes that the system time zone is in Windows format.
NFive/Server/Controllers/SessionController.cs
Lines 342 to 345 in b490bf0
[ 1561000] [ GTAProcess] MainThrd/ Failed to run a tick for Program: System.BadImageFormatException: Error verifying FamilyV.Shops.Client.ShopsService:<OnTick>b__4_0 (FamilyV.Shops.Client.Models.Store): Cannot load method from token 0x0a000025 for call at 0x0058
[ 1561016] [ GTAProcess] MainThrd/ at System.Collections.Generic.List`1[T].ForEach (System.Action`1[T] action) [0x00024] in <74fbbe963b7e417b8d715b858c5c584f>:0
[ 1561016] [ GTAProcess] MainThrd/ at FamilyV.Shops.Client.ShopsService.OnTick () [0x00012] in <16287407160645298a105ea4c4ba446d>:0
[ 1561031] [ GTAProcess] MainThrd/ at System.Threading.Tasks.Task.InnerInvoke () [0x0000f] in <74fbbe963b7e417b8d715b858c5c584f>:0
[ 1561031] [ GTAProcess] MainThrd/ at System.Threading.Tasks.Task.Execute () [0x00010] in <74fbbe963b7e417b8d715b858c5c584f>:0
[PublicAPI]
public class ShopsService : Service
{
private Configuration config;
private List<Store> stores;
public ShopsService(ILogger logger, ITickManager ticks, ICommunicationManager comms, ICommandManager commands, IOverlayManager overlay, User user) : base(logger, ticks, comms, commands, overlay, user) { }
public override async Task Started()
{
// Request server configuration
this.config = await this.Comms.Event(ShopsEvents.Configuration).ToServer().Request<Configuration>();
this.stores = await this.Comms.Event(ShopsEvents.GetStores).ToServer().Request<List<Store>>();
// Attach a tick handler
this.Ticks.On(OnTick);
}
private void OnTick()
{
this.stores?.ForEach(store =>
{
this.Logger.Debug(store.Name);
World.DrawMarker(MarkerType.VerticleCircle, new Vector3(store.Position.X, store.Position.Y, store.Position.Z), Vector3.Zero, Vector3.Zero, new Vector3(1.5f, 1.5f, 1.5f), Color.Green);
});
}
}
The client service.
I'm getting this error after installing my plugin, any clue on why?
The Tickhandler API needs some cleanup and unification to be more in line with everything else.
(i.e. change 'attach/detach' to 'on/off')
Hi, im trying to use NFive, but when i try to connect to the server, i cant enter, im stuck on loading screen.
I think i did everything right, i already try 3 / 4 times reinstall it but i got always the same problem.
This is my installation tree files and folders - https://pastebin.com/raw/dBM6Szac
Im trying it at first in my computer, for later put in my VPS.
RPC handles Client>Server communications.
Events handles local communications (i.e. server>server or client>same client).
We can simplify this greatly into a singular, combined 'communications' API that will abstract whether or not to use RPC/events away from the developer and simplify development.
Currently the connecting user's FiveM license ID is used as their GUID for clients and sessions, however when FiveM server is run with sv_lan on, this value isnt provided and clients cannot connect.
We need to either use another valid as the client ID or formally not support sv_lan mode.
Hey, tried installing the server through nfpm with NFive, though on load through the FiveM client it gets stuck at Awaiting scripts?
Event is only way?
2019-06-01T00:38:27 [Debug] [Session] Player Dropped: Igirisujin | Reason: Couldn't load resource nfive. :(
2019-06-01T00:38:27 [Debug] [ClientList] Client disconnected: Igirisujin
2019-06-01T00:38:27 [Trace] [Session] Starting reconnect grace checks
2019-06-01T00:38:27 [Debug] [Session] [39ee226e-e510-d796-087a-f3168a591d09] Player "Igirisujin" disconnected: Couldn't load resource nfive. :(
server thread hitch warning: timer interval of 179 milliseconds
Sending heartbeat to live-internal.fivem.net:30110
Unhandled exception: System.Collections.Generic.KeyNotFoundException: The given key 'ip' was not present in the dictionary.
at System.Collections.Generic.Dictionary2[TKey,TValue].get_Item (TKey key) [0x0001e] in <fbc4ec45371543bfba3678ebb82caf6d>:0 at NFive.Server.Rpc.Client..ctor (System.Int32 handle) [0x0002f] in G:\Workspace\NFiveSDK\NFive\Server\Rpc\Client.cs:41 at NFive.Server.Rpc.Client..ctor (System.String handle) [0x00000] in G:\Workspace\NFiveSDK\NFive\Server\Rpc\Client.cs:32 at NFive.Server.Controllers.SessionController.OnHostingSessionRaw (CitizenFX.Core.Player player) [0x0002c] in G:\Workspace\NFiveSDK\NFive\Server\Controllers\SessionController.cs:72 at System.Runtime.CompilerServices.AsyncMethodBuilderCore+<>c.<ThrowAsync>b__7_1 (System.Object state) [0x00000] in <fbc4ec45371543bfba3678ebb82caf6d>:0 at System.Threading.QueueUserWorkItemCallback.WaitCallback_Context (System.Object state) [0x00007] in <fbc4ec45371543bfba3678ebb82caf6d>:0 at System.Threading.ExecutionContext.RunInternal (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state, System.Boolean preserveSyncCtx) [0x00071] in <fbc4ec45371543bfba3678ebb82caf6d>:0 at System.Threading.ExecutionContext.Run (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state, System.Boolean preserveSyncCtx) [0x00000] in <fbc4ec45371543bfba3678ebb82caf6d>:0 at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem () [0x00021] in <fbc4ec45371543bfba3678ebb82caf6d>:0 at System.Threading.ThreadPoolWorkQueue.Dispatch () [0x00074] in <fbc4ec45371543bfba3678ebb82caf6d>:0 at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback () [0x00000] in <fbc4ec45371543bfba3678ebb82caf6d>:0 GlobalError: Unhandled exception in Mono script environment: System.Collections.Generic.KeyNotFoundException: The given key 'ip' was not present in the dictionary. at System.Collections.Generic.Dictionary
2[TKey,TValue].get_Item (TKey key) [0x0001e] in :0
at NFive.Server.Rpc.Client..ctor (System.Int32 handle) [0x0002f] in G:\Workspace\NFiveSDK\NFive\Server\Rpc\Client.cs:41
at NFive.Server.Rpc.Client..ctor (System.String handle) [0x00000] in G:\Workspace\NFiveSDK\NFive\Server\Rpc\Client.cs:32
at NFive.Server.Controllers.SessionController.OnHostingSessionRaw (CitizenFX.Core.Player player) [0x0002c] in G:\Workspace\NFiveSDK\NFive\Server\Controllers\SessionController.cs:72
at System.Runtime.CompilerServices.AsyncMethodBuilderCore+<>c.b__7_1 (System.Object state) [0x00000] in :0
at System.Threading.QueueUserWorkItemCallback.WaitCallback_Context (System.Object state) [0x00007] in :0
at System.Threading.ExecutionContext.RunInternal (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state, System.Boolean preserveSyncCtx) [0x00071] in :0
at System.Threading.ExecutionContext.Run (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state, System.Boolean preserveSyncCtx) [0x00000] in :0
at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem () [0x00021] in :0
at System.Threading.ThreadPoolWorkQueue.Dispatch () [0x00074] in :0
at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback () [0x00000] in :0
at System.Collections.Generic.Dictionary`2[TKey,TValue].get_Item (TKey key) [0x0001e] in :0
at NFive.Server.Rpc.Client..ctor (System.Int32 handle) [0x0002f] in G:\Workspace\NFiveSDK\NFive\Server\Rpc\Client.cs:41
at NFive.Server.Rpc.Client..ctor (System.String handle) [0x00000] in G:\Workspace\NFiveSDK\NFive\Server\Rpc\Client.cs:32
at NFive.Server.Controllers.SessionController.OnHostingSessionRaw (CitizenFX.Core.Player player) [0x0002c] in G:\Workspace\NFiveSDK\NFive\Server\Controllers\SessionController.cs:72
at System.Runtime.CompilerServices.AsyncMethodBuilderCore+<>c.b__7_1 (System.Object state) [0x00000] in :0
at System.Threading.QueueUserWorkItemCallback.WaitCallback_Context (System.Object state) [0x00007] in :0
at System.Threading.ExecutionContext.RunInternal (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state, System.Boolean preserveSyncCtx) [0x00071] in :0
at System.Threading.ExecutionContext.Run (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state, System.Boolean preserveSyncCtx) [0x00000] in :0
at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem () [0x00021] in :0
at System.Threading.ThreadPoolWorkQueue.Dispatch () [0x00074] in :0
at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback () [0x00000] in :0
Server intermittently crashes on client connection:
System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary.
at System.Collections.Generic.Dictionary`2[TKey,TValue].get_Item (TKey key) [0x0001e] in <0123fd5b1a1040fe9d70a7e0d4b28acb>:0
at NFive.SessionManager.Server.SessionManagerController+<MonitorSession>d__18.MoveNext () [0x00230] in <07e38c9d6ec745a8b1e821772c132a21>:0```
Ubuntu 18.04
Mono 5.20.19
Mariadb 10.1.40
Installed NFive as described and when starting with the command 'mono nfpm.exe start' I get the error...
An unhandled application error has occured:
Unable to locate FiveM server in the directory tree.
The server folder and all contents are there.
Mariadb does not like this is her /etc/mysql/conf.d/mysql.cnf file
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_520_ci
When I run the command 'mariadb --version, she replies with mariadb: unknown variable 'character-set-server=utf8mb4'
Thanks
Hey,
I am trying to install plugins via nfpm and I get this error:
An unhandled application error has occurred:
The request was aborted: Could not create SSL/TLS secure channel.
log:
C:\Users\Administrator\Desktop\test>nfpm install NFive/plugin-loadingscreen
https://hub.nfive.io/api/project/NFive/plugin-loadingscreen.json
An unhandled application error has occurred:
The request was aborted: Could not create SSL/TLS secure channel.
Hi everyone, after setup server i got infinity loading screen with red square at the top left corner (its appearing when 1-2 seconds left for joining. Screenshot is attached. And here is server log:
INFO: No channel links found in configuration file.
Found new resource nfive in C:/Test/resources//nfive
Couldn't find resource sessionmanager.
Resolved live-internal.fivem.net:30110 to 178.32.9.100:30110
Loaded NFive.Server.net, Version=0.1.0.31, Culture=neutral, PublicKeyToken=null into ScriptDomain_1025823596
Loaded NFive.SDK.Server.net, Version=0.1.0.11, Culture=neutral, PublicKeyToken=null into ScriptDomain_1025823596
Loaded NFive.SDK.Core.net, Version=0.1.0.11, Culture=neutral, PublicKeyToken=null into ScriptDomain_1025823596
Loaded EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 into ScriptDomain_1025823596
Loaded NFive.SDK.Plugins, Version=0.1.0.5, Culture=neutral, PublicKeyToken=null into ScriptDomain_1025823596
Loaded SemVer, Version=1.2.0.0, Culture=neutral, PublicKeyToken=a89bb7dc6f7a145c into ScriptDomain_1025823596
Loaded YamlDotNet, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null into ScriptDomain_1025823596
2018-10-05T22:54:32 [Debug] [RPC] "rconCommand" attached to "<>c__DisplayClass1_0.<.ctor>b__0(System.String command, System.Collections.Generic.List`1[System.Object] objArgs)"
Exception loading assembly I18N.Rare: System.IO.FileNotFoundException: Unable to find the specified file.
Server stack trace:
at System.Runtime.InteropServices.Marshal.ThrowExceptionForHR (System.Int32 errorCode) [0x0000a] in <0123fd5b1a1040fe9d70a7e0d4b28acb>:0
at (wrapper cominterop) CitizenFX.Core.IScriptHost:OpenHostFile (string)
at (wrapper cominterop-invoke) CitizenFX.Core.IScriptHost:OpenHostFile (string)
at CitizenFX.Core.MonoScriptRuntime+WrapScriptHost.OpenHostFile (System.String fileName) [0x00000] in C:\gl\builds\4ff63adb\0\cfx\fivem\code\client\clrcore\MonoScriptRuntime.cs:266
at (wrapper remoting-invoke-with-check) CitizenFX.Core.MonoScriptRuntime+WrapScriptHost:OpenHostFile (string)
at (wrapper xdomain-dispatch) CitizenFX.Core.MonoScriptRuntime+WrapScriptHost:OpenHostFile (object,byte[]&,byte[]&,string)
Exception rethrown at [0]:
at (wrapper xdomain-invoke) CitizenFX.Core.MonoScriptRuntime+WrapScriptHost:OpenHostFile (string)
at CitizenFX.Core.InternalManager.LoadAssembly (System.String name) [0x00000] in C:\gl\builds\4ff63adb\0\cfx\fivem\code\client\clrcore\InternalManager.cs:120
2018-10-05T22:54:35 [Debug] [Events] "request:serverBootTime" attached to "DatabaseController.<.ctor>b__2_0()"
2018-10-05T22:54:35 [Debug] [Events] "request:lastServerBootTime" attached to "DatabaseController.<.ctor>b__2_1()"
2018-10-05T22:54:35 [Debug] [Events] "request:lastServerActiveTime" attached to "DatabaseController.<.ctor>b__2_2()"
2018-10-05T22:54:35 [Info] Loading NFive/[email protected]
2018-10-05T22:54:35 [Debug] [Events] Fire: "serverInitialized" with 0 payload(s):
2018-10-05T22:54:35 [Info] 1 plugins loaded, 1 controller(s) created
Instantiated instance of script NFive.Server.Program.
Started resource nfive
Authenticating server license key...
Server license keycfx> authentication succeeded. Welcome!
Sending heartbeat to live-internal.fivem.net:30110
Sending heartbeat to live-internal.fivem.net:30110
Hey there,
after a new setup with nfpm setup and after that nfpm start, nfive resource loading failed.
Starting server...
Press Ctrl+C to exit
Creating script environments for _cfx_internal
Found new resource nfive in C:/fivem/resources//nfive
Resource loading for nfive failed:
Could not open resource metadata file citizen:/scripting/lua/json.lua.
�[93mWarning: Could not load rpc_natives.json. Is the server running from the correct directory, and is citizen_dir set?
�[0m�[93mCouldn't find resource sessionmanager.�[0m
�[93mCouldn't find resource webadmin.�[0m
�[93mCouldn't find resource monitor.�[0m
Started resource nfive
Authenticating server license key...
Server license key authentication succeeded. Welcome!
cfx> Sending heartbeat to https://servers-ingress-live.fivem.net/ingress
Tested on a second computer but the same problem.
nfpm.exe is in the same directory as the server
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.