Code Monkey home page Code Monkey logo

data.beeldengeluid.nl's Introduction

B&G Data Website

These are the sources for the B&G Data Website, including the content (md) and website (nuxt/vue).

Prerequisites

If you use nvm to manage different Node versions, running nvm use will activate the required version through .nvmrc.

Ingredients

Frontend:

  • Nuxt v3 as application framework, and for static site generation.
  • Vuetify as component library.
  • Nuxt Content to fetch content, see the content/ directory in this repository.
  • Nuxt Image to convert and include images in various formats.
  • nuxtjs/i18n for localization.

Content Management:

  • Forestry CMS to manage ./content. ) Deprecated and waiting for replacement. Until that time content can be managed directly in this repository .

LOD DataCatalog:

Development Setup

The following commands require Node.js and NPM (ships with Node) to be installed globally.

NB: we've switched from Yarn to NPM after encountering issues with dependabot updates.

# install dependencies
npm install

# start the development server
npm run dev

other commands, which might come in handy as needed

# fetching latest datacatalog in JSON-LD format
npm run fetch

# generate static project
npm run generate

# build app for production
npm run build

# locally preview production build
npm run preview

For detailed explanation on how things work, the Nuxt docs are a good starting point.

Development Process

We branch from main to work on changes to the website. Use the steps under Development Setup to work on your changes locally. To share your changes with others, create a draft pull request on GitHub. This deploys your branch through Vercel for Github to a new environment, and posts a shareable preview URL to the pull request. If your changes are ready to be released, set the pull request to 'ready for review' and ask someone for a code review. After review, the change is deployed by merging to main.

Further docs:

data.beeldengeluid.nl's People

Contributors

phivk avatar dependabot[bot] avatar gb-beng avatar whelmich avatar mwigham avatar wmelder avatar 85jesse avatar kleinrana avatar jblom avatar

Watchers

 avatar  avatar Sara Veldhoen avatar  avatar

data.beeldengeluid.nl's Issues

Fix empty description in head

https://github.com/beeldengeluid/labs.beeldengeluid.nl/blob/006e1d7d93a205146cf15a249b5aa1dc823f468d/nuxt.config.js#L20

in the html:

<meta data-n-head="ssr" data-hid="description" name="description" content="">

We could use e.g. the text under 'about' on /.

Sound & Vision LABS represent our Research & Innovation activities. On a wide range of topics, we put media innovation into practice by connecting new technologies and innovative ideas to real data ("big multimedia data") and evaluating them in real-life use scenarios in media, cultural heritage, research, education and journalism, together with real users.

support localization.

As a data explorer, I would like to more easily navigate around the schema, so that I can familarise myself with it

Feedback René about the current ontospy solution:

  • It would be easier if the menu on the lefthand side is always open
  • namespaces are not so interesting
  • misses the information about which classes a class is related to (e.g. what classes can be linked to a CreativeWork (Mari: this information is available via the properties list at the bottom, but it would perhaps be clearer if there were also a separate list of the related classes)
  • preferably you would have this overview per dataset, as some classes/properties are irrelevant for certain datasets (Mari: I think this is more for the future, if ever)

Tasks:

  • Investigate if we can configure ontospy to keep the menu open
  • Consider (given that namespaces are not so interesting) whether a different page should be Home, and see if ontospy allows this
  • Consider how to make it clearer which classes a class is related to
  • Review any changes with users

Make dashboard visualisations responsive

Width and height are now hard-coded in specification, should scale nicely

Also, it would be nice if the user can zoom in on interesting area's (especially in the map visualisation)

As a data shopper, I would like the links at the top of Overview to be clickable, so I can find out more about them

image

These pieces of information appear as if they should be links - especially the rights statement - and invite to be clicked on to find out more, but they are not clickable. Would expect to go to the metadata when clicking on the number of records.

Tasks:

  • Consider if it is feasible to make (some of) these links clickable
  • If not, consider altering their appearance so it is clear that they are static information

Acceptance criteria:

  • Either these pieces of information are clickable links, or it is clear that they are static pieces of information

Download button for user under dataset metadata tab provide incomplete JSON-LD

No context is provided. This is needed because it contains the namespaces etc.

Currently, this is what you get with the download button:

{
   "@id": "http://data.beeldengeluid.nl/id/dataset/0024",
   "@type": "sdo:Dataset",
   "sdo:description": {
      "@language": "nl",
      "@value": "Politiek, cultuur en sport, kortom alle facetten van het leven komen aan bod aan de tafel van Frits Barend en Henk van Dorp, immer bijgestaan door oud-voetballer en columnist Jan Mulder. Naast Jan Mulder zijn schrijver Boudewijn Büch en politiek verslaggever Frits Wester vaste gasten; ze schuiven regelmatig aan de tafel aan. Aanvankelijk wordt het programma in een café/restaurant in Eemnes opgenomen. Later verhuizen de opnamen naar Gooiland en sinds 2002 komen de uitzendingen vanaf het Media Park. In een gezellige sfeer, met nootjes op tafel. Spraakmakende gasten, emotionele onderwerpen en opvallende uitspraken maken dat je Barend & Van Dorp gezien moet hebben. In totaal worden er 960 afleveringen gemaakt. In 2008 dragen Frits Barend en Henk van Dorp alle afleveringen van de talkshow over aan Beeld en Geluid."
   },
   "sdo:distribution": {
      "@id": "http://data.beeldengeluid.nl/id/datadownload/0023"
   },
   "sdo:inLanguage": "nl-NL",
   "sdo:includedInDataCatalog": {
      "@id": "http://data.beeldengeluid.nl/id/datacatalog/0001"
   },
   "sdo:license": {
      "@id": "http://rightsstatements.org/vocab/InC/1.0/"
   },
   "sdo:mainEntityOfPage": {
      "@id": "https://wiki.beeldengeluid.nl/index.php/Barend_%26_Van_Dorp_(praatprogramma)"
   },
   "sdo:name": {
      "@language": "nl",
      "@value": "Barend & van Dorp"
   },
   "sdo:publisher": {
      "@id": "https://www.beeldengeluid.nl"
   },
   "sdo:size": "910",
   "sdo:temporalCoverage": "2002/2006"
}

But, as you can see above, no proper prefixes of namespaces are listed. What should be provided is what the beng-lod-server serves (Please note that we did cut the contents of the @context, because rdflib is providing too many namespaces as of the latest version. We will fix that later):

{
  "@context": {
    "sdo": "https://schema.org/",
  },
  "@graph": [
    {
      "@id": "http://data.beeldengeluid.nl/id/dataset/0024",
      "@type": "sdo:Dataset",
      "sdo:description": {
        "@language": "nl",
        "@value": "Politiek, cultuur en sport, kortom alle facetten van het leven komen aan bod aan de tafel van Frits Barend en Henk van Dorp, immer bijgestaan door oud-voetballer en columnist Jan Mulder. Naast Jan Mulder zijn schrijver Boudewijn Büch en politiek verslaggever Frits Wester vaste gasten; ze schuiven regelmatig aan de tafel aan. Aanvankelijk wordt het programma in een café/restaurant in Eemnes opgenomen. Later verhuizen de opnamen naar Gooiland en sinds 2002 komen de uitzendingen vanaf het Media Park. In een gezellige sfeer, met nootjes op tafel. Spraakmakende gasten, emotionele onderwerpen en opvallende uitspraken maken dat je Barend & Van Dorp gezien moet hebben. In totaal worden er 960 afleveringen gemaakt. In 2008 dragen Frits Barend en Henk van Dorp alle afleveringen van de talkshow over aan Beeld en Geluid."
      },
      "sdo:distribution": {
        "@id": "http://data.beeldengeluid.nl/id/datadownload/0023"
      },
      "sdo:inLanguage": "nl-NL",
      "sdo:includedInDataCatalog": {
        "@id": "http://data.beeldengeluid.nl/id/datacatalog/0001"
      },
      "sdo:license": {
        "@id": "http://rightsstatements.org/vocab/InC/1.0/"
      },
      "sdo:mainEntityOfPage": {
        "@id": "https://wiki.beeldengeluid.nl/index.php/Barend_%26_Van_Dorp_(praatprogramma)"
      },
      "sdo:name": {
        "@language": "nl",
        "@value": "Barend & van Dorp"
      },
      "sdo:publisher": {
        "@id": "https://www.beeldengeluid.nl"
      },
      "sdo:size": "910",
      "sdo:temporalCoverage": "2002/2006"
    },
    {
      "@id": "https://www.beeldengeluid.nl",
      "@type": "sdo:Organization",
      "sdo:alternateName": {
        "@language": "nl",
        "@value": "Beeld en Geluid"
      },
      "sdo:name": {
        "@language": "nl",
        "@value": "Nederlands Instituut voor Beeld en Geluid"
      },
      "sdo:sameAs": [
        {
          "@id": "https://data.overheid.nl/community/organization/beeld-en-geluid"
        },
        {
          "@id": "http://www.openbeelden.nl/users/beeldengeluid"
        },
        {
          "@id": "https://data.netwerkdigitaalerfgoed.nl/beeldengeluid"
        },
        {
          "@id": "https://data.overheid.nl/community/organization/nlpo12345678"
        },
        {
          "@id": "http://www.wikidata.org/entity/Q1131877"
        },
        {
          "@id": "https://grid.ac/institutes/grid.425952.d"
        }
      ]
    },
    {
      "@id": "http://data.beeldengeluid.nl/id/datadownload/0023",
      "@type": "sdo:DataDownload",
      "sdo:contentUrl": {
        "@id": "https://euscreen.eu/series.html?id=EUS_513F04B47411BCDD8C80532EE577FAC4&activeItem=EUS_003399A7DB2D2A6B14313EF963DE4421"
      },
      "sdo:description": {
        "@language": "nl",
        "@value": "Actuele dagelijkse talkshow van Frits Barend en Henk van Dorp. Vaste gast is columnist Jan Mulder. De gasten zitten gezamenlijk aan tafel en reageren op elkaars gespreksonderwerpen."
      },
      "sdo:encodingFormat": "text/html",
      "sdo:inLanguage": "nl-NL",
      "sdo:license": {
        "@id": "http://rightsstatements.org/vocab/InC/1.0/"
      },
      "sdo:name": {
        "@language": "nl",
        "@value": "Barend & van Dorp op EUScreen"
      },
      "sdo:usageInfo": {
        "@id": "https://euscreen.eu/about.html"
      }
    }
  ]
}

Also, datadownloads that are part of the dataset are not listed.

Load data for vegalite visualizations from file

Currently, I either added all the data inside the vegalite spec (or I used a web URL (github raw)).
It's nicer/ more maintainable to separate the specification from the data.
I think it should be possible to use a file from the repo directly, but I'm not sure how to do this (in the context of Vue/Nuxt)

as a product manager I need information on usage of the data website, so I know who is using our data products

Produce website Website statististics, like:

  • number of requests
  • number of unique users
  • list of users
  • most frequent pages requested
  • ...

Use server logs, matomo, or other...

So, additionally, we might generate these statistics also for other data products.

For example... I created a simple shell script that extracts the clients from the server logs:

[wmelder@goldfinger-8 ~]$ cat whousescatapis.sh
for N in `cat /var/log/httpd/cat.apis.beeldengeluid.nl_access.log|cut -d ' ' -f 1 | sort | uniq`
do
        echo -e "$N\t=>\t$(nslookup $N| cut -d '=' -f 2)"
done

[wmelder@goldfinger-8 ~]$ sudo ./whousescatapis.sh
145.126.111.228 =>       wlan111228.wireless.utwente.nl.

Authoritative answers can be found from:
145.126.69.145  =>       wlan069145.wireless.utwente.nl.

Authoritative answers can be found from:
162.240.160.168 =>       server.ewq.pci.mybluehostin.me.

Authoritative answers can be found from:
172.19.53.43    =>       jackspang.beeldengeluid.nl.
31.201.102.24   =>       24-102-201-31.ftth.glasoperator.nl.

Authoritative answers can be found from:
37.161.123.171  =>      ** server can't find 171.123.161.37.in-addr.arpa: NXDOMAIN
52.114.75.216   =>       weu-azsc-urlp.cloudapp.net.

Authoritative answers can be found from:
54.220.158.70   =>       ec2-54-220-158-70.eu-west-1.compute.amazonaws.com.

Authoritative answers can be found from:
87.7.247.26     =>       host-87-7-247-26.retail.telecomitalia.it.

Authoritative answers can be found from:

Get visualization to display proper -& Put visualizations in the right place

Currently:

  1. A vega-lite spec is loaded in pages/datasets/[...slug].vue
  2. it can then be used to populate a VegaView element in components/dataset/TabDashboard.vue

However, you would like to

  1. Load all specs belonging to a specific dataset at once (from all files in one folder, or even all from one file??)
  2. and then embed the Vegaview elements in the .md-file for that specific dashboard

As a dataset shopper, I want to see certain information about a dataset on its page, so that I know how I can use it

The following information should be displayed on the dataset page, where applicable:

  • Links to available tools (e.g. Media Suite)
  • Dataset description
  • Links to available APIs (e.g. Analysis API)
  • Links to NDE/Clariah registers
  • Links to any data downloads
  • Link to the dataset on the SPARQL endpoint
  • Link to the Linked Data schema

Comment moved from this issue:
"Consideration: improve presentation of LOD info of dataset on the dataportal page. To make it clear there is LOD for a dataset. E.g. don't put it on a tab, also consider logo/colors for infobox."

Tasks:

  • Get user feedback (René) as to the desired location of this information (e.g. Description, Metadata...?)
  • Determine where to store the information (spreadsheet, dataset description in register...?)
  • Design a new layout for the page
  • Add the information for the MOZ
  • Display the information on the MOZ page - just in markdown
  • Review with team, adjust
  • Work out how best to display the information, implement this
  • Review with René
  • Add the information used in the final version to the MOZ document in the datasets folder, and update the README to encourage adding this information

Acceptance criteria:

  • The desired information is shown on the MOZ page

Restructure tabs and content

  • Remove labs and topics tab
  • Archive current projects, remove tab
  • Blogs become showcases
  • Update logo, labs -> data

As a data explorer, I want to be able to click through the linked data, so that I can easily browse through it

Feedback René: Access to linked data is currently via the (example queries in the) Comunica endpoint or the resource pages (e.g. https://data.beeldengeluid.nl/id/program/2101608110093854631). The results in the endpoint are not clickable, and the resource pages do not support easy browsing as they have too few links. So if, for example, you see a list of concerts for the MOZ in the endpoint, you can't click on one of the concerts to find out more about it. And if you click through from the resource page for a concert to a person, you can't see the concerts that person is involved in. Whereas it is exactly this sort of clicking through the graph that you would expect for linked data. THIS IS VERY IMPORTANT

Would expect to be able to reach the data easily from the dataset page, but also from the data catalog

Tasks:

  • Investigate if Comunica can enable clickable results. If so, implement this. If not, this issue is out of scope for this roadmap block
  • Test with René

Out of scope:

Acceptance criteria:

  • A user can click through our linked data

As a data administrator, I want clear information about data access on the data.b&g website, so that users expectations are managed

There is a lot of confusion at present about what is possible regarding working with data. In particular as our rules have become stricter recently, and SANE has created expectations that cannot yet be met. The suggestion is to put this information on data.b&g, possibly in the form of a Q&A. This communicates it clearly to users, and also gives B&G colleagues an authoritative reference if they are asked questions.

Tasks:

  • In a Google Doc, clearly state what is and isn't possible for data access
  • Consider how we handle 'exceptions' - e.g. projects in which it is our role to deliver data - how do we leave the door open a crack to these without the door appearing to be wide open ;)
  • Have the document reviewed by Roosmarijn and Roeland
  • Have the document reviewed by the legal department
  • Choose an appropriate format for placing this on the website
  • Consider how the information will be kept up to date (who is responsible? how can the information be updated?)
  • Implement the solution

Acceptance criteria:

  • What is - and is not - possible regarding data is clearly stated on data.beeldengeluid.nl

Manually create vegalite specs for all visualisations

  • Number of concerts per year
  • Distribution over musical genres
  • The top ten creators, based on number of concerts
  • The top ten performers, based on number of concerts
  • Number of concerts per location
  • The top ten production companies, based on number of concerts

STORY B1 As an end user of the data I want to be able to consult the data in a human readable format

STORY B1 As an end user of the data I want to be able to consult the data in a human readable format online so I can find additional information about the resource, and follow links to this resource on platforms that contain additional metadata or the actual video/audio themselves (BOS, OB, Peertube, GPP)

  • At least one link back to a NISV platform should be available (preference for GPP)

  • The link(s) to other platforms provided in the metadata are persistent (not forever, but for the lifetime of the platform)

  • html landingpage must be dynamically generated

EPIC: kickstart the open data lab

Context
Deze Epic beschrijft hoe we vanuit de huidige kennis en infrastructuur komen tot een werkende oplossing die het mogelijk maakt om de vraag naar de data van Beeld en Geluid in een open omgeving.

Hierbij moet rekening gehouden worden met vooral de informatievoorziening richting het netwerk van digitale erfgoedinstellingen waar beeld en Geluid deel van uit maakt. Zie overzichtsplaatje

Verder moet er ook goed gekeken worden naar huidige oplossingen ne de mogelijkheden en beperkingen daarvan.

Taken

DAAN als LD: geschikt voor het open data lab (cc0 & schema.org)

Doel: Perfectioneren van het DAAN LD formaat tbv het ODL en een monster (LD files) op te leveren voor verdere ontwikkelingen.

  • perfectioneer de cc0 versie in schema.org formaat middels de LOD server aan te sluiten op de Flexstore API. zie deze issue
  • implementeer een simpel scriptje om een LD file dump (monster) te maken op basis van de LOD server. zie issue hier
    COMMENT WM: uitzoeken hdt dump
  • publiceer het monster op in de opendatalab GH (ook voor devops)
    COMMENT WM: Het lijkt me niet zinvol om het monster op GH te plaatsen, omdat het data is. En heel veel data. Een link naar een file op een server moet voldoende zijn.
  • stel het NOB op de hoogte van het monster
  • (optioneel) pas profile negotiation toe om beide schema.org en het B&G schema opvraagbaar te maken

DAAN LD in een triple store (devops)

Doel: automatisch uitrollen van VMs met cliopatria triple stores + het geautomatiseerd importeren van linked data files

  • beeldengeluid/labs.beeldengeluid.nl#180
  • importeer het monster (via GH) in de cliopatria store
    COMMENT WM: ik zie geen toegevoegde waarde om dit via GH te doen. Een gewone file link is voldoende. Suggestie: publiceer de file link op de CKAN instance van de mediasuite. Dan kunnen we daar ook de updates bijhouden.
  • gebruik postman om de SPARQL endpoint te testen (met een query die iets uit het monster opdiept)
  • gebruik postman om de service te monitoren

DAAN cc0 collectie gekoppeld aan search API (Elasticsearch)

Doel: in ODL is de DAAN beschikbaar als ES collectie, welke via de search API doorzocht kan worden. De daan-catalogue-aggr index dient als basis (wordt gevuld via de DAAN importer).

  • onderzoek of het nodig is daan-catalogue-aggr te filteren of dat het nodig is een alias aan te maken om bepaalde resources uit te sluiten
  • implementeer een nieuwe search API mapping (voor een nieuwe indexnaam daan-catalogue-aggr-cc0) die ervoor zorgt dat de geretourneerde resources cc0 zijn (b.v. omschrijvingen inkorten en bepaalde velden uitsluiten)
  • reindex de nieuwe alias (of de hele index) naar het AWS ES7 cluster naar het nieuwe daan-catalogue-aggr-cc0

Implementatie DAAN LD importer

Doel: lange termijn voorziening bouwen welke LD kan voorzien welke in sync is met de DAAN catalogus

  • implementeer een nieuwe importer die gebruik maakt van dezelfde cc0 mapping welke gebruikt is bij de LOD server koppeling met de flexstore
  • zorg dat de importer automatisch gedeployed wordt via GitHub actions
  • zorg dat de output eenvoudigweg in LD files wordt opgeslagen OF direct in een AWS triplestore
  • verzin een manier om om te gaan met binnenkomende updates en deletes (hoe wijzig je reeds opgeslagen triples in files; bij triplestore wel vrij eenvoudig)

DAAN geaggregeerde index GTAA links fixen

Doel: Op dit moment zijn er geen GTAA URIs aanwezig in de daan-catalogue-aggr index die door de DAAN importer wordt gevuld... Voor een betere link met het LD werk is het wenselijk deze URIs wel te hebben.

  • pas de DAAN importer aan, zodat de URIs standaard worden meegenomen
  • implementeer een script dat ontbrekende URIs kan bijvoegen in de index
  • zorg dat de index_template (mapping) wordt bijgewerkt

B&G LOD server voor algemeen publiek

Doel: Resolven van B&G DAAN URIs voor het algemene publiek. Waarschijnlijk pas op te leveren als de kopie van de Flexstore beschikbaar is

  • zorg dat de LOD server is aangesloten op de kopie van de Flexstore
  • zorg ervoor dat er een duidelijke afspraak is dat de kopie Flexstore gekoppeld mag worden tbv het ODL
  • test het geheel binnen het domein data.rdlabs.beeldengeluid.nl (in AWS in het ODL)
  • zorg dat het allemaal draait op HTTPS

Finale versie

  • zorg dat het data.beeldengeluid.nl domein gekoppeld is aan de LOD server

add link to the lod-view HTML page for datasets

WM: think that this is what was meant for this issue

add the information that leads to the HTML lodview page to the dataset page

  • use lod-view in labs.beeldengeluid.nl website.

Is it still within scope?

Improve appearance of visualisations tab based on user feedback

Tasks:

  • Determine necessary and feasible improvements based on user feedback (below)
  • Make the improvements in the tab

User feedback:

  • The descriptions for each of the visualizations are a bit padded under with some gaps between them and then the next one starts right off without any gap. At first glance there could be some confusion
  • if the font colors can be changed in the graphs, then it would be good to because right now, they are sort-of light shade, and it could be difficult to read.
  • include more artists in the bubble visualisation
  • consider how to make the bubble sizes show the differences between the values more
  • add context to explain what qualifies as an artist and what as a creator (@KleinRana are we going to add more text in general to this tab?)

Create a dataset page for Amateurfilm

Tasks:

  • Create markdown pages in NL and EN, using the newest format (see MOZ dataset as an example)
  • Write descriptions
  • Determine which stats/viz should be included and add these
  • Add links to the Media Suite and to the Amateurfilm query in the SPARQL endpoint
  • Add link to the NDE register entry
  • After the site has been updated with the new dataset pages, add a link to the dataset page to the mainEntityOfPAge column in the ODL spreadsheet

Regular updates of stats/viz is out of scope

As a data analyst, I want clear information on APIs, so I can see what is available to me

Feedback René: Expects SPARQL/Linked Data to be on the highest level (couldn't find it, as it is a subheading on the B&G Media Catalog APIs page), also expects APIs to be organised according to technical protocol, not according to the content of the datasets. The GTAA page links through to a result page, would expect a query endpoint.

(general comment: APIs are only interesting once you want to get information about a dataset)

Tasks:

  • Review the API information, consider how we can reorganise them to make it easier to find what you need. Should the APIs page be pure technical with links to datasets that can be accessed via the API (and then link to the API page from the content datasets)?
  • Review the link from the GTAA page, can this be to an endpoint? Or is that not feasible/desirable?
  • Test with René, and other users if we can find them

Acceptance criteria:

  • A technical user can find the information they need about APIs

As a dataset analyst, I can view the schema.org schema used by NISV, so I can understand the basics of the data

Tasks:

Feedback from René is in this issue, as the points are about improvements rather than blockers

NB: adding links to the schema to other pages is outside of the current scope

Acceptance criteria:

  • The user can gain a basic understanding of the schema.org entities and properties used for the NISV data

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.