Giter Site home page Giter Site logo

ultralight-ux / ultralight Goto Github PK

View Code? Open in Web Editor NEW
4.6K 83.0 196.0 4.25 MB

Lightweight, high-performance HTML renderer for game and app developers.

Home Page: https://ultralig.ht

CMake 100.00%
html-renderer desktop-apps games gpu cross-platform webkit ultralight windows macos linux

ultralight's People

Contributors

adamjs avatar lkingsford 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ultralight's Issues

Support scrolling in `overflow: auto`

Is your feature request related to a problem? Please describe.

On relisten.net, we have a column-based interface that makes use of overflow-y: auto. These currently do not scroll at all.

Describe the solution you'd like

I would like those content areas to scroll with the same smoothness as a whole page scroll.

Describe alternatives you've considered

None.

Additional context

We are using CSS Flexbox for layout and perhaps that is affecting it.

Document requirements to build/run samples

Is your feature request related to a problem? Please describe.
Once you download the SDK for Windows and try to build and run, there are a few things required that are not explicitly mentioned.

Describe the solution you'd like
Make a guide that explains clearly how to setup your environment in order to build and run the samples

This basically includes two things

macOS/Xcode minimum version?

Summarize the Issue
Failed to load project at 'ultralight-sdk-0.9-mac-x64/Browser.xcodeproj', incompatible project version.

Platform Info:

  • OS: macOS 10.12.6
  • SDK Version: 0.9
  • Xcode: 9.2.

Add CPU renderer

Implement a multi-threaded CPU-based driver that renders View to a pixel buffer.

Browser sample doesn't resize correctly on mac

screen shot 2018-08-10 at 1 04 26 pm

Looks like browser view is fixed size. Should resize to the size of the window.

Also, after resizing it often doesn't repaint and shows UI as resized image.

Mac 10.13.6, Mac Pro (Late 2013), AMD FirePro D300.

Weird GPU artifacts + sites not rendering on GTX 1070 Ti (10.13.6)

Summarize the Issue
image

Sites are not rendering properly:

  • They have artifacts
  • Most text does not render

Log in Xcode:

objc[85844]: Class WebFileManagerDelegate is implemented in both /System/Library/Frameworks/WebKit.framework/Versions/A/Frameworks/WebCore.framework/Versions/A/WebCore (0x7fffb0b27f78) and /Users/alecgorge/Library/Developer/Xcode/DerivedData/Browser-aeadycjcfqoiryfaxrdbtykvqdbg/Build/Products/Debug/Browser.app/Contents/MacOS/Browser (0x10003bb78). One of the two will be used. Which one is undefined.
2018-08-10 09:31:07.061937-0700 Browser[85844:10322124] [DYMTLInitPlatform] platform initialization successful
2018-08-10 09:31:07.177535-0700 Browser[85844:10322041] Metal GPU Frame Capture Enabled
2018-08-10 09:31:07.177820-0700 Browser[85844:10322041] Metal API Validation Enabled
2018-08-10 09:31:07.515603-0700 Browser[85844:10322121] MessageTracer: Falling back to default whitelist
TODO: Image::loadPlatformResource missingImage
2018-08-10 09:32:05.649231-0700 Browser[85844:10322041] Texture ID 6 doesn't exist.
2018-08-10 09:32:05.649264-0700 Browser[85844:10322041] Texture ID 6 doesn't exist.
2018-08-10 09:32:05.649275-0700 Browser[85844:10322041] Texture ID 6 doesn't exist.
2018-08-10 09:32:05.649283-0700 Browser[85844:10322041] Texture ID 6 doesn't exist.
2018-08-10 09:32:05.649292-0700 Browser[85844:10322041] Texture ID 6 doesn't exist.
2018-08-10 09:32:05.649301-0700 Browser[85844:10322041] Texture ID 6 doesn't exist.
2018-08-10 09:32:05.649310-0700 Browser[85844:10322041] Texture ID 6 doesn't exist.
2018-08-10 09:32:05.649318-0700 Browser[85844:10322041] Texture ID 6 doesn't exist.
2018-08-10 09:32:05.649328-0700 Browser[85844:10322041] Texture ID 6 doesn't exist.
2018-08-10 09:32:05.649337-0700 Browser[85844:10322041] Texture ID 6 doesn't exist.
2018-08-10 09:32:05.649345-0700 Browser[85844:10322041] Texture ID 6 doesn't exist.
2018-08-10 09:32:05.649353-0700 Browser[85844:10322041] Texture ID 6 doesn't exist.
2018-08-10 09:32:05.649362-0700 Browser[85844:10322041] Texture ID 6 doesn't exist.
PathImpl::IsPointFilled NOTIMPLEMENTED()
PathImpl::IsPointFilled NOTIMPLEMENTED()

Steps to Reproduce

Open the browser test project and go to any site

Platform Info:

  • GTX 1070 Ti
  • macOS 10.13.6
  • NVIDIA Alternate Graphics Drivers for macOS 387.10.10.10.40.105

Mobile devices

Do you guys have any plans to support mobile devices (iOS and Android)?

Support WebSockets

Adding support for WebSockets enables the ability to build real-time web applications that can run on the desktop. This is very useful if you have a frontend that gets data from a WebSocket based source.

Publish SDKs on GitHub so fixes can be sent via PR

In Browser project for macOS there are currently two bugs:

  • You can't press enter to go to a URL in the URL bar
  • No JavaScript errors are logged by default

You can log JavaScript errors like this (in case anyone else goes searching):

Tab.cc:43

    printf("%d (%d) [%d:%d] - %s: %s\n", source, level, line_number, column_number, source_id.utf8().data(), message.utf8().data());

Explore direct DOM access via C++ API

From a suggestion by derefr on Hacker News:

> > with most memory being allocated by the JavaScriptCore VM
If I'm writing a green-field HTML5 app, and I don't derive any benefit from Javascript, is the interface between Ultralight and JavaScriptCore clean enough to just rip out the JS support altogether, replacing it with something simpler?

I'm picturing:

1. I embed Ultralight into a process that exposes a simple script-loading API, ala the one in JSCore;

2. I write HTML with no <script> elements, just elements with onclick/ontouch/etc. handler attrs, where these handlers just contain a UUID;

3. Ultralight passes the "script code" (i.e. the UUID) to my trivial script-loading API, which simply looks up a native handler based on the provided UUID, and returns its function pointer;

4. Ultralight holds onto that function pointer and treats it just like a regular thunkable Javascript handler function pointer.

In other words, all the "dynamism" of the HTML would be handled by native, static code in my compiled binary, with the only thing being set up at runtime being the binding of DOM elements to those known-at-compile-time native handlers. The QML/XAML/NIB approach.

Adding Callable C++ function from javascript with return value

Summarize the Issue
Samples provide do not compile with a function with return value does not compile
1>c:\users\robto\downloads\ultralight-master\ultralight-master\samples\browser\src\ui.cc(88): error C2593: 'operator =' is ambiguous
1> c:\users\robto\downloads\ultralight-master\ultralight-master\deps\framework\jshelpers.h(237): note: could be 'framework::JSPropertyValue &framework::JSPropertyValue::operator =(const framework::JSPropertyValue &)'
1> c:\users\robto\downloads\ultralight-master\ultralight-master\deps\framework\jshelpers.h(230): note: or 'framework::JSPropertyValue &framework::JSPropertyValue::operator =(const framework::JSCallbackWithRetval &)'
1> c:\users\robto\downloads\ultralight-master\ultralight-master\deps\framework\jshelpers.h(227): note: or 'framework::JSPropertyValue &framework::JSPropertyValue::operator =(const framework::JSCallback &)'
1> c:\users\robto\downloads\ultralight-master\ultralight-master\deps\framework\jshelpers.h(224): note: or 'framework::JSPropertyValue &framework::JSPropertyValue::operator =(const framework::JSValue &)'
1> c:\users\robto\downloads\ultralight-master\ultralight-master\samples\browser\src\ui.cc(88): note: while trying to match the argument list '(framework::JSPropertyValue, std::_Binder<std::_Unforced,const framework::JSValue (__thiscall UI::* )(const framework::JSObject &,const framework::JSArgs &),UI *const ,const std::_Ph<1> &,const std::_Ph<2> &>)'

Steps to Reproduce
add a callback with return value

Platform Info:

  • OS: [Windows 10]
  • SDK Version [latest downloaded 9/21/2018]
  • Microsoft Visual Studio 15

C# Bindings

Begin basic C# bindings (pinvoke wrapper for both Ultralight API + Framework API). This ticket depends on: #15

.NET Controls (such as WebBrowser Control replacement) are planned after this.

GLFW Error: Requested OpenGL version 3.2, got version 3.0

Error:

marler8997@z620dev016:~/git/ultralight/build/samples/Browser$ ./Browser -h
GLFW Error: Requested OpenGL version 3.2, got version 3.0

Platform:

marler8997@z620dev016:~/git/ultralight/build/samples/Browser$ uname -a
Linux z620dev016 4.15.0-34-generic #37~16.04.1-Ubuntu SMP Tue Aug 28 10:44:06 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

Active setTimeout callback causes a crash after releasing view

Summarize the Issue
If a page has an active setTimeout callback, after releasing the view object, Ultralight will crash (Somewhere in UltralightCore.dll, when calling ucrtbase.dll!_free_base(), according to my debugger)

Steps to Reproduce
I have the following JavaScript file:

var counter = 0;
function setTitle() {
  document.title = "Test page " + counter;
  counter += 1;
  setTimeout(setTitle, 1000);
}
setTitle();

When this script is loaded on the page, it will crash ultralight as soon as the view with that page on it is released.

Platform Info:

  • OS: Windows
  • 0.9.1

Port to UWP (HoloLens support)

Should theoretically be possible to port Ultralight over to UWP since we have minimal reliance on WinAPI calls. Needs exploration.

Golang bindings

hi there, I saw that you are talking about adding additional findings for other languages. Are there any plans for golang? If not, please feel free to just close this ticket off.

Browser Sample issue

Summarize the Issue
passing arg to c++ function crashes

Steps to Reproduce
run sample browser app - click on address input move cursor to end of string ( or enter new url ) press enter.

void UI::OnRequestChangeURL(const JSObject& obj, const JSArgs& args) {
if (args.size() == 1) {

  if (args[0].IsString() )
  {

-> ultralight::String url = args[0];

	  if (!tabs_.empty()) {
		  auto& tab = tabs_[active_tab_id_];
		  tab->view()->LoadURL(url);
	  }
  }

}
}

Platform Info:

  • OS: [Windows 10]
  • SDK Version [downloaded master - 9/21/2018]
  • Microsoft Visual Studio 15

Sample Browser.exe is not linking when compiling

Summarize the Issue
Linking of sample Browser.exe is not working

Steps to Reproduce
By simply build it in incompatible compiler to the libs delivered.

Platform Info:

  • OS: [e.g. Windows]
  • SDK Version [now]
  • GCC 8.1.0 (mingw-m64)

E:\dane\ultralight-master\build>make
[ 55%] Built target glfw
[ 58%] Linking CXX executable Browser.exe
CMakeFiles\Browser.dir/objects.a(Browser.cc.obj):Browser.cc:(.text+0xef): undefi
ned reference to __imp__ZN10ultralight8Platform8instanceEv' CMakeFiles\Browser.dir/objects.a(Browser.cc.obj):Browser.cc:(.text+0x24a): undef ined reference to __imp__ZN10ultralight8Renderer6CreateEv'
CMakeFiles\Browser.dir/objects.a(Browser.cc.obj):Browser.cc:(.text+0x412): undef
ined reference to __imp__ZN10ultralight8Platform8instanceEv' CMakeFiles\Browser.dir/objects.a(Browser.cc.obj):Browser.cc:(.text$_ZN10ultralig ht6ConfigC1Ev[_ZN10ultralight6ConfigC1Ev]+0x62): undefined reference to imp
ZN10ultralight8String16C1EPKc'
CMakeFiles\Browser.dir/objects.a(Browser.cc.obj):Browser.cc:(.text$_ZN10ultralig
ht6ConfigC1Ev[_ZN10ultralight6ConfigC1Ev]+0x7d): undefined reference to `imp
ZN10ultralight8String16C1EPKc'

Make GPUDrivers save / restore client state non-destructively

In the OpenGL driver at least, we modify several states (such as glUseProgram()) that modify the current GL state after GPUDriver::DrawGeometry() returns.

We should save / restore any modified GPU state for easier integration with existing GPU code.

Support `WebAudio` APIs

Is your feature request related to a problem? Please describe.

I would like to use Ultralight for a webapp that plays music. We make use of the HTML5 audio tag and the WebAudio classes themselves. I'd say HTML5 audio tag is higher priority but it'd be nice to have both.

Describe the solution you'd like

  1. https://html.spec.whatwg.org/multipage/media.html#the-audio-element
  2. The WebAudio API as a whole is huge so I don't view this as a priority: https://www.w3.org/TR/webaudio/

Describe alternatives you've considered

None? There's no way to play audio.

Additional context
Add any other context or screenshots about the feature request here.

Instant crash

Summarize the Issue
Instant crash when opening a website

Steps to Reproduce
When I try to open https://forecastcycles.com using the Browser sample, the application crashes after the loading of the website ends.
Whereas while opening https://platform.forecastcycles.com which is a complex React app, the rendering is really good and the navigation goes on perfectly

Platform Info:

  • OS: Windows 10
  • SDK Version: 0.9

Add DirectX 10 support

The app framework on Windows currently only supports DirectX 11.1. A DX10 port should be created so we can target more GPUs and VMs (Parallels on Mac only supports DX10.1, see #19).

static build option.

there is no static build option 👎
so why should we use this black box library ?

even sample browser app crashing randomly.

Overlay (View) scale support

Current version of Overlay (0.9.1) have scale option in constructor but in real not have effect in code & render.

Not so critical, but better create 'issue' for not forget about it's.

Reduce memory usage

So far, the Ultralight binary and codebase has been minimized (woohoo! 25% the size of the typical Electron/CEF distributable!) but runtime memory usage has been neglected despite many opportunities to do so.

Reduce runtime memory usage to the absolute minimum up to the point that doing so would reduce performance (and even then, allow users to configure this memory vs. performance trade-off).

View Component & Transparent Background

Summarize the Issue
View component does not support transparent background.

Steps to Reproduce
Create not full-screen View & Load page that contain body / html / * with transparent background attribute, in result will be white background in anyway.

Example:

Platform Info:

  • OS: Windows
  • SDK: 0.9.*
  • GPU: GL / DirectX

Windows SDK sample doesn't work under Parallels 13.3.2 (on Mac)

This is from SDK 0.9 I tried to run Browser sample on win10 under parallels.

It complains about not being able to create a texture and then crashes.

void GPUDriverD3D11::CreateTexture(uint32_t texture_id,
  Ref<Bitmap> bitmap) {

...

 if (FAILED(hr)) {
    MessageBox(nullptr,
      L"GPUDriverD3D11::CreateTexture, unable to create texture.", L"Error", MB_OK);
  }
  Name Value Type
  hr E_INVALIDARG One or more arguments are invalid. HRESULT
texture_entry (0x0000000000000000 , 0x0000000000000000 ) std::pair<Microsoft::WRL::ComPtr,Microsoft::WRL::ComPtr > &
  texture_id 1 unsigned int

Here's the debug output:

D3D11 ERROR: ID3D11Device::CreateTexture2D: CheckFeatureSupport() API with D3D11_FEATURE_D3D11_OPTIONS2 must report support for MapOnDefaultTextures for a D3D11_USAGE_DEFAULT Texture Resource to have CPUAccessFlags set. CPUAccessFlags are currently set to: D3D11_CPU_ACCESS_READ (0), D3D11_CPU_ACCESS_WRITE (1). MapOnDefaultBuffers is (false). [ STATE_CREATION ERROR #98: CREATETEXTURE2D_INVALIDCPUACCESSFLAGS]
Exception thrown at 0x00007FFBD4B5A388 in Browser.exe: Microsoft C++ exception: _com_error at memory location 0x000000C7285FEBE8.
D3D11 ERROR: ID3D11Device::CreateTexture2D: Returning E_INVALIDARG, meaning invalid parameters were passed. [ STATE_CREATION ERROR #104: CREATETEXTURE2D_INVALIDARG_RETURN]
The thread 0x254c has exited with code 0 (0x0).
The thread 0x20d0 has exited with code 0 (0x0).
D3D11 ERROR: ID3D11Device::CreateShaderResourceView: A ShaderResourceView cannot be created from a NULL Resource. [ STATE_CREATION ERROR #129: CREATESHADERRESOURCEVIEW_INVALIDRESOURCE]
Exception thrown at 0x00007FFBD4B5A388 in Browser.exe: Microsoft C++ exception: _com_error at memory location 0x000000C7285FEE98.
D3D11 ERROR: ID3D11Device::CreateShaderResourceView: Returning E_INVALIDARG, meaning invalid parameters were passed. [ STATE_CREATION ERROR #131: CREATESHADERRESOURCEVIEW_INVALIDARG_RETURN]
D3D11 ERROR: ID3D11Device::CreateTexture2D: CheckFeatureSupport() API with D3D11_FEATURE_D3D11_OPTIONS2 must report support for MapOnDefaultTextures for a D3D11_USAGE_DEFAULT Texture Resource to have CPUAccessFlags set. CPUAccessFlags are currently set to: D3D11_CPU_ACCESS_READ (0), D3D11_CPU_ACCESS_WRITE (1). MapOnDefaultBuffers is (false). [ STATE_CREATION ERROR #98: CREATETEXTURE2D_INVALIDCPUACCESSFLAGS]
Exception thrown at 0x00007FFBD4B5A388 in Browser.exe: Microsoft C++ exception: _com_error at memory location 0x000000C7285FEBE8.
D3D11 ERROR: ID3D11Device::CreateTexture2D: Returning E_INVALIDARG, meaning invalid parameters were passed. [ STATE_CREATION ERROR #104: CREATETEXTURE2D_INVALIDARG_RETURN]
D3D11 ERROR: ID3D11Device::CreateShaderResourceView: A ShaderResourceView cannot be created from a NULL Resource. [ STATE_CREATION ERROR #129: CREATESHADERRESOURCEVIEW_INVALIDRESOURCE]
Exception thrown at 0x00007FFBD4B5A388 in Browser.exe: Microsoft C++ exception: _com_error at memory location 0x000000C7285FEE98.
D3D11 ERROR: ID3D11Device::CreateShaderResourceView: Returning E_INVALIDARG, meaning invalid parameters were passed. [ STATE_CREATION ERROR #131: CREATESHADERRESOURCEVIEW_INVALIDARG_RETURN]
D3D11 ERROR: ID3D11Device::CreateTexture2D: CheckFeatureSupport() API with D3D11_FEATURE_D3D11_OPTIONS2 must report support for MapOnDefaultTextures for a D3D11_USAGE_DEFAULT Texture Resource to have CPUAccessFlags set. CPUAccessFlags are currently set to: D3D11_CPU_ACCESS_READ (0), D3D11_CPU_ACCESS_WRITE (1). MapOnDefaultBuffers is (false). [ STATE_CREATION ERROR #98: CREATETEXTURE2D_INVALIDCPUACCESSFLAGS]
Exception thrown at 0x00007FFBD4B5A388 in Browser.exe: Microsoft C++ exception: _com_error at memory location 0x000000C7285FEBE8.
D3D11 ERROR: ID3D11Device::CreateTexture2D: Returning E_INVALIDARG, meaning invalid parameters were passed. [ STATE_CREATION ERROR #104: CREATETEXTURE2D_INVALIDARG_RETURN]
D3D11 ERROR: ID3D11Device::CreateShaderResourceView: A ShaderResourceView cannot be created from a NULL Resource. [ STATE_CREATION ERROR #129: CREATESHADERRESOURCEVIEW_INVALIDRESOURCE]
Exception thrown at 0x00007FFBD4B5A388 in Browser.exe: Microsoft C++ exception: _com_error at memory location 0x000000C7285FEE98.
D3D11 ERROR: ID3D11Device::CreateShaderResourceView: Returning E_INVALIDARG, meaning invalid parameters were passed. [ STATE_CREATION ERROR #131: CREATESHADERRESOURCEVIEW_INVALIDARG_RETURN]
Exception thrown at 0x00007FFBB03D4979 (d3d11_3SDKLayers.dll) in Browser.exe: 0xC0000005: Access violation reading location 0x0000000000000000.

Enable Run-Time Type Information (RTTI)

We originally built binaries with RTTI disabled to keep in accordance with the default WebKit flags, but the space-savings are negligible on Windows (saves approximately 700 KB when disabled).

We should re-enable this flag to allow users to link against Ultralight in build environments that require RTTI.

Add OpenGL support

Majority of work on an OpenGL GPUDriver implementation has already been completed, need to just update framework code to use it via SDL or some other cross-platform GL host.

Create Node.js bindings

Ideally the bindings should abstract as much of the native platform code as possible by way of the application framework to allow Electron-like usage.

Mouse hovering link sets cursor to kCursor_Hand then back do kCursor_Pointer (Browser sample)

In Browser sample, when hovering the mouse over a link, the cursor changes to kCursor_Hand and immediately back to kCursor_Pointer.

Steps to Reproduce

  • Slowly drag the mouse pointer to a link until you see a mouse cursor change
  • Observe the pointer change to the hand cursor
  • If you move the mouse cursor just a bit it will change to the pointer again

Looks like:

  • "onMouseEnter" -> sets cursor to hand
  • "onMouseOver" -> bug, sets back to pointer (default?)
  • "onMouseExit" -> resets
  • "onMouseEnter" (again) -> sets cursor to hand
  • ....

Platform Info:

  • OS: Windows 10
  • SDK Version 0.9.1

HTTP Public Key Pinning

Describe the solution you'd like
Create and expose an API to allow implementations to secure HTTPS requests against approved keys.

Describe alternatives you've considered
Using the LoadHTML to only load pages/content you've secured/verified - doesn't work with XHR.

Python bindings

I see it has already been mentioned on the landing page.

Just opening this issue here, because I couldn't find one tracking the progress. :)

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.