diff --git a/common/images/swh-guix-1.png b/common/images/swh-guix-1.png new file mode 100644 index 0000000..c46f4e6 Binary files /dev/null and b/common/images/swh-guix-1.png differ diff --git a/common/images/swh-guix-2.png b/common/images/swh-guix-2.png new file mode 100644 index 0000000..63153a2 Binary files /dev/null and b/common/images/swh-guix-2.png differ diff --git a/common/modules/swh-fuse.org b/common/modules/swh-fuse.org index 288d193..9649825 100644 --- a/common/modules/swh-fuse.org +++ b/common/modules/swh-fuse.org @@ -1,87 +1,89 @@ #+COLUMNS: %40ITEM %10BEAMER_env(Env) %9BEAMER_envargs(Env Args) %10BEAMER_act(Act) %4BEAMER_col(Col) %10BEAMER_extra(Extra) %8BEAMER_opt(Opt) #+INCLUDE: "prelude.org" :minlevel 1 ** Software Heritage Filesystem (SwhFS) :PROPERTIES: :CUSTOM_ID: oneslide :END: *** The *Software Heritage Filesystem (SwhFS)* is a user-space POSIX filesystem that enables browsing parts of the Software Heritage archive as if it were locally available. *** - code: https://forge.softwareheritage.org/source/swh-fuse/ - documentation: https://docs.softwareheritage.org/devel/swh-fuse/ *** #+BEGIN_EXPORT latex \begin{thebibliography}{Foo Bar, 1969} \bibitem{Allancon2021} Thibault Allançon, Antoine Pietri, Stefano Zacchiroli \newblock The Software Heritage Filesystem (SwhFS): Integrating Source Code Archival with Development \newblock ICSE 2021: The 43rd International Conference on Software Engineering \newblock \url{https://arxiv.org/abs/2102.06390} \end{thebibliography} #+END_EXPORT * Software Heritage Filesystem (SwhFS) --- Tutorial :PROPERTIES: :CUSTOM_ID: tutorial :END: ** Software Heritage Filesystem (SwhFS) --- Tutorial - https://docs.softwareheritage.org/devel/swh-fuse/ - #+BEAMER: \footnotesize +*** #+BEGIN_SRC $ pip install swh.fuse # install SwhFS $ mkdir swhfs $ swh fs mount swhfs/ # mount the archive $ ls -1F swhfs/ # list entry points archive/ # <- start browsing from here cache/ origin/ README #+END_SRC ** Software Heritage Filesystem (SwhFS) --- Tutorial (cont.) +*** #+BEAMER: \footnotesize #+BEGIN_SRC $ cd swhfs/ $ cat archive/swh:1:cnt:c839dea9e8e6f0528b468214348fee8669b305b2 #include int main(void) { printf("Hello, World!\n"); } #+END_SRC ** Software Heritage Filesystem (SwhFS) --- Tutorial (cont.) +*** #+BEAMER: \footnotesize #+BEGIN_SRC $ cd archive/swh:1:dir:1fee702c7e6d14395bbf5ac3598e73bcbf97b030 $ ls | wc -l 127 $ grep -i antenna THE_LUNAR_LANDING.s | cut -f 5 # IS THE LR ANTENNA IN POSITION 1 YET # BRANCH IF ANTENNA ALREADY IN POSITION 1 #+END_SRC ** Software Heritage Filesystem (SwhFS) --- Tutorial (cont.) +*** #+BEAMER: \footnotesize #+BEGIN_SRC $ cd archive/swh:1:rev:9d76c0b163675505d1a901e5fe5249a2c55609bc $ ls -F history/ meta.json@ parent@ parents/ root@ $ jq '.author.name, .date, .message' meta.json "Michal Golebiowski-Owczarek" "2020-03-02T23:02:42+01:00" "Data:Event:Manipulation: Prevent collisions with Object.prototype ..." $ find root/src/ -type f -name '*.js' | xargs cat | wc -l 10136 #+END_SRC diff --git a/common/modules/swh-id-syntax.org b/common/modules/swh-id-syntax.org index 9535f80..795f8be 100644 --- a/common/modules/swh-id-syntax.org +++ b/common/modules/swh-id-syntax.org @@ -1,71 +1,71 @@ #+COLUMNS: %40ITEM %10BEAMER_env(Env) %9BEAMER_envargs(Env Args) %10BEAMER_act(Act) %4BEAMER_col(Col) %10BEAMER_extra(Extra) %8BEAMER_opt(Opt) #+INCLUDE: "prelude.org" :minlevel 1 ** Software Heritage Identifiers (SWHIDs) \hfill [[https://docs.softwareheritage.org/devel/swh-model/persistent-identifiers.html][(full spec)]] :PROPERTIES: :CUSTOM_ID: oneslide :END: #+LATEX: \centering #+LATEX: \mode{\only<1>{\includegraphics[width=\linewidth]{SWHID-v1.4_1.png}}} #+LATEX: \mode{\only<2>{\includegraphics[width=\linewidth]{SWHID-v1.4_2.png}}} #+LATEX: \only<3->{\includegraphics[width=\linewidth]{SWHID-v1.4_3.png}} #+LATEX: \forcebeamerend \vspace{-6mm} *** An emerging standard :B_block: :PROPERTIES: :BEAMER_act: <4-> :BEAMER_COL: .6 :BEAMER_env: block :END: - in Linux Foundation's [[https://spdx.github.io/spdx-spec/appendix-VI-external-repository-identifiers/#persistent-id][SPDX 2.2]] - IANA-registered ="swh:"= URI prefix - WikiData property [[https://www.wikidata.org/wiki/Property:P6138][P6138]] *** Examples :B_block: :PROPERTIES: :BEAMER_act: <5-> :BEAMER_COL: .4 :BEAMER_env: block :END: - [[https://archive.softwareheritage.org/swh:1:cnt:64582b78792cd6c2d67d35da5a11bb80886a6409;origin=https://github.com/virtualagc/virtualagc;visit=swh:1:snp:3c074afad81ad6b14d434b96e705e01d184752cf;anchor=swh:1:rev:007c2b95f301f9438b8b74d7993b7a3b9a66255b;path=/Luminary099/THE_LUNAR_LANDING.agc;lines=245-261/][Apollo 11 AGC excerpt]] - [[https://archive.softwareheritage.org/swh:1:cnt:bb0faf6919fc60636b2696f32ec9b3c2adb247fe;origin=https://github.com/id-Software/Quake-III-Arena;visit=swh:1:snp:4ab9bcef131aaf449a7c01370aff8c91dcecbf5f;anchor=swh:1:rev:dbe4ddb10315479fc00086f08e25d968b4b43c49;path=/code/game/q_math.c;lines=549-572/][Quake III rsqrt]] * The SWH-ID: the source code fingerprint :PROPERTIES: :CUSTOM_ID: main :END: ** The SWH-ID schema :PROPERTIES: :CUSTOM_ID: swh-id-syntax :END: #+LATEX: \centering\forcebeamerstart #+LATEX: \only<1>{\includegraphics[width=\linewidth]{SWH-ID-1.png}} #+LATEX: \only<2>{\includegraphics[width=\linewidth]{SWH-ID-2.png}} #+LATEX: \only<3>{\includegraphics[width=\linewidth]{SWH-ID-3.png}} #+LATEX: \forcebeamerend - -* Compute your own SWHIDs +* Compute your own SWHIDs \hfill \href{https://pypi.org/project/swh.model/}{pypi.org/project/swh.model} :PROPERTIES: :CUSTOM_ID: swhidentify :END: +** #+BEAMER: \footnotesize #+BEGIN_SRC -$ pip install swh-model[cli] # https://pypi.org/project/swh.model/ +$ pip install swh-model[cli] $ swh identify fork.c kmod.c sched/deadline.c swh:1:cnt:2e391c754ae730bd2d8520c2ab497c403220c6e3 fork.c swh:1:cnt:0277d1216f80ae1adeed84a686ed34c9b2931fc2 kmod.c swh:1:cnt:57b939c81bce5d06fa587df8915f05affbe22b82 sched/deadline.c $ swh identify --no-filename /usr/src/linux/kernel/ swh:1:dir:f9f858a48d663b3809c9e2f336412717496202ab $ git clone --mirror \ https://forge.softwareheritage.org/source/helloworld.git $ swh identify --type snapshot helloworld.git/ swh:1:snp:510aa88bdc517345d258c1fc2babcd0e1f905e93 helloworld.git #+END_SRC #+BEAMER: \normalsize ** Warning If you expect /others/ to be able to resolve the SWHIDs of source code you care about, you should make sure the corresponding software is archived in Software Heritage. diff --git a/talks-public/2021-03-20-libreplanet/2021-03-20-libreplanet.org b/talks-public/2021-03-20-libreplanet/2021-03-20-libreplanet.org new file mode 100644 index 0000000..d348b04 --- /dev/null +++ b/talks-public/2021-03-20-libreplanet/2021-03-20-libreplanet.org @@ -0,0 +1,97 @@ +#+COLUMNS: %40ITEM %10BEAMER_env(Env) %9BEAMER_envargs(Env Args) %10BEAMER_act(Act) %4BEAMER_col(Col) %10BEAMER_extra(Extra) %8BEAMER_opt(Opt) +#+TITLE: Software Heritage +#+SUBTITLE: The Great Library of Source Code +#+BEAMER_HEADER: \date[2021-03-20, LibrePlanet]{20 March 2021\\LibrePlanet\\online} +#+DATE: 20 March 2021 + +#+INCLUDE: "../../common/modules/prelude-toc.org" :minlevel 1 +#+INCLUDE: "../../common/modules/169.org" +#+BEAMER_HEADER: \institute[Software Heritage]{Université de Paris \& Inria --- \href{mailto:zack@upsilon.cc}{\tt zack@upsilon.cc}} +#+BEAMER_HEADER: \author{Stefano Zacchiroli} + +* The Free Software commons +** Our Software Commons + #+INCLUDE: "../../common/modules/foss-commons.org::#commonsdef" :only-contents t + #+BEAMER: \pause +*** Source code is /a precious part/ of our commons + \hfill are we taking care of it? + #+INCLUDE: "../../common/modules/swh-motivations-foss.org::#fragile" :minlevel 2 + +* Software Heritage + #+INCLUDE: "../../common/modules/swh-goals-oneslide-vertical.org::#goals" :minlevel 2 + #+INCLUDE: "../../common/modules/principles-compact.org::#principles" :minlevel 2 + #+INCLUDE: "../../common/modules/status-extended.org::#archivinggoals" :minlevel 2 + #+INCLUDE: "../../common/modules/status-extended.org::#architecture" :minlevel 2 :only-contents t + #+INCLUDE: "../../common/modules/data-model.org::#merklestruct" :minlevel 2 + #+INCLUDE: "../../common/modules/status-extended.org::#archive" :minlevel 2 +** Software Heritage and GNU Guix + #+BEAMER: \begin{center}\hfill\includegraphics[height=0.6\textheight]{swh-guix-1}\hfill\includegraphics[height=0.6\textheight]{swh-guix-2}\hfill\end{center} + #+BEAMER: \scriptsize + - \url{https://www.softwareheritage.org/2019/04/18/software-heritage-and-gnu-guix-join-forces-to-enable-long-term-reproducibility/} + - \url{https://guix.gnu.org/blog/2019/connecting-reproducible-deployment-to-a-long-term-source-code-archive/} + +* Using the archive +** Web interface + #+BEAMER: \centering \huge + #+BEAMER: \href{https://archive.softwareheritage.org}{archive.softwareheritage.org} + #+BEAMER: \vfill + #+BEAMER: DEMO TIME ! + + # searches: + # - gnu gcc git + # - git-annex + # - apollo11 chrislgarry + # - unix history dspinellis + + #+INCLUDE: "../../common/modules/status-extended.org::#apiintro" :minlevel 2 + #+INCLUDE: "../../common/modules/swhid.org::#oneslide" :minlevel 2 + #+INCLUDE: "../../common/modules/swhid.org::#swhidentify" :minlevel 2 + #+INCLUDE: "../../common/modules/swh-fuse.org::#oneslide" :minlevel 2 + #+INCLUDE: "../../common/modules/swh-fuse.org::#tutorial" :minlevel 2 :only-contents t + +* How you can help +** You can help! +*** Financially + - Donations: [[https://www.softwareheritage.org/donate/][www.softwareheritage.org/donate/]] + - Sponsoring: [[https://www.softwareheritage.org/support/sponsors/][www.softwareheritage.org/support/sponsors/]] +*** :B_ignoreheading: + :PROPERTIES: + :BEAMER_env: ignoreheading + :END: + #+BEAMER: \vspace{-2mm} +*** Coding + - Developer info: [[https://www.softwareheritage.org/community/developers/][www.softwareheritage.org/community/developers/]] +*** :B_ignoreheading: + :PROPERTIES: + :BEAMER_env: ignoreheading + :END: + #+BEAMER: \vspace{-2mm} +*** Expanding archive coverage + - [[https://save.softwareheritage.org/][save.softwareheritage.org]] + - Development grants: + [[https://framaforms.org/expression-of-interest-expanding-software-heritage-1589195728][framaforms.org/expression-of-interest-expanding-software-heritage-1589195728]] +*** :B_ignoreheading: + :PROPERTIES: + :BEAMER_env: ignoreheading + :END: + #+BEAMER: \vspace{-2mm} +*** Student opportunities + - Internships: [[https://wiki.softwareheritage.org/wiki/Internships][wiki.softwareheritage.org/wiki/Internships]] + - Google Summer of Code 2021: [[https://wiki.softwareheritage.org/wiki/gsoc][wiki.softwareheritage.org/wiki/gsoc]] + +* FAQ :B_appendix: + :PROPERTIES: + :BEAMER_env: appendix + :END: +** Q: do you archive /only/ Free Software? + - We only crawl origins /meant/ to host source code (e.g., forges) + - Most (~90%) of what we /actually/ retrieve is textual content + #+BEAMER: \vfill +*** Our goal + Archive *the entire Free Software Commons*, present and future. + + #+BEAMER: \vfill +*** + - Large parts of what we retrieve is /already/ Free Software, today + - Most of the rest /will become/ Free Software in the long term + - e.g., at copyright expiration diff --git a/talks-public/2021-03-20-libreplanet/Makefile b/talks-public/2021-03-20-libreplanet/Makefile new file mode 100644 index 0000000..68fbee7 --- /dev/null +++ b/talks-public/2021-03-20-libreplanet/Makefile @@ -0,0 +1 @@ +include ../Makefile.slides