Difference between revisions of "Improve the Code Scanner (GSoC task)"

From Software Heritage Wiki
Jump to navigation Jump to search
(initial page skeleton, still WIP)
 
Line 15: Line 15:
 
Several improvements are possible:
 
Several improvements are possible:
  
* make
+
* make the different algorithms (see [https://forge.softwareheritage.org/source/swh-scanner/history/benchmark/ benchmark branch] in Git) used to query the backend user-selectable
* use our in-memory graph database [https://docs.softwareheritage.org/devel/swh-graph/index.html swh-graph] to speed up fetching the necessary subgraphs.
+
* minimize the number of queries to the [https://archive.softwareheritage.org/api/1/known/doc/ /known API endpoint], in order to consume API rate limit less and be generally more efficient
* write cookers to output new formats (e.g git tarballs/git bundles or even other VCS?)
+
* be adaptive in how the backend is queried, e.g., for code trees that contain less than 1000 files it is more efficient to just query all of them at once, without following the DAG structure (even if it is in theory a faster approach)
* improve unit and end-to-end testing
+
* improve the web-based dashboard view (<code>--interactive</code>), making it more user friendly
* other general code improvements (better progress/error reporting in the frontend, etc.)
+
* add progress reporting during scanning, in particular for large code bases
 +
* add on-disk caching, in particular for large code bases
 +
* integrate into the generated output other information available from the archive, e.g., license information, metadata, provenance information, etc.
 +
* general code improvements, including refactoring and deduplication w.r.t. the rest of the Software Heritage code base (see [https://forge.softwareheritage.org/tag/code_scanner/ open tasks])
  
 
== Desirable skills ==
 
== Desirable skills ==

Revision as of 21:30, 9 March 2021

WORK IN PROGRESS

Introduction

The Software Heritage archive is the most comprehensive open data knowledge base about source code that has been published openly.

As such, it can be used to scan local source code bases to detect which parts of it come from public code, including Free and Open Source Software.

The Software Heritage scanner (swh-scanner) (documentation, code) is a command line tool that enables doing that.

Task description

swh-scanner is currently an experimental tool, which works well in practice, but need some polishing to make it usable in production in real use cases.

Several improvements are possible:

  • make the different algorithms (see benchmark branch in Git) used to query the backend user-selectable
  • minimize the number of queries to the /known API endpoint, in order to consume API rate limit less and be generally more efficient
  • be adaptive in how the backend is queried, e.g., for code trees that contain less than 1000 files it is more efficient to just query all of them at once, without following the DAG structure (even if it is in theory a faster approach)
  • improve the web-based dashboard view (--interactive), making it more user friendly
  • add progress reporting during scanning, in particular for large code bases
  • add on-disk caching, in particular for large code bases
  • integrate into the generated output other information available from the archive, e.g., license information, metadata, provenance information, etc.
  • general code improvements, including refactoring and deduplication w.r.t. the rest of the Software Heritage code base (see open tasks)

Desirable skills

  • Python 3 and Git are a must to work on any Software Heritage project
  • Basic understanding of the Software Heritage data model and of SWHID identifiers
  • JavaScript and front-end web development, if you want to work on the interactive dashboard

Potential mentors

  • Stefano Zacchiroli <zack@upsilon.cc> (zack on IRC)