Giter VIP home page Giter VIP logo

geodes-sms / relis Goto Github PK

View Code? Open in Web Editor NEW
17.0 4.0 15.0 171.24 MB

Tool for conducting systematic literature reviews and mapping studies

Home Page: http://relis.iro.umontreal.ca/

License: GNU General Public License v3.0

CSS 3.67% HTML 0.16% JavaScript 0.14% PHP 94.95% TeX 0.41% R 0.63% Dockerfile 0.03% Shell 0.01%
conducting-systematic-reviews reviewer systematics-literature-review systematic-mapping-study model-driven-engineering domain-specific-language software-engineering collaboration

relis's People

Contributors

abdelhamidrouatbi avatar bricemike1 avatar christmalak90 avatar essadi avatar esyriani avatar gauranshkumar avatar naveen-ku avatar oescal avatar pur2212 avatar sarthakray2 avatar ujjwalhendwe avatar utkarsh4tech avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

relis's Issues

Generate a report of the review protocol

Given a systematic review that was conducted in ReLiS, the goal is to generate automatically a draft document of the protocol of that review.

  1. Create a data structure that represents all the information needed for any protocol.
  2. Create a protocol model from the project configuration file and the database of the project
  3. Generate a report in LaTeX. The report should include all the information specific to the project, some generic information that all reports have, statistics and tables ( about screening, QA, classification), and a PRISMA flow of papers.

An initial prototype of this tool by Lucas Hornung is available here http://www-ens.iro.umontreal.ca/~syriani/files/LucasHornung.zip. But it relies on Eclipse, Ecore, and Java. The idea is to replicate and extend this code in PHP. For code generation (generating the report), we can use https://github.com/divengine/div

Cannot import papers via csv.

Describe the bug
Cannot import papers via csv.
All fields are empty and the preview displays "Undefined table data".
I tried with multiple csv and different delimiters (semicolon, comma, pipe).

Screenshots
image

Built-in categories

Add the following built-in categories in the configuration editor:

  • note: Simple note "Note" [1] : string(500)
  • year: Simple year "Year" * [1] : date style("yyyy") OR int(4) style("[1-2][0-9][0-9][0-9]")
  • venue: DynamicList venue "Venue" [1] venues
  • author: DynamicList author "Author" * [0] authors

If present in the configuration, Year, Venue, and Author should be automatically set for paper classified with the data from the paper. Venue should be a reference to the table of Venues and Author to the table of Authors.

Installation script incomplete

Describe the bug
If you use the relis php script for setup (install/index2.php), an error occurs after first bootstrap of ReLiS.

A PHP Error was encountered
Severity: Warning

Message: touch(): Unable to create file C:/xampp/htdocs/relis/relis_dev/cside/sessions/relis_sessionbsegq89r7kabj6u6rra975mpk7f15884 because No such file or directory

Filename: drivers/Session_files_driver.php

Line Number: 248

To Reproduce
Steps to reproduce the behavior:

  1. Setup a server hosting ReLis
  2. Rename index2.php within install directory to be index.php
  3. Open ReLiS Website http://..../model_install_index.php
  4. Type in the values needed (db creds, admin info)
  5. Install
  6. Click on "Start ReLiS" Button and see the error.

Expected behavior
the directory to store sessions should not be hardcoded and set by install routine automatically.

Screenshots
If applicable, add screenshots to help explain your problem.

Server(please complete the following information):

  • OS: Debian 9
  • Webserver: NGINX
  • PHP Version 7 (some modifications are neccessary to get installation working)

Additional context
I saw this error while trying to migrate the mysql engine to use mysqli all the time.

Unknown reference category

Describe the bug
There is an unknown reference category in the classification phase.

To Reproduce
Steps to reproduce the behavior:

  1. Go to Project Language_Composition
  2. Go to Classification
  3. Click on Reference Categories
  4. See the tools_carateristic category that I never defined.
  5. Clicking on it redirects to http://relis.iro.umontreal.ca/auth/.html

Expected behavior
That category should not be there.

Desktop (please complete the following information):

  • OS: Windows 7
  • Browser: Firefox

error when going back to a screened paper

Describe the bug
When I go back to a paper that has been previously screened, I get an error on the top of the page. But it does not seem to affect the behavior of the application, so it is just annoying.

To Reproduce
Steps to reproduce the behavior:

  1. Screen a paper
  2. Go to Papers in this phase. Choose any list, for example All
  3. See error on top of the page

Expected behavior
There should be no error.

Screenshots
Here is the error:

A PHP Error was encountered

Severity: Warning

Message: count(): Parameter must be an array or an object that implements Countable

Filename: relis/Manager.php

Line Number: 4182

Backtrace:

File: /local/home/relis/public_html/relis_app/controllers/relis/Manager.php
Line: 4182
Function: _error_handler

File: /local/home/relis/public_html/index.php
Line: 315
Function: require_once

Subcategories not saved

Describe the bug
My classification scheme as a subcategory:

Simple tool "Tool support" * [1] : bool {
  Simple tool_name "Tool name" : string
}

When I classify a paper, I can set the values of the subcategory. But when I save it it is not stored.

To Reproduce
Steps to reproduce the behavior:

  1. Go to Language Composition project
  2. Go to the Classification phase
  3. Click on Results > Table
  4. Click on the paper Landin1966 -
  5. If you Edit the classification you can set Tool support and Tool name
  6. When you save the classification, the values are gone.

Expected behavior
The values of subcategories (recursively) should be saved.

Screenshots

Setting the subcategory values

image

It is stored before saving

image

After save, the values are gone

image

Desktop (please complete the following information):

  • OS: Windows 7
  • Browser Firefox

Additional context
This is related to issue #21

Wrong calculation of the gauges on the Screening Dashboard

Describe the bug
The visualized ratio is calculated as (screened-conflics)/all. (In both views: My progress and Overall progress.)

Expected behavior
The visualized ratio should be calculated as screened/all.

Screenshots
image

Desktop (please complete the following information):

  • OS: Windows 7
  • Browser: Chrome
  • Version: 89.0.4389.90 (Official Build) (64-bit)

Inclusion criteria

Currently, there is only support for exclusion criteria. We also need to have a way of specifying inclusion criteria. Therefore, when a paper is included, the reviewer must select a criteria as well (same behavior as for excluding a paper).
In the configuration, we should have a way to specify if the inclusion criteria must be selected when including a paper or if it is optional. Show the dropdown list, but allow an empty inclusion criteria to be selected by default.

List of config files not showing

After a fresh install, I create a new project and generate a config file. The list of config files generated does not appear to install the project. It probably is an access right issue.

An error occurs while creating a new project with a quality assurance step

An error occurs while creating a new project with a quality assurance step :
A PHP Error was encountered
severity: Notice
Message; Undefined index : qa_action
Filename: controllers/install.php
Line Number: 1697
However the project is created successfully

Steps to reproduce the behavior:

  1. Create a new project with QA step

A project must be created without errors

creating_project_error

Removing a paper still assigned in screening

Describe the bug
I first assign a paper to a reviewer for screening. Then I remove the paper. The paper still appears in the the list of the reviewer to screen.

To Reproduce
Steps to reproduce the behavior:

  1. Import or manually add a paper. Suppose the bibtexKey is ABC
  2. Go to Screening. Assign papers. Assign it to me.
  3. Go to Screening. Screen. The paper shows up.
  4. Go to Papers > All. Search for ABC. Click on Delete to remove it. It is correctly removed from all the lists under Paper (All, Included, Excluded, Pending)
  5. Go to Screening. Screen. The paper still shows up.
  6. Go to Statistics. The numbers have not changed.

Expected behavior
In ReLiS, deleting a paper doesn't actually remove it, but deactivates it. When a paper is deactivated, it should not appear anymore in any list: screening, statistics, classification, authors, venues, etc.

Screenshots
For example, you can go to the project Language Composition. Paper Qiao2020_3 is deactivated but still shows up in Naima's screening.
Actually, if you run the following query:

SELECT count(*)
FROM paper
INNER JOIN screening_paper ON screening_paper.paper_id = paper.id
WHERE paper.paper_active=0 and screening_paper.screening_active=1

You should always get 0, but here you get 22. When paper_active=0, screening_active should also =0. I think you must also have classification.class_active=0. The views in the statistics should also take the active status into consideration.

QA data deleted after redeployment

Currently, keep_screening preserves all the screening data when regenerating the project. However it deletes the QA data and classification data. keep_screening should also preserve the QA data. This is defined when the configuration file is updated.

Admin user assigned to project

Admin users are not shown in projects because they have access to all by default. However, if we want to explicitly have them in a project and assign them papers, then they should appear there in participants and assignments. For example, in project "User interaction and interface in MDE" there should be 2 participants, but I only see one.

Error message when viewing the history of a paper

Describe the bug
When we go to a paper to view its history (e.g., log of screening), an error message appears at the top of the page. It is actually a problem on line 4182 in /relis_app/controllers/relis/Manager.php. The code is: if(count($value['val2']>1)){ but count takes a list, not a condition.

To Reproduce
Steps to reproduce the behavior:

  1. Go to a screening phase
  2. Click on Papers in this phase > Included
  3. Click on the title of one paper
  4. See error at the top of the page

Screenshots
image

Desktop (please complete the following information):

  • OS: Windows
  • Browser: Firefox
  • Version: in production

Classify papers without screening

It is currently possible to create a project with only classification (no screening).
However, it is not possible to classify papers that are not screened.
Currently I need to create a dummy screening phase, include all papers, then assign them to the classification phase.

keep_screening

Describe the bug
Suppose I want to redeploy only the classification of a project. I then write keep_screening in the configuration file. However, when I reinstall the project, it removes all the screening statistics, all screened papers. I only see the imported papers, but it is like the screening phase has been reset.

Expected behavior
keep_screening should not modify anything in the screening phases.

Adding one paper from BibTeX not working

Describe the bug
I try to enter the a paper manually by BibTeX. It reports an internal error.

To Reproduce
Steps to reproduce the behavior:

  1. Go to the Project homepage (my project is Language Composition)
  2. Click on Papers > All
  3. Click on Add BibTeX
  4. Write this reference:
    @Article{Test2020,
    author = {Test, Test},
    journal = {Journal Test},
    title = {Title Test},
    year = {2020},
    number = {1},
    pages = {1--2},
    volume = {1},
    doi = {www.google.com},
    paper = {http://dx.doi.org/www.google.com}
    }
  5. Click Submit

Expected behavior
Should add the paper with no errors.

Desktop (please complete the following information):

  • OS: Windows 7
  • Browser: Firefox

Additional context
Add any other context about the problem here.
image

Assigning page showing error when executed in localhost.

Describe the bug
When we go to assign page to assign paper to a user the redirected page shows error, when executed in localhost.

To Reproduce
Steps to reproduce the behavior:

  1. Go to 'screening'
  2. Click on 'Assign papers'
  3. See error

Expected behavior
Assigning paper page to appear.

Screenshots
error

Desktop (please complete the following information):

  • OS: Windows
  • Browser: Firefox
  • Version: in production

Broken link on screen_paper view.

Describe the bug

The link to the paper on the screen_paper view is broken.

image

The generated HTML is the following

<a href="//http://dx.doi.org/10.1145/3180155.3180250" target="black" style="color:#aa7777;">
  <img src="http://relis.iro.umontreal.ca/cside/images/pdf.jpg">
</a>

The issue is that for some reason the URL is prefixed by //.

Other views like display_paper_screen do not exhibit this issue.

Expected behavior

The generated URL is http://dx.doi.org/10.1145/3180155.3180250.

Optional List cannot be empty

Describe the bug
If I create my classification with a list that is not mandatory (no *):
List hello "Hello" [1] = ["Salut", "Ola"]
The classification form does not allow me to leave the value empty. It forces me to choose one of the possible values.

Expected behavior
It should behave like for:
DynamicList hello "Hello" [1] = ["Salut", "Ola"]
which allows me to put an empty value.

Reference categories

There is a problem with the labels and the pages displayed of the reference categories.
In project User interaction and interface in MDE, the configuration had no default values for the hciModel and mdeModel dynamic lists. I see 3 reference categories in the menu: HCI model, hciModel and mdeModel. Should be "HCI model" and "MDE model".

Error: add a new user to the project

Describe the bug
An error appears when I try to add a user to my project.

To Reproduce

  1. I created a new project.
  2. Click on 'Users' in the menu.
  3. Click on the green button "+" to add a new user to the project.
  4. An error page is displayed.

Screenshots
Screen1
Screen2
Screen3

Desktop (please complete the following information):

  • OS: Windows 10
  • Browser: Brave (Chromium) & Microsoft Edge

multi-valued categories

In the configuration file I create any category type (Simple, List, DynamicList) to be multi-valued (so writing [0]). In the classification form, I can only put a single value. How to add multiple values to simple categories? For example if is a string, int, boolean?
Also, if it is a single-valued category [1], the classification form automatically sets the default value to the first one. When it is a multi-value, it keeps it empty by default. It should be empty by default also for single values.

error on results of classification

Describe the bug
After I classify papers, I have an error when I try to see the results: table or charts.

Expected behavior
I should see the results without errors.

Detailed error
This is the error I get for any new project I create.

A Database Error Occurred

Error Number: 1146

Table 'relis_new_2_hci_mde.view_classification_paper' doesn't exist

CALL get_list_classification(0,0,'' )

Filename: models/DBConnection_mdl.php

Line Number: 951

Multiple values not supported for Simple category

Describe the bug
Multiple values not supported for Simple category in the classification scheme.

To Reproduce
Steps to reproduce the behavior:

  1. Go to the project User interaction and interface in MDE
  2. Open the configuration hcimde
  3. On line 21, write: Simple test2 "Test2" * [3] : string(5)
  4. After compiling, if we add a classification to one paper, no value entered for Test2 is allowed.

Expected behavior
I would expect to put multiple values. They can be separated by semi-colons ";"

Desktop (please complete the following information):

  • OS: Windows 10
  • Browser: Firefox
  • Version: 83

broken link of papers in screening

Describe the bug
When screening articles, the link to the PDF of the article is wrongly prefixed by http://relis.iro.umontreal.ca/relis/manager/

To Reproduce
Steps to reproduce the behavior:

  1. Go to the screening page of an article
  2. Click on the PDF icon

Expected behavior
Should go the URL entered in the article link.

Desktop (please complete the following information):

  • Browser: Firefox

Subcategories not allowed in report

In the configuration file, if I create a subcategory in the classification section, I cannot use it in the report section. We should be able to report any category or sub-category (or sub-sub...-category) defined.

Changing the project configuration deletes all activities

Describe the bug
ReLiS is supposed to support iterative systematic reviews. Therefore, we should be able to change the projection configuration (for example the classification scheme). It should allow me to add new categories, delete exiting categories, or update the configuration of existing categories. However, currently, if I re-generate my configuration and re-deploy it, it erases all previous activities: screening, QA, and classification data. Only the papers, authors and venues remain.

To Reproduce
Steps to reproduce the behavior:

  1. Create an initial configuration
  2. Screen one paper
  3. Classify that paper
  4. Modify the configuration
  5. Go back to see the screened papers and classified papers, or any statistics about screening and classification. Everything is erased

Expected behavior
If we want to "reset" the project, then we can delete all papers (see #19). But modifying the configuration should not delete the previous information. It should try to modify what exists. Especially for the classification scheme. We should allow anything the database allows to modify. So if we are modifying a table that has rows, we let MySQL tell us it is allowed or not.

Deleting a paper does not delete its screening assignments

Describe the bug
Deleting a paper does not remove its screening assignments. The assignment is still there for screening. The project owner has to remove the assignments after having removed the papers. This may lead to inconsistent data.

Expected behavior
Deleting a paper should remove its assignments.

highlight keywords

ReLiS allows to store the query string and title/abstracts of all uploaded papers. During screening, it would be very beneficial if, on the screening page of each paper, the keywords of the query string are highlighted in the title and abstract. This will greatly improve the time needed to decide including or excluding a paper. Of course, punctuation (e.g., '"' or '( )') and operators (e.g., AND, OR, NOT, NEAR) should be ignored.

Merge values

Anywhere there is a list, e.g., Venues, Authors, Reference Categories, except Papers, it should be possible to merge values into one. For example, we have two authors, Homer Simpson and H Simpson. We want to merge both into Homer Simpson.

  1. Add a checkbox on each row (e.g., next to View/Delete) to select the desired values, such as the 2 Simpson authors.
  2. At the top of the page, next to the add "+" button, add a Merge button.
  3. This pops a window asking to select which value to keep.
  4. Selecting Homer Simpson and pressing OK changes all foreign keys that were pointing to H Simpson to now point to Homer Simpson and deletes the H Simpson entry.

Subcategories not shown in classification table

Describe the bug
When I have a subcategory, the table only shows the top categories. The classification table should show all columns, including those of subcategories (recursively). Solving this should also solve the same problem when exporting the table to csv.

To Reproduce
Steps to reproduce the behavior:

  1. Go to Language Composition project
  2. Go to the Classification phase
  3. Click on Results > Table
  4. Column "Tool support" has no value

Expected behavior
I should see the following columns:

MDE-based Tool support Tool name Degree of automation
Yes Yes The Tool Automatic

Screenshots
image

Desktop (please complete the following information):

  • OS: Windows 7
  • Browser Firefox

Additional context
This is related to issue #18

Edit assignment in classification

When a paper is pending classification assigned to the currently logged user, it is not possible to reassign the paper to another user via the Edit assignment button. An error is produced. A workaround is to add a new assignment and then delete the current one.
Clicking on "Edit the Assignment" produces the following error:

An uncaught Exception was encountered

Type: ArgumentCountError

Message: Too few arguments to function Op::edit_element(), 1 passed in /local/home/relis/public_html/relis_sys/core/CodeIgniter.php on line 532 and at least 2 expected

Filename: /local/home/relis/public_html/relis_app/controllers/Op.php

Line Number: 2164

Backtrace:

File: /local/home/relis/public_html/index.php
Line: 315
Function: require_once

info Table missing

Describe the bug
Using the installation script currently provided, there is the info table missing. The defintion resides within initial_db.sql but is missing at initial_values.sql (which is the one used by installation script as far as I saw).

Related to #11

Deleting all papers keeps them in the DB

Describe the bug
I imported 166 references. I deleted them all. They do not show in the application. Now I try to add a new paper manually by doing

  1. Go to the Project homepage (my project is Language Composition)
  2. Click on Papers > All
  3. Click on Add new
  4. In the Authors field, I see all the authors of the deleted papers

I checked in the database:
select * from paper
select * from paperauthor
select * from author

All the data is actually still there.

Expected behavior
All the papers and authors of deleted papers should be deleted from the database.

Desktop (please complete the following information):

  • OS: Windows 7
  • Browser: Firefox

Guest shoudl be read-only

Describe the bug
Currently, a guest user can modify some entities in a project like:

  • Authors
  • Venues
  • Exclusion criteria (in classification)
  • Classification
  • Reference categories

To Reproduce
Log in a user with Guest role in a project.

Expected behavior
Everything should be read-only. It should be the equivalent of the Demo user but for a specific project.

Cannot create manual assignments as a Project admin

Describe the bug
@esyriani was able to create manual assignments as a Project admin in the same project. This right might be assigned to a system role rather than a project role.

Expected behavior
A Project admin should be able to create manual assignments.

Track paper source

  1. It should be possible to trace from a paper what its source was (e.g., digital library). This value should be visible in the list of papers.
  2. A source can be tagged as automatic xor manual (to know if it was manually added or not). If automatic, then the search string must be stored as well.
  • Add a field called "Method" which can have one of two values (Automatic, Manual). Automatic is selected by default.
  • Add a field (similar to Description) called "Search query" that can take any text.

Captcha to create user

Currently, the online database is full of spam users.

  1. To avoid this, we need to add a captcha https://developers.google.com/recaptcha/docs/v3 or something similar to verify it is a human who is creating the user.
  2. Delete all obvious users from the online database. They have weird names or are not assigned to any project.

Empty classification table

Describe the bug
The classification result table does not show the data I entered when I did the classification of a paper.

To Reproduce
Steps to reproduce the behavior:

  1. Go to Project Language_Composition
  2. Go to Classification
  3. Click on Result > Table
  4. It shows the paper I have classified, but all the row has no data except for the note.

Expected behavior
It should show all the data I entered. If you click on the paper, you will see the data is there.

Desktop (please complete the following information):

  • OS: Windows 7
  • Browser: Firefox

Additional context
Add any other context about the problem here.
image

image

Permission

Describe the bug
Any user can delete the picture for other users or any project as long as he has the id of the user or project.

To Reproduce
Steps to reproduce the behavior:

  1. Login into ReLiS
  2. Create a new admin user and assign some abbritrary picture to this user.
  3. Create a new user b (Project Manager e.g.)
  4. Login using the admin user and copy the url neccessary to delete it's picture.
  5. Logout
  6. Login using the user b
  7. Open the url previously copied.

Expected behavior
At least if user b has less permissions then the admin user, it schould not be able to delete the picture and some error should be shown. And clearly it should not be possible to delete the picture.

Screening action next to paper info

This enhancement concerns the screening page https://github.com/geodes-sms/relis/blob/master/relis_app/views/relis/screen_paper.php

When screening a paper, the page shows a section (A) with all the paper information (title, pdf link, abstract, etc) and a section (B) with a form to make the decision of including or excluding the paper. Currently, section A is on top of section B. In full screen mode (not in @media), section B can be on the right of section A in order to reduce scrolling by the user.

Support project identification in the URL

Is your feature request related to a problem? Please describe.
I wanted to provide a collaborator with a quick link to the Conflict's page of our project. The URL, however, does not allow this, because it is missing the project ID. If either of us has more than two projects, this, in principle, cannot be achieved by the current URL structure.

Describe the solution you'd like
Instead of this: http://relis.iro.umontreal.ca/op/entity_list/list_papers_screen_conflict.html, I would like this: http://relis.iro.umontreal.ca/[projectID]/screening/conflicts.html.
A REST-compatible URL would be nice.

Stored Procedures incomplete

Describe the bug
After a fresh installation and creation of a new user in ReLiS. I logged in with the new User and tried the nav option "Homepage Settings" which lead me to the following error:

A Database Error Occurred
Error Number: 1305

PROCEDURE relisDB_001.get_list_info does not exist

CALL get_list_info(0,0,'' )

Filename: models/DBConnection_mdl.php

Line Number: 971

To Reproduce
Steps to reproduce the behavior:

  1. Setup ReLiS
  2. Create a new User using the admin user
  3. Log in using the new user
  4. Point to "Homepage Settings"

Expected behavior
Homepage Settings page should open up, or an appropriate message if this action is forbidden for non admin users.

Importing bibtex strips latex commands for accented characters

Describe the bug
Accented characters are represented as latex commands in bibtex files. Relis simply strips the braces and backslashes.

To Reproduce
Import a bibtex entry such as this one

@phdthesis{logre2017preserver,
  title={Pr{\'e}server la S{\'e}paration des Pr{\'e}occupations durant l'Int{\'e}gration de Domaines H{\'e}t{\'e}rog{\`e}nes dans les Syst{\`e}mes Logiciels.(Preserving Separation of Concern while Integrating Heterogeneous Domains in Software Systems).},
  author={Logre, Ivan},
  year={2017},
  school={University of C{\^o}te d'Azur, France}
}

Expected behavior
The title is displayed as Préserver la Séparation des Préoccupations durant l'Intégration de Domaines Hétéogènes dans les Systèmes Logiciels.

Screenshots
image

Desktop:

  • OS: macOS
  • Browser: Firefox
  • Version: 75

Additional context
This happens on the instance hosted at http://relis.iro.umontreal.ca.

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.