Code Monkey home page Code Monkey logo

xlua-framework's People

Contributors

insama avatar lizijie avatar smilehao avatar xiaopizi19 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

xlua-framework's Issues

几处有疑问的地方

1

如图在LoadAssetBundleAsync中对依赖包添加了引用,我的理解是这里的引用应该是loader来持有,但是loader在OnProsessingAssetBundleAsyncLoader 中只是解除了对当前assetbundle的引用持有,却没有处理依赖的持有

mac电脑运行报错404

使用mac电脑运行项目,editor模式下没有问题,但是simulator下就会报404错。错误发生在:启动资源管理模块时->1.加载Assetbundle文件。实际是webRequesting的url出了问题。

感觉lua里取ui类别componen的t操作有些复杂

有一个动态创建的节点(listItem)已在inspector面板挂有UIImage,脚本里要设置sprite。
我以为这要就可以了

local img =  UIUtil.FindImage(trans, "Image")
img:SetSpriteName("xxxx")

但实际情况,img是UnityEngin.UI.UIImage,并不是UIImage.lua里的那个UIImage。按目前框架一般按如下操作

local img_trans = UIUtil.FindTrans(trans, "Image")</br>
local img = self:GetComponent(UIImage, img_trans .gameObject)
if img == nil then
    img = self:AddComponent(UIImage, img_trans .gameObject)
end
img:SetSpriteName("xxxx")

或许可以再简单些,但是这里的节点是动态创建,传取self:GetComponent的节点路径对view来说不能预先定义

local img_path = "Image"
 local img = self:GetComponent(UIImage, img_path)
if img == nil then
    img = self:AddComponent(UIImage, img_path)
end
img:SetSpriteName("xxxx")

另外,有一个地方可能对于无感知的使用者产生误解。
已在inspector挂了UIImage,为何让使用者在lua里还要AddComponent?是否可以将AddComponent隐藏在框架/接口内部?

切换场景问题

切换场景的时候有可能会出现切换场景前还未加载完成的界面在切换场景的时候需要销毁导致报错
也就是销毁还未加载完成的界面会报错

关于BaseClass 析构函数的问题

从BaseClass 的代码上看 是通过 obj.Delete 来触发析构函数的

但是并没有 obj.Delete 在被gc 之后的调用..所以不知道这边是怎么处理的

自己尝试了一下,强制gc 后并不触发对象的__delete

unity2018 切换为外网时候 www报错

错误信息如下
12/21/2018 2:07:40 PM -- url http://183.136.223.183:10080/startup UnityEngine.Debug:Log(Object) Logger:Log(String, Object[]) (at Assets/Scripts/Common/Logger/Logger.cs:30) <DoHttpPost>c__Iterator1:MoveNext() (at Assets/Scripts/Common/Http/SimpleHttp.cs:102) UnityEngine.MonoBehaviour:StartCoroutine(IEnumerator) SimpleHttp:StartHttp(HttpInfo) (at Assets/Scripts/Common/Http/SimpleHttp.cs:87) SimpleHttp:HttpPost(String, Dictionary2, Byte[], Action1, Single) (at Assets/Scripts/Common/Http/SimpleHttp.cs:72) <OutnetGetUrlList>c__Iterator8:MoveNext() (at Assets/Scripts/GameLaunch/AssetbundleUpdater.cs:367) UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)

下面是HttpInfo数据的输出
image

如何下外网测试服务器目录
image

您好我想请问下是我目录设置的不对的原因 还是unity2018 www的使用机制不对

资源管理模块自动设置常驻包问题

实际测试发现:在AssetBundleManager Initialize()函数中自动根据依赖关系设置常驻包,循环的复杂度太高,实际上Bundle数量达到一定量(我们在研项目的Bundle量就会卡死,大约350M大小,粒度比较小)就卡死了,可以优化成O(n)的复杂度,不过我这里直接在打Bundle之前提前统计好存了下来

这段代码有问题:
foreach (var curAssetbundleName in allAssetbundleNames)
{
if (string.IsNullOrEmpty(curAssetbundleName))
{
continue;
}

            int count = 0;
            foreach (var checkAssetbundle in allAssetbundleNames)
            {
                if (checkAssetbundle == curAssetbundleName || string.IsNullOrEmpty(checkAssetbundle))
                {
                    continue;
                }

                var allDependencies = manifest.GetAllDependencies(checkAssetbundle);
                if (Array.IndexOf(allDependencies, curAssetbundleName) >= 0)
                {
                    count++;
                    if (count >= 2)
                    {
                        break;
                    }
                }
            }

            // 说明:设置被依赖数量为1的AB包为常驻包的理由详细情况见AssetBundleAsyncLoader.cs那一大堆注释
            // TODO:1)目前已知Unity5.3版本和Unity5.5版本没问题,其它试过的几个版本都有问题,如果你使用的版本也有问题,需要修改这里的宏
            //       2)整套AB包括压缩格式可能都要重新设计,这个以后有时间再去尝试

#if !UNITY_5_3 && !UNITY_5_5
if (count >= 1)
#else
if (count >= 2)
#endif
{
// SetAssetBundleResident(curAssetbundleName, true);
}
}

typo - UILayer.PopWindowO(r)der

Hi
I found a typo at Assets\LuaScripts\Framework\UI\Component\UILayer.lua:62:
UILayer.PopWindowOder -> UILayer.PopWindowOrder

PackageTool -> Copy To StreamingAsset 按钮点击后抛出ArgumentException异常

Unity版本:

2018.4.0f1

异常信息:

ArgumentException: parsing "[^A-Za-z0-9\_\-\.\:\,\/\@\\]" - Unrecognized escape sequence \_.
System.Text.RegularExpressions.RegexParser.ScanCharEscape () (at <3845a180c26b4889bc2d47593a665814>:0)
System.Text.RegularExpressions.RegexParser.ScanCharClass (System.Boolean caseInsensitive, System.Boolean scanOnly) (at <3845a180c26b4889bc2d47593a665814>:0)
System.Text.RegularExpressions.RegexParser.CountCaptures () (at <3845a180c26b4889bc2d47593a665814>:0)
System.Text.RegularExpressions.RegexParser.Parse (System.String re, System.Text.RegularExpressions.RegexOptions op) (at <3845a180c26b4889bc2d47593a665814>:0)
System.Text.RegularExpressions.Regex..ctor (System.String pattern, System.Text.RegularExpressions.RegexOptions options, System.TimeSpan matchTimeout, System.Boolean useCache) (at <3845a180c26b4889bc2d47593a665814>:0)
System.Text.RegularExpressions.Regex..ctor (System.String pattern) (at <3845a180c26b4889bc2d47593a665814>:0)
AssetBundles.ExecuteInternalMono..cctor () (at Assets/Editor/AssetBundle/LocalServer/ExecuteInternalMono.cs:51)
Rethrow as TypeInitializationException: The type initializer for 'AssetBundles.ExecuteInternalMono' threw an exception.
AssetBundles.LaunchAssetBundleServer.Run () (at Assets/Editor/AssetBundle/LocalServer/LaunchAssetBundleServer.cs:77)
AssetBundles.LaunchAssetBundleServer.CheckAndDoRunning () (at Assets/Editor/AssetBundle/LocalServer/LaunchAssetBundleServer.cs:29)
AssetBundles.AssetBundleMenuItems.CheckSimulateModelEnv () (at Assets/Editor/AssetBundle/AssetbundleMenuItems.cs:87)
AssetBundles.AssetBundleMenuItems..cctor () (at Assets/Editor/AssetBundle/AssetbundleMenuItems.cs:41)
Rethrow as TypeInitializationException: The type initializer for 'AssetBundles.AssetBundleMenuItems' threw an exception.
PackageTool.DrawAssetBundlesGUI () (at Assets/Editor/PackageBuild/PackageTool.cs:263)
PackageTool.OnGUI () (at Assets/Editor/PackageBuild/PackageTool.cs:77)
System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) (at <d7ac571ca2d04b2f981d0d886fa067cf>:0)
Rethrow as TargetInvocationException: Exception has been thrown by the target of an invocation.
System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) (at <d7ac571ca2d04b2f981d0d886fa067cf>:0)
System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) (at <d7ac571ca2d04b2f981d0d886fa067cf>:0)
UnityEditor.HostView.Invoke (System.String methodName, System.Object obj) (at C:/buildslave/unity/build/Editor/Mono/HostView.cs:342)
UnityEditor.HostView.Invoke (System.String methodName) (at C:/buildslave/unity/build/Editor/Mono/HostView.cs:336)
UnityEditor.HostView.InvokeOnGUI (UnityEngine.Rect onGUIPosition, UnityEngine.Rect viewRect) (at C:/buildslave/unity/build/Editor/Mono/HostView.cs:310)
UnityEditor.DockArea.DrawView (UnityEngine.Rect viewRect, UnityEngine.Rect dockAreaRect, System.Boolean customBorder, System.Boolean floatingWindow, System.Boolean isBottomTab) (at C:/buildslave/unity/build/Editor/Mono/GUI/DockArea.cs:361)
UnityEditor.DockArea.OldOnGUI () (at C:/buildslave/unity/build/Editor/Mono/GUI/DockArea.cs:320)
UnityEngine.Experimental.UIElements.IMGUIContainer.DoOnGUI (UnityEngine.Event evt, UnityEngine.Matrix4x4 worldTransform, UnityEngine.Rect clippingRect, System.Boolean isComputingLayout) (at C:/buildslave/unity/build/Modules/UIElements/IMGUIContainer.cs:266)
UnityEngine.Experimental.UIElements.IMGUIContainer.HandleIMGUIEvent (UnityEngine.Event e, UnityEngine.Matrix4x4 worldTransform, UnityEngine.Rect clippingRect) (at C:/buildslave/unity/build/Modules/UIElements/IMGUIContainer.cs:438)
UnityEngine.Experimental.UIElements.IMGUIContainer.HandleIMGUIEvent (UnityEngine.Event e) (at C:/buildslave/unity/build/Modules/UIElements/IMGUIContainer.cs:421)
UnityEngine.Experimental.UIElements.IMGUIContainer.HandleEvent (UnityEngine.Experimental.UIElements.EventBase evt) (at C:/buildslave/unity/build/Modules/UIElements/IMGUIContainer.cs:401)
UnityEngine.Experimental.UIElements.EventDispatcher.ProcessEvent (UnityEngine.Experimental.UIElements.EventBase evt, UnityEngine.Experimental.UIElements.IPanel panel) (at C:/buildslave/unity/build/Modules/UIElements/EventDispatcher.cs:511)
UnityEngine.Experimental.UIElements.EventDispatcher.Dispatch (UnityEngine.Experimental.UIElements.EventBase evt, UnityEngine.Experimental.UIElements.IPanel panel, UnityEngine.Experimental.UIElements.DispatchMode dispatchMode) (at C:/buildslave/unity/build/Modules/UIElements/EventDispatcher.cs:307)
UnityEngine.Experimental.UIElements.BaseVisualElementPanel.SendEvent (UnityEngine.Experimental.UIElements.EventBase e, UnityEngine.Experimental.UIElements.DispatchMode dispatchMode) (at C:/buildslave/unity/build/Modules/UIElements/Panel.cs:176)
UnityEngine.Experimental.UIElements.UIElementsUtility.DoDispatch (UnityEngine.Experimental.UIElements.BaseVisualElementPanel panel) (at C:/buildslave/unity/build/Modules/UIElements/UIElementsUtility.cs:245)
UnityEngine.Experimental.UIElements.UIElementsUtility.ProcessEvent (System.Int32 instanceID, System.IntPtr nativeEventPtr) (at C:/buildslave/unity/build/Modules/UIElements/UIElementsUtility.cs:68)
UnityEngine.GUIUtility.ProcessEvent (System.Int32 instanceID, System.IntPtr nativeEventPtr) (at

后面的异常信息被截断了。

继承C#的问题

BaseClass支持继承c#的基类吗?
比如c#中有个ClassA
BaseClass("ExtendA",CS.A)

assetBundles 打不出lua资源的包

在编辑器模式可以启动游戏。
但是使用AssetBundles打包的启动不了 找不到 lua.assetbundle.

1.执行XLua->Copy lua files to AssetBundles
2.执行 AssetBundles->Build AssetBundles->For Android
打不出lua文件AssetBundles包。
貌似Ab打包要设置AssetBundleName? 有没什么工具设置?

ps:unity3d 使用 的是 2017.2.1和5,6.4 这两个版本

BUG: package_name.bytes内容错误

错误
ArgumentException: The requested value 'E:\DevelProject\xLua\xlua-framework-master\AssetBundles\Android\Test' was not found.
System.Enum.Parse (System.Type enumType, System.String value, Boolean ignoreCase) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System/Enum.cs:692)
System.Enum.Parse (System.Type enumType, System.String value) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System/Enum.cs:547)
GameChannel.ChannelManager.CreateChannel (System.String packageName) (at Assets/Scripts/Channel/ChannelManager.cs:55)
GameChannel.ChannelManager.Init (System.String packageName) (at Assets/Scripts/Channel/ChannelManager.cs:50)
GameLaunch+c__Iterator2.MoveNext () (at Assets/Scripts/GameLaunch/GameLaunch.cs:107)
UnityEngine.SetupCoroutine.InvokeMoveNext (IEnumerator enumerator, IntPtr returnValueAddress) (at C:/buildslave/unity/build/Runtime/Export/Coroutines.cs:17)

查看源码是 ChannelManager.instance.Init(packageName);出错
加日志发现 packageName 为 E:\DevelProject\xLua\xlua-framework-master\AssetBundles\Android\Test,渠道应该是 Test
这个是从 package_name.bytes中读出来的,应该是产生这个文件时就出错了。

修改BuildPlayer.cs的BuildAssetBundlesForCurSetting方法:
var outputPath = PackageUtils.GetCurBuildSettingOutputPath();
BuildAssetBundles(buildTarget, outputPath);
改为
string channelName = PackageUtils.GetCurSelectedChannel().ToString();
BuildAssetBundles(buildTarget, channelName);
这是因为BuildAssetBundles的第2个参数需要的是渠道名

项目大概流程

非常感谢楼主的这个项目,让我学习了很多。
然后我作为一个入行半年的新人,依旧有些东西无法理解太多。
往楼主能给个编写这个框架的大体流程。
一边参考楼主的,一边我也在想着自己慢慢写一个自己完全掌握的框架。
因为我接触的知识点太少了,甚至有些都不知道是啥。
我的想法是例如:1.xlua的引入。2.xlua的第三方库引入。3.xlua在c#侧的扩展与功能完善修改。4.protobuf的引入等等。。
我是个小白,也许我的问题很幼稚,但是还是忍不住想问。

BaseCtrl.lua不可写model

--[[
-- added by wsh @ 2017-11-30
-- UI控制层基类:发送网络请求(网络数据)、操作游戏逻辑、修改模型数据(本地数据)
-- 注意:
-- 1、UI控制层用于衔接Model层和View层,主要是用来修改数据,或者进行游戏逻辑控制
-- 2、修改数据:界面操作相关数据直接写Model层、游戏逻辑相关数据写数据中心
-- 3、游戏控制:发送网络请求、调用游戏控制逻辑函数
-- 4、Ctrl层是无状态的,不能保存变量--调试模式下强制
--]]

local UIBaseCtrl = BaseClass("UIBaseCtrl")

local function __init(self, model)
assert(model ~= nil)
强制不能直接写变量
if Config.Debug then
self.model = setmetatable({}, {
__index = model,
__newindex = function(tb, key, value)
if type(value) ~= "function" then
error("You can't save data here!", 2)
end
end
})
else
self.model = model
end
end

贴上源代码,Ctrl对self.model应该是可以直接写,Ctrl自身不能保存变量,这里是不写错了?

math.pow 无法使用

math.pow(q,size) : attempt to call a nil value (field 'pow')
Mathf.Pow : attempt to call a nil value (field 'Pow')
版本是2017.3.1 试了几下就是次方的用不了 很奇怪 :(

profile 打印Vector3性能问题

profile.print打印的

|FUNCTION | SOURCE | TOTAL(MS) | AVERAGE(MS) | RELATIVE | CALLED |
|[anonymous] | Common/Tools/UnityEngine/Vector3.lua:467 | 37199.000 | 286.146 | 93.95% | 130 |
|[anonymous] | Common/Tools/UnityEngine/Vector3.lua:468 | 37199.000 | 74.398 | 93.95% | 500 |
|[anonymous] | Common/Tools/UnityEngine/Vector3.lua:46 | 36366.000 | 19.604 | 91.85% | 1855 |

资源管理模块问题(A依赖于B,A对B持有引用)

加载逻辑中:加载BundleA时发现 A依赖于B,A对B持有引用,则对B引用计数加1,但如果存在多级依赖,比如一个Prefab A依赖一个材质 B,材质 B依赖一张贴图 C,ABC都是单独打成Bundle, A依赖于B和C,加载A时B、C的计数都会加1,但实际上B依赖于C,C被A,B引用,引用计数应该是2

image

公共包依赖的问题

公共包(被2个或者2个其它AB包所依赖的包)底层会自动设置常驻包 但是我发现这样的话 我的项目中依赖包会被卸载,如果设置为1的话 可以正常,请问 这个是怎么回事 希望大神 能给与解释

Could not find a part of the path .../hotfix_cfg_in_editor.data

Unity 版本:2019.3.1f1 平台windows 10
点击Xlua/Hotfix InjectIn Editor,执行Xlua热修复注入,报错:
irectoryNotFoundException: Could not find a part of the path "D:\Project\xlua-framework\Assets\Scripts\XLua\Gen\hotfix_cfg_in_editor.data".

能否将xlua独立出来?

很幸福能看到这样一个完整的项目介绍,非常感谢作者。
但是xlua更新很频繁,希望作者把xlua独立出来,放到git module里面,保持两个项目的独立性。

安卓真机上未显示图集内资源

2017.3.1+android studio
发现手动标签被打进图集的资源(工程内示例资源)在手机上没显示,看日志没发现明显异常提示。
测试暂时将sprite packer禁用后 是正常显示的 是我哪个步骤没处理吗?:(

目录名错误

错误
MapAssetPath failed : Lua/Framework/Net/Protobuf/protobuf.lua.bytes
UnityEngine.Debug:LogError(Object)
Logger:LogError(String, Object[]) (at Assets/Scripts/Common/Logger/Logger.cs:63)
XLuaManager:CustomLoader(String&) (at Assets/Scripts/XLua/XLuaManager.cs:175)
XLua.StaticLuaCallbacks:LoadFromCustomLoaders(IntPtr) (at Assets/Scripts/XLua/Scripts/StaticLuaCallbacks.cs:772)
XLua.LuaDLL.Lua:lua_pcall(IntPtr, Int32, Int32, Int32)
XLua.LuaEnv:DoString(Byte[], String, LuaTable) (at Assets/Scripts/XLua/Scripts/LuaEnv.cs:256)
XLua.LuaEnv:DoString(String, String, LuaTable) (at Assets/Scripts/XLua/Scripts/LuaEnv.cs:276)
XLuaManager:SafeDoString(String) (at Assets/Scripts/XLua/XLuaManager.cs:100)
XLuaManager:LoadScript(String) (at Assets/Scripts/XLua/XLuaManager.cs:152)
XLuaManager:StartGame() (at Assets/Scripts/XLua/XLuaManager.cs:138)
c__IteratorC:MoveNext() (at Assets/Scripts/GameLaunch/AssetbundleUpdater.cs:555)
UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)

Assets\LuaScripts\Framework\Net\protobuf
检查发现其中目录名Protobuf的首字母p在项目中是小写,改为大写

ios真机运行

我今天更新了一下你的新提交 发现在ios真机运行 Ensure all async operations are complete before unloading bundles.

错误修改

在PackageTool里生成AssetBundles后出现错误,PackageTool的UI就不能显示了。AssetBundles已经生成完成。

get_activeBuildTarget is not allowed to be called from a ScriptableObject constructor (or instance field initializer), call it in OnEnable instead. Called from ScriptableObject 'PackageTool'.
See "Script Serialization" page in the Unity Manual for further details.
UnityEditor.EditorUserBuildSettings:get_activeBuildTarget()
PackageTool:.cctor() (at Assets/Editor/PackageBuild/PackageTool.cs:19)

我的修改

public class PackageTool : EditorWindow
{
static private BuildTarget buildTarget = BuildTarget.Android;
static private ChannelType channelType = ChannelType.Test;
static private string resVersion = "1.0.0";
static private LocalServerType localServerType = LocalServerType.CurrentMachine;
static private string localServerIP = "127.0.0.1";

static PackageTool()
{
    //buildTarget = EditorUserBuildSettings.activeBuildTarget;
    //channelType = PackageUtils.GetCurSelectedChannel();

    //localServerType = PackageUtils.GetLocalServerType();
    //localServerIP = PackageUtils.GetLocalServerIP();
}

void OnEnable()
{
    buildTarget = EditorUserBuildSettings.activeBuildTarget;
    channelType = PackageUtils.GetCurSelectedChannel();

    localServerType = PackageUtils.GetLocalServerType();
    localServerIP = PackageUtils.GetLocalServerIP();
}

东西不错

节省了很多时间。而且比较有引导性

关于子模块单独热更新的一些问题

我想问下如果子模块单独热更新的ab打包怎么弄才好,现在打包是全部打包,启动检测全部热更新,我想渠道.manifest不包含子模块,子模块生成类似渠道那种的manifest和版本文件,大佬有啥好建议吗?渠道里面的map文件还是按照原来的,包括所有资源路径,大佬有啥好建议吗?

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.