Finalize integration of Roads and Bridges
continuous-integration/drone/push Build is passing Details

This commit is contained in:
Fred Pauchet 2022-06-11 19:52:24 +02:00
parent 9847f652a1
commit e7b66702dc
6 changed files with 70 additions and 28 deletions

View File

@ -701,6 +701,40 @@ Choisissez une licence.
Si votre projet n'en a pas, vous pourriez être tenu responsable de manquements ou de bugs collatéraux.
En cas de désastre médical ou financier, ce simple fichier peut faire toute la différence.
\textit{React, for example, has an additional clause that could potentially cause patent claim conflicts with React users} \cite[p. 47]{roads_and_bridges}.
Cette issue a été adressée en 2017 \footnote{\url{hhttps://github.com/facebook/react/issues/7293}}.
Un autre exemple concerne StackOverflow, qui utilisait une licence Creative Commons de type CC-BY-SA pour chaque contenu posté sur sa plateforme.
Cette licence est cependante limitante, dans la mesure où elle obligeait que chaque utilisateur cite l'origine du code utilisé.
Ceci n'était pas vraiment connu de tous, mais si un utilisateur qui venait à opérer selon des contraintes relativement strictes (en milieu professionnel, par exemple) venait à poser une question sur la plateforme, il aurait été légalement obligé de réattribuer la réponse qu'il aurait pu utiliser.
StackOverflow est ainsi passé vers une licence MIT présentant moins de restrictions.
Trois licences \footnote{Bien qu'il en existe beaucoup} sont généralement proposées et utilisées:
\begin{enumerate}
\item
\textbf{MIT}
\item
\textbf{GPLv3}
\item
\textbf{Fair Source}, annoncée en 2015, qui propose une solution à la nécessité de proposer une licence gratuite pour une utilisation personnelle ou en petites entreprises, tout en étant payante pour une une utilisation commerciale plus large.
\footnote{\textit{Under Fair Source, code is free to view, download, execute, and modify up to a certain number of users in an organization. After that limit is reached, the organization must pay a licencing fee, determined by the published - \url{https://fair.io}}}
\item
\textbf{WTFPL}
\end{enumerate}
Mike Perham, qui maintient Sidekiq, a ainsi proposé une forme de dualité entre la mise à disposition du code source et son utilisation \cite[p. 95]{roads_and_bridges}:
\begin{quote}
\textit{Remember: Open Source is not Free Software.
The source may be viewable on GitHub but that doesn't mean anyone can use it for any purpose.
There's no reason you can't make your source code accessible but also charge to use it.
As long as you are the owner of the code, you have the right to licence it however you want.}
\textit{...[The] reality is most smaller OSS project have a single person doing 95\% of the work.
If this is true, be grateful for unpaid help but don't feel guilty about keeping 100\% of the income.}
\end{quote}
\section{Conclusions}
Comme nous l'avons vu dans la première partie, Django est un framework complet, intégrant tous les mécanismes nécessaires à la bonne évolution d'une application.

View File

@ -10,7 +10,7 @@ Le projet a décollé et Python est maintenant considéré comme l'un des langag
\caption{\url{https://xkcd.com/353/}}
\end{figure}
Le langage est géré en partie par la \textit{Python Software Foundation}, créée en 2001, et en partie par différents sponsors, dont HPE, Intel et Google.
Le langage est géré en partie par la \textit{Python Software Foundation}, créée en 2001, et en partie par différents sponsors, dont HPE, Intel et Google. \footnote{De son côté, Django est soutenu par la \href{https://www.djangoproject.com/foundation/}{Django Foundation}. Elle est alimentée par des volontaires et recevait (en 2013) moins de \$50 000 en donations directes. \cite[p. 112]{roads_and_bridges}}
A première vue ou suivants les langages que vous connaitriez ou auriez déjà abordé, certains concepts restent difficiles à aborder:
@ -820,3 +820,7 @@ facteurs → Construction du fichier setup.cfg
\end{verbatim}
Mypy + black + pylint + flake8 + pyflakes + \ldots
\subsection{Libraries.io}
https://libraries.io/ (mais je ne sais pas encore quoi en faire)

View File

@ -1,5 +1,9 @@
\chapter{Sécurité}
\begin{quote}
New developers simply want to write code that works; they don't know how to make software secure, or they mistakenly assume that the public code they use in their software has been audited for security. \cite[p. 79]{roads_and_bridges}
\end{quote}
\begin{quote}
We put all security issues into JIRA, which all engineers use in their daily work, and they were either 'P1' or 'P2', meaning that they had to be fixed immediately or by the end of the week, even if the issue is only an internally-facing application.

View File

@ -1,4 +1,2 @@
\chapter{Svelte}
\textit{React, for example, has an additional clause that could potentially cause patent claim conflicts with React users} \cite[p. 47]{roads_and_bridges}.
Cette issue a été adressée en 2017 \footnote{\url{hhttps://github.com/facebook/react/issues/7293}}.

View File

@ -70,7 +70,7 @@ La finalité de cette application va être de centraliser la gestion de vos phra
\subsection{Un système de gestion de versions}
Il existe plusieurs systèmes de gestion de versions.
Le plus connu/utilisé à l'heure actuelle est \href{https://git-scm.com/}{Git}, notamment pour sa (très) grande flexibilité et sa rapidité d'exécution.
Le plus connu/utilisé à l'heure actuelle est \href{https://git-scm.com/}{Git}, notamment pour sa (très) grande flexibilité et sa rapidité d'exécution.\footnote{L'adoption massive de Git a rendu la coopération beaucoup facile sur de nombreux projets: avant Git (et Github, qui a popularisé Git), chaque projet utilisait un système de contrôle de version différent. A présent, savoir contribuer à un projet permet de contribuer à tous les projets \cite[p.69]{roads_and_bridges}}
Il est une aide précieuse pour développer rapidement des preuves de concept, switcher vers une nouvelle fonctionnalité, un bogue à réparer ou une nouvelle release à proposer au téléchargement.
Ses deux plus gros défauts concernent sa courbe d'apprentissage pour les nouveaux venus et la complexité des actions qu'il permet de réaliser.
@ -81,18 +81,18 @@ Ses deux plus gros défauts concernent sa courbe d'apprentissage pour les nouvea
\end{figure}
\begin{enumerate}
\item
Même pour un développeur solitaire, un système de gestion de versions (quel qu'il soit) reste indispensable, car il permet d'isoler un ensemble de modifications dans une \textit{unité de travail}, jusqu'à ce que celles-ci forment un tout cohérent:
\begin{enumerate}
\item
Chaque "\textbf{branche}" correspond à une tâche à réaliser: un bogue à corriger (\emph{Hotfix A}), une nouvelle fonctionnalité à ajouter ou un "\emph{truc à essayer}" \footnote{Oui, comme dans "Attends, j'essaie vite un truc, si ça marche, c'est beau."} (\emph{Feature A} et \emph{Feature B}).
\item
Chaque "\textbf{commit}" correspond à une sauvegarde atomique d'un état ou d'un ensemble de modifications cohérentes entre elles.\footnote{Il convient donc de s'abstenir de modifier le CSS d'une application et la couche d'accès à la base de données, sous peine de se faire huer par ses relecteurs au prochain stand-up.}
De cette manière, il est beaucoup plus facile pour le développeur de se concenter sur un sujet en particulier, dans la mesure où celui-ci ne doit pas obligatoirement être clôturé pour appliquer un changement de contexte.
\end{enumerate}
\item
L'historique d'un module est ainsi disponible, sauvé et traçable: qui a réalisé quelle modification à quel moment.
Ceci permet notamment de dessiner l'évolution du code et de mettre un surbrillance que certains modules distincts évoluent un peu trop main dans la main (et devraient donc être refactoriser, selon les principes de développement énumérés plus tôt).
\item
Même pour un développeur solitaire, un système de gestion de versions (quel qu'il soit) reste indispensable, car il permet d'isoler un ensemble de modifications dans une \textit{unité de travail}, jusqu'à ce que celles-ci forment un tout cohérent:
\begin{enumerate}
\item
Chaque "\textbf{branche}" correspond à une tâche à réaliser: un bogue à corriger (\emph{Hotfix A}), une nouvelle fonctionnalité à ajouter ou un "\emph{truc à essayer}" \footnote{Oui, comme dans "Attends, j'essaie vite un truc, si ça marche, c'est beau."} (\emph{Feature A} et \emph{Feature B}).
\item
Chaque "\textbf{commit}" correspond à une sauvegarde atomique d'un état ou d'un ensemble de modifications cohérentes entre elles.\footnote{Il convient donc de s'abstenir de modifier le CSS d'une application et la couche d'accès à la base de données, sous peine de se faire huer par ses relecteurs au prochain stand-up.}
De cette manière, il est beaucoup plus facile pour le développeur de se concenter sur un sujet en particulier, dans la mesure où celui-ci ne doit pas obligatoirement être clôturé pour appliquer un changement de contexte.
\end{enumerate}
\item
L'historique d'un module est ainsi disponible, sauvé et traçable: qui a réalisé quelle modification à quel moment.
Ceci permet notamment de dessiner l'évolution du code et de mettre un surbrillance que certains modules distincts évoluent un peu trop main dans la main (et devraient donc être refactoriser, selon les principes de développement énumérés plus tôt).
\end{enumerate}
\begin{figure}[H]

View File

@ -1,6 +1,10 @@
\chapter{Glossaire}
\begin{description}
\item[GitHub] est une plateforme commerciale qui permet d'héberger du code source.
Ironiquement, GitHub est une plateforme propriétaire qui héberge des projets open source.
Elle a été lancée en 2008 et est la plus connue/reconnue pour tous les aspects de collaboration sur du code (open) source.
GitHub a aidé à standardiser les pratiques de développement, et a amené les projets open source à un meilleur niveau de visibilité.
\item[http]
\emph{HyperText Transfer Protocol}, ou plus généralement le protocole
utilisé (et détourné) pour tout ce qui touche au \textbf{World Wide
@ -23,25 +27,23 @@
\item[ORM]
\emph{Object Relational Mapper}, où une instance est directement (ou à
proximité) liée à un mode de persistance de données.
\item[FOSS, FLOSS, OSS] est un acronyme pour \textit{Free and Open Source Software}, \textit{Free, Libre and Open Source Software} ou (simplement) \textit{Open Source Software}. La contribution a un projet \textit{Open source} n'est pas uniquement au travers de développement, mais également grâce à la correction de bogues, à l'ajout de traductions ou à la gestion de documentation.
\item[PaaS]
\emph{Platform as a Service}, qui consiste à proposer les composants
d'une plateforme (Redis, PostgreSQL, \ldots\hspace{0pt}) en libre
service et disponibles à la demande (quoiqu'après avoir communiqué son
numéro de carte de crédit\ldots\hspace{0pt}).
\item[POO]
La \emph{Programmation Orientée Objet} est un paradigme de programmation
informatique. Elle consiste en la définition et l'interaction de briques
logicielles appelées objets ; un objet représente un concept, une idée
ou toute entité du monde physique, comme une voiture, une personne ou
encore une page d'un livre. Il possède une structure interne et un
comportement, et il sait interagir avec ses pairs. Il s'agit donc de
représenter ces objets et leurs relations ; l'interaction entre les
objets via leurs relations permet de concevoir et réaliser les
fonctionnalités attendues, de mieux résoudre le ou les problèmes. Dès
lors, l'étape de modélisation revêt une importance majeure et nécessaire
pour la POO. C'est elle qui permet de transcrire les éléments du réel
sous forme virtuelle.
La \emph{Programmation Orientée Objet} est un paradigme de programmation informatique.
Elle consiste en la définition et l'interaction de briques logicielles appelées objets ; un objet représente un concept, une idée ou toute entité du monde physique, comme une voiture, une personne ou
encore une page d'un livre.
Il possède une structure interne et un comportement, et il sait interagir avec ses pairs.
Il s'agit donc dereprésenter ces objets et leurs relations ; l'interaction entre les objets via leurs relations permet de concevoir et réaliser les
fonctionnalités attendues, de mieux résoudre le ou les problèmes.
Dès lors, l'étape de modélisation revêt une importance majeure et nécessaire pour la POO.
C'est elle qui permet de transcrire les éléments du réel sous forme virtuelle.
\href{https://fr.wikipedia.org/wiki/Programmation_orient\%C3\%A9e_objet}{Wikipédia}
\item[PyPA] La \emph{Python Package Authority} est une autorité de travail qui se concentre spécifiquement sur la définition de meilleurs standards autour de l'empaquetemment de librairies tierces.
\item[S3]
Amazon \emph{Simple Storage Service} consiste en un système
d'hébergement de fichiers, quels qu'ils soient. Il peut s'agir de