Giter Site home page Giter Site logo

matomo-org / matomo Goto Github PK

View Code? Open in Web Editor NEW
18.9K 423.0 2.6K 285.63 MB

Empowering People Ethically with the leading open source alternative to Google Analytics that gives you full control over your data. Matomo lets you easily collect data from websites & apps and visualise this data and extract insights. Privacy is built-in. Liberating Web Analytics. Star us on Github? +1. And we love Pull Requests!

Home Page: https://matomo.org/

License: GNU General Public License v3.0

PHP 78.82% Shell 0.01% JavaScript 8.15% CSS 0.18% HTML 2.75% Smarty 0.01% Less 1.36% Twig 2.31% TypeScript 1.34% Vue 5.07%
analytics php piwik log website privacy mobile intranet web-analytics marketing

matomo's People

Contributors

altamashshaikh avatar barbushin avatar bx80 avatar c960657 avatar claytondaley avatar craue avatar czolnowski avatar diosmosis avatar findus23 avatar flamisz avatar gabriel-bowater avatar github-actions[bot] avatar gka avatar halfdan avatar joey3000 avatar julienmoumne avatar justinvelluppillai avatar mattab avatar michalkleiner avatar mnapoli avatar mneudert avatar pebosi avatar robocoder avatar sgiehl avatar thadafinser avatar timo-bes avatar tsteur avatar tzi avatar weblate avatar zawadzinski 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

matomo's Issues

Generic cache system for API results

The API calls are currently not cached at all, except if the plugins take care of caching their own data.

It would be interesting to have a generic system for caching results of APIs calls. By default the cache would be disabled but the user could specify
- max cache size
- cache lifetime
- disable cache for some specific APIs methods
- set different parameters for specific APIs methods
Keywords: outofscope

Outlink tracking, Download tracking plugin

This plugins is heavily requested by the community (http://feedback.phpmyvisites.net/feedbacks/3135-external-link-clicks-statistics).
- Outlink tracking
– activation requires a flag in the javascript file + optional list of host alias for each site ID (so we don’t save clicks on internal Urls)
– detects automatically the external links via some JS magic and record these clicks
– display the list of out clicks as actions in the piwik interface
- Download tracking
– activation requires a flag in the JS file
– detects automatically the clicks on files (given a list of extensions in the JS file : zip, exe, doc, pdf, etc. )
– display the list of downloads as actions in the piwik interface

Memory usage too high during archiving process

The memory usage seems too high during the archiving process.

There is need to
1. profile the memory using Xdebug
2. find potential memory leaks during archiving
3. write documentation on how to optimize memory usage so people don’t hit php memory limit too often (archive in multiple steps?)

Test piwik on a 50,000+ visits per day website

This test is very important as it will lead to necessary changes and optimization in
1. the DB design (index optimization, fields types)
2. the logging engine (how it behaves under heavy load, how the statistics logging can be optimized)
3. the archiving process (memory usage, saving computation time)
4. the interface (the DataTable scalable?)

This test will require to add new features such as
- [Add possibility to limit the number of rows saved in the datatable during the archiving](ticket:36)

Convert all PNG images to GIF

This would improve the package size, the interface loading speed, solve problems PNG has with transparency support under IE, etc. and GIF is now patent free.

The minimum PHP version should be checked

For example a user loading piwik under PHP4 would be surprised to see that nothing is working and that there is no error message.

It would be good to display the error message in a nice interface.

Plugin to exclude the webmaster based on a cookie

Feature available in phpMyVisites.
The plugin makes it easy to create a cookie so that visits by the piwik user are not registered in the piwik.php process and not counted in the statistics.

The plugin would hook during the installation process and make the cookie by default (opt out)[[Image()]]

The user config file cannot only define a variable, it has to define the whole "category" of variables

In the config.ini.php, it is not possible to set a configuration settings in a config file without setting the whole category in this config file.

We should have some sort of merging that would make possible to set only a sub configuration variable from the global.ini.php into the config.ini.php. This way, during an upgrade, we could keep only the config/config.ini.php and overwrite the other config files with the updated piwik version and we would keep the user changes.

Example

In global.ini.php
[Test]

value1=test1 value2=test2

In config.ini.php it is NOT YET possible to change only value1 doing something like
[Test]

value1=test1edited

Currently the user has to paste the whole category to change only this variable
[Test]

value1=test1edited value2=test2

Plugin latest new websites

Display the latest new links used by visitors to arrive on the website along with the date and the page linked to.

Plugin to exclude the webmaster based on IP or IP range

We want to be able to exclude a list of IPs, and/or a list of IP ranges (using ..123.34 notation) from being tracked by Piwik.

The list of IPs to exclude would be stored in the website cache file (where goals and alias URLs are stored).

In the UI, the feature should be available
- general exclusion list (only available to the super user): would apply to all website registered in Piwik, would need their own cache file (that applies to all websites)
- for each website, we can define a list of IPs. All IPs in this list + in the general list are checked at each Piwik request.

As an inline help, the UI would show the user current IP that he could copy paste in the list.

The UI would call the API in JSON (like the existing screens).

The UI for this feature should be designed to be part of a “preference page” for a website, as we need to add several new preferences for each website: #41, #42, #43, #56. Ideally, all the UI would be ajax (very quick to go from the list of websites in the admin UI, to load one website details page, to come back to the list of websites).

Outstanding question: should it be in the SiteManager plugin, or a new plugin? Should it be part of the core (to minimize overhead of loading plugins at Tracker time…)

Plugin to display a logo, configured per site

Currently the piwik.php renders a 1*1 transparent GIF.

We could instead display a piwik logo that would help spread the word about Piwik.

The plugin would
\* add logo field to site table in DB
\* display logo at the end of log process
\* provide an administration interface to show the different logos available and the user would choose one from them.

The logo would be on a per site basis ; you could display a logo for the site 1 but no logo for site 2 and 3.

Plugin database export as zip, send by email, import

It would be useful to be able to backup the piwik tables in a .tar.gz file on the server.
Then we could download this file or send it by email.

We also have to plan a “Import backup” tool.

Wordpress has such a feature.

Plugin to exclude / include only some Urls parameter

This feature in phpMyVisites was very useful.
It is mostly used on websites with no readable URLs (?module=news&newsid=14&action=view)

The plugin would provide:
- exclude given parameters from URLs
- include only given parameters
- exclude all parameters during statistics logging

This feature would be available:
- “exclude parameters” would be available
\ in a general list applying to all websites (by default it would exclude PHPSESSID, jsessionid, SESSIONID, etc.)

\ at the website level: each website define their own parameters to exclude (evaluated on top of the global list)

- “Include only given parameters” available for each website
- “Exclude all parameters” available for each website
- by default, Piwik campaigns parameter would be excluded from URLs

The UI would call the API directly, hence ensuring that all these features are available through the UI too.

For example the url`
example.com/page/index.php?userid=8571498752487&module=homepage` could be`
example.com/page/index.php?module=homepage` after removing the userid parameter.

The UI for this feature should be designed to be part of a “preference page” for a website, as we need to add several new preferences for each website: #41, #42, #43, #56. Ideally, all the UI would be ajax (very quick to go from the list of websites in the admin UI, to load one website details page, to come back to the list of websites).

Outstanding question: should it be in the SiteManager plugin, or a new plugin? Should it be part of the core (to minimize overhead of loading plugins at Tracker time…)

Tables log_ are not purged after archiving is done

The information contained in the tables log\* should be purged automatically and regularly. Keeping all time logs in a single table significantly slows down the stats logging process (mysql having to rebuild indices, selecting from this million rows table is time consuming, maintenance is hard, etc.).

The goal of this task is to provide automatic purge of the tracking logs, every day or every month and with optional backup in a yearly table (customized with UI settings).

Processing uniques over weeks / months without using logs
In #409, we will implement a cookie store mechanism based on a mysql lookup table. This table will contain enough data (idvisitor, ip, idsite, date first visit, date last visit) to process unique visitors over a week or a month

Log purge execution
The purge task would be triggered during the ‘Maintenance process’ (see #1184), and once a day maximum it would execute and try to purge logs for the day (or month) before.
- read settings (purge every day? every month?)
- ensure all archives have been processed for the day archives contained in the log tables. Weeks/months are not necessary to be processed as they are the sum of daily archives (and uniques can be processed using the cookie store rather than keeping the full visitor logs for the period)
- purge tracker for all websites at once
- backs up the logs into a yearly archive table
INSERT INTO log_X_backups_2010 SELECT \* FROM log_X
– one backup per purged table (log_visit, log_conversion, etc.)
- record the auto increment values (result of SELECT MAX
- purge logs (TRUNCATE TABLE)
- inserts last auto increment in each table

New Super User admin settings
- Purge traffic logs and process reports at least every day/month
- Backup traffic logs into a backup table containing all logs for the year (table is piwik_log_visit_backup2010)?
- Could also add admin setting for ‘Keep visitor cookies for 1 year’ (from #409)

A few interesting resources
- How to write efficient archiving and purging jobs in SQL http://www.xaprb.com/blog/2006/05/02/how-to-write-efficient-archiving-and-purging-jobs-in-sql/
- MK-archiver tool http://www.maatkit.org/doc/mk-archiver.htm

Deleted elements from the configuration file should raise a warning

If the user deletes some lines from the config.ini.php file, there should be a warning message asking the user to add the lines that were deleted (helping the user giving the default values for example).

Or shall we use some default values contained in a “default” configuration file?

Plugin using GeoIP to accurately detect visitor countries, cities, and continent

GeoIp Plugin
- When installed, the plugin will detect more accurately the country of your visitors using the MaxMind database.
- The existing reports for country and continent will be replaced by the more accurate GeoIp report in your Piwik interface.
- Piwik will also detect the city of your visitors. You can see all cities by clicking on the country row in the table.
- You can apply the GeoIp data to all your previous visits and re-generate your reports, see below.

Requirements

You need at least Piwik 0.2.33 to run the GeoIp plugin.

How to install?
- [Download Piwik GeoIp Plugin](http://issues.piwik.org/attachments/5465/GeoIP.zip?format=raw)
- Unzip the plugin and copy the extracted directory “GeoIp” in the directory piwik/plugins/
- Configure the MaxMind database:
– Either download MaxMind GeoLite City or GeoIP City database from http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
Uncompress this file and copy it in plugins/GeoIP/libs/GeoLiteCity.dat
– For more performance, it is recommanded to install the module apache mod_geoip.
Configure your Apache according to: http://www.maxmind.com/app/mod_geoip
- Enable GeoIP plugin in Piwik. Go to Piwik > Settings > Plugins > Geoip, click Enable

How to apply the GeoIp to all your previous visits to fix your previous reports

You can apply GeoIP precise localization on your past data:
- run geoipUpdateRows.php script, from command line (or from the browser, but risk of timing out if your database is large)
- wait a few minutes until all your visitors data from the piwik_log_visit table have been processed.
- you now need to force Piwik to re-process all the past reports: drop all piwik_archive_\* tables in your Piwik database. Piwik will automatically create them and re-process the reports.
- You should see Visitors countries and cities in your Visitors>Location report.

Authors
- Mikael Letang
- Maciej Zawadziski
- Matthieu Aubry
- Anthon Pang

Changelog
- version 0.7: cleaned up code, compatible with Piwik 0.2.33, improved documentation
- version 0.8: fixed bug in geoIpUpdateRows.php (thanks looztra)
- version 0.9: all fields now NULLable to make sure that insert still work fine after plugin is disabled
- version 0.10: compatibility with 0.2.35 after API change in the AddWidget function
- version 0.11: fixing bug with country detection
- version 0.12: updated for auto loader
- version 0.13: Compatible with Piwik 0.6
- version 0.14:
– Fixed geoipUpdateRows script which was failing with errors. It also now checks that logged in user is Super User, and that the GeoIP plugin is enabled.
– Fixed memory leak when using visitor generator.
– Fixed .htaccess was blocking users from executing the script with the browser.
– Added .htaccess to allow to execute the script directly from the browser.
– Fixed Sparkline distinct countries
- version 0.15:
– Updated for Piwik 1.3 (refactoring for upgrade.php)
– No match for country now set to ‘xx’ (unknown)
- version 0.16:
– fix bootstrap in geoipUpdateRows.php and clean-up package
– geoipUpdateRows.php – MYSQLI compatibility
– default to disk-based search; load into memory if multiple tracking requests
- version 0.17:
– fixes from peterb & mruge
- version 0.18: compatible with Piwik 1.6

Feedback

Please leave a comment if you have any feedback, suggestion, or bug report.
Keywords: third-party-plugin

images.google.x is not counted as a search engine

Handling the images.google.x is different from the other search engines.

Indeed we need to read the prev GET variable and then read the q GET variable, which gives the keyword.

See trunk/modules/LogStats/Visit.php getRefererInformation()

Weekly/Monthly/Yearly unique visitor count is wrong

Currently the Weekly/Monthly/Yearly visitor count is wrong: it adds every unique visitor of each day of the Week/Month/Year.

The algorithm needs to be updated with a query selecting, for the given month, the number of unique visitors.

Plugin latest new searches

Display the latest new search terms used by visitors to reach the website along with the date and the page linked to.
Keywords: third-party-plugin

Add possibility to limit the number of rows saved in the datatable during the archiving

Currently all the statistics are processed and nothing is pruned. However this is not necessary to keep all the statistics. In phpMyVisites we used a simple technique that worked well, we kept only the first N elements for each data (N ~ 300 for example).

For example we keep only the first 300 keywords. We keep the first 150 URLs referers.

This will lead to a big time and disk space saving for huge websites.

RSS feed output for every DataTable

Once the feature [Provide an easy way to access historical data in APIs](ticket:38) is done, we can generate RSS feeds for all the data in Piwik, at the same level as we currently generate CSV/XML reports.

We can imagine reports such as
- RSS feed of the best 10 keywords for the last days
- RSS feed of the best 50 refering websites for the last days
- any other report…

PS: at this point ATOM feeds would be just a few lines of code ahead obviously

Check ajax calls are made only once per request

By some magically bad code using jquery, we could end up doing ajax requests several times when clicking several times, or when clicking one time would trigger the Ajax request multiple times.

The JS code needs to be checked to make sure the number of Ajax requests is optimal.

Provide an easy way to access historical data in APIs

This feature is very important.
Currently it is easy to get data for a given day for a given report.

We need to be able to easily access data for a set of dates, eg
- the last 30 days
- the last month
- the last week
- week 2
- month of march 2007

etc.

This has to be implemented in such a way that this is globally available to all APIs and plugins without hack. This is part of the core.

Once this feature is ready we can imagine to easily generate RSS feeds for everything, giving reports for the last N days (see #5459).

Finish the Plugin Live! Reports detailed information on the last N visitors

ALPHA version currently

Current Piwik contains a disabled-by-default plugin called Live! that, when enabled, add a new widget in the widget list, that will show your latest visitors in real time. However this plugin is not very useful as such, and was built as a proof of concept. Improving the plugin has been one of the most requested user feature for months! If you would like to help, please post a comment, or submit a patch. Enjoy

Concept

The page should be entertaining to watch, fed with real time data, and open the webmaster to dig more into the other reports that Piwik offer.

Background
This feature is heavily requested by the community (http://feedback.phpmyvisites.net/feedbacks/2630-last-n-visitor-details-config-info-path-etc) and would be really providing a plus to Piwik feature set.

Data provided
- at top of screen, clear summary:
– Today you had: N visits, M pages today
– In the last 30 minutes you had: X visits, Y pages
- list of the last N visitors with their information
– settings (os, browser, resolution, plugins) – icons only, details on icon hover
– referer (keyword, name, icon, clickable url – useful for SEO)
– country icon
– IP for piwik users with admin permission or super user
– count of pages seen during this visit
– time spent during this visit
– number of goals converted, click on goals would show the list of pages with goals highlighted (see below)
- for each visit, it is possible to view pages:
– page title,
– page url that links to it,
– outlinks are shown different colors (icon ?)
– downloads are shown different colors (icon ?)
– when the page view was a Goal trigger, different color (icon ?) along with goal name and revenue.

UI features
- this page should make it possible to view all past visits for a current returning visitor. The idea would be to have an icon when the visitor is a returning visitor. Clicking on this icon would show the past visits for this visit. This is a UI challenge to make it look good and make it usable. for examples, previous visits rows could be shown below the visit row with a left margin and below a title “This visitor previously visited the website:”.
- by default, the spy mode would be enabled, therefore the page would reload regularly (every 2 seconds?) and show the new visits. We need a way to pause/resume the spy mode, if traffic is too big or if user wants to take more time to analyze existing traffic snapshot
- all the data would be shown in a one page interface, to simplify browsing and discovery; this poses UI challenges to make the page usable and looking clean.
- all data would be provided through the Live! plugin API.
- there is an open question on how to refresh visits for which visitors view a new page. For example, we could highlight the visit row in yellow background and add the new page row below the visit. Or we could automatically move the visit with the new page view at the top of the page and highlight (eg. yellow background) the new page view.

in V2
- on the right of the spy, or on a different “spy page”, we could show a auto-refreshing google map with the new visits in real time. see #5466

Any feedback? Anybody would like to help implementing this interesting new plugin and UI challenge?

Plugin Google maps of the last N visitors

It requires the precise geo localization plugin (#45).
We could plot the last N visitors on a google maps with the exact position of the visitors. A click on the dot could show basic information about the visitors.

Process to update a plugin

Plugins should be easy to update from one version to another.

We could use the same system as we are planning to use for the Piwik core (see [Process to update the Piwik software easily](ticket:30)).

piwik.php optimization using cookie information

In the piwik.php process, we could do without all the information in the cookie except for the idvisitor. We could select the information last_action_time, last_id_action, etc. assuming we have the idvisitor in the cookie ; this would allow to save the logs in the DB later by big bulk and save a lot of time.

Process to update piwik

This feature could be implemented as in phpMyVisites (it works well)
It makes it easy and secure to update from one version to another.

The software checks that the version in the database is the same as the version in the version.php.

If the version.php has a newer version, we update the database with all the changes that were done between both versions.

We can also execute some random php code as every version provides a file containing the changes to apply. This way of doing things is easy and very modular (you can do what you want during the update).

Display version number
Task also include display the version number somewhere in the admin UI, in the META tags on all piwik generated pages, an in the error/exception messages.

To do by default in first piwik release that has update feature
when updating from previous to first version with update system we need to:
- create indices now created at install: see comment below
- purge old archive tables containing temporary archive data
- remove cookie detection as it is completely wrong
- remove color_depth field
- alter table piwik_site and remove the update CURRENT_TIME

OpenAds plugin development

We have to finish the development of the !OpenAds plugin.
– using the ../../openads_piwik_bridge class,
– do the prototype to make sure we can print the piwik image with DOM from the header
– update the openads_piwik_bridge class comment and the specification
– test using the openads interface

Lightweight Piwik mode: Setting to purge aggregated reports older than N days from the database

The main reason that people stop using Piwik on small websites is because the DB grows out of control. Often users have 25Mb or 50m for the whole Mysql database. After installing the CMS, it is common for Piwik to have only 20M of space. We should try to make it easy to run Piwik with basic history and keep DB space below 20M.

Proposal “Lightweight Piwik” feature
- Display the current DB size. Reuse API code from: #3004
- Have a new setting “General settings” to select number of months to keep data for
– By default, keep all historical data
– In the dropdown selecting the number of months, put estimate of DB size that will be freed
- When setting enabled,
– Delete old archive_blob tables that are older than N months
– delete from all archive_numeric all rows except a critical metrics (visits, pageviews, ecommerce/goal metrics).
– also delete all segment data, numeric and blob
– Propose a dropdown to select number of months
– For each month choice “delete older than [years,4 years,custom](3,6,9,12,18,2)”. Once entry is selected, refresh the space free “delete older than [months](18) (N Gb will be deleted, Total Piwik DB size will become MGb)”
– When the feature is enabled, execute it as a scheduled task (safer for huge DBs). But on page reload, we could also display a link to let the user execute the purge code NOW (when in a hurry to get the DB size under control).

Note: it would be very nice to also get rid of #2805 – just one SQL query away after all…
PS: and this one too #3003

V2 of this feature (to be put as “feature request” ticket)
- User could choose exactly which reports to purge.
- Have a “less agressive” purge mode that would keep more data, but still delete a lot of useless old reports nobody would care about
– The list would be pre-selected with our estimate of the most useful reports (eg. Keywords, Page URLs/Page Titles, Websites, Campaigns, All goal reports…) and delete all others. Call our selection “Recommended historical reports to keep”
– The list would handle numeric and blob.
– “Delete data for segmented reports” or “Keep reports for segmented data”

Searching on countries within the DataTable is not working properly

Searching on countries should search on the final label, ie. the country name.

Currently the search is done on the ISO code.

This is a limitation of the DataTable class and it should be fixed. The developer should be able to define the field on which the search takes place.

API should provide a backward compatibility feature

Currently all APIs in Piwik and Plugins are not versionned. This means that if people start using the APIs and if the developpers decide to change some parameters in the method calls, the software would stop working.

This is annoying and not a good practise. We need to have a way to provide a backward compatibility APIs. There are simple ways to do it, like adding a new parameter “version” to every function call, or prefixing the API URL by the version number.

Plugin Internal search tracking - search analytics reports

Piwik now has [internal search keywords tracking](http://piwik.org/docs/site-search/). Awesome!

Functionnality:
- specify an URL + parameter for the internal search query
- give the general metrics: number of searches, visits with searches, unique searches, etc. (see comment below)
- display the list of internal searches in a new report under Actions
- can we auto detect google CSE? #426
- [see hack 64 & 65 in peterson’s book](http://books.google.com/books?id=v3ebu7RJT3oC&lpg=PP1&ots=-D2kqTg_07&dq=eric%20perterson%20Web%20%20Site%20Measurement%20Hacks%3A&pg=PA253#v=onepage&q&f=false)

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.