diff --git a/chapters/new-project.tex b/chapters/new-project.tex index 3acc9cc..1f94e91 100644 --- a/chapters/new-project.tex +++ b/chapters/new-project.tex @@ -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. diff --git a/chapters/python.tex b/chapters/python.tex index da47e76..9582c97 100644 --- a/chapters/python.tex +++ b/chapters/python.tex @@ -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) diff --git a/chapters/security.tex b/chapters/security.tex index 107c221..c46da29 100644 --- a/chapters/security.tex +++ b/chapters/security.tex @@ -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. diff --git a/chapters/svelte.tex b/chapters/svelte.tex index 26db373..b0aea1a 100644 --- a/chapters/svelte.tex +++ b/chapters/svelte.tex @@ -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}}. diff --git a/chapters/tools.tex b/chapters/tools.tex index 0d44a6a..8234301 100644 --- a/chapters/tools.tex +++ b/chapters/tools.tex @@ -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] diff --git a/glossary.tex b/glossary.tex index fe92d1c..214b3ad 100644 --- a/glossary.tex +++ b/glossary.tex @@ -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