From 9b6bdbfef2483729b17607cca3b2129a6abc8b7e Mon Sep 17 00:00:00 2001 From: Francesco Strazzullo Date: Wed, 19 Sep 2018 20:21:51 +0200 Subject: [PATCH 01/12] Added italian version of QuEST material --- QuEST/ENVISION.MD | 76 +++++++++++++++++++++++++++++++++++++++++++++++ QuEST/README.MD | 1 + QuEST/SELECT.MD | 18 +++++++++++ 3 files changed, 95 insertions(+) create mode 100644 QuEST/ENVISION.MD create mode 100644 QuEST/README.MD create mode 100644 QuEST/SELECT.MD diff --git a/QuEST/ENVISION.MD b/QuEST/ENVISION.MD new file mode 100644 index 0000000..ed96c42 --- /dev/null +++ b/QuEST/ENVISION.MD @@ -0,0 +1,76 @@ +# QuEST Envision + +## Come definiamo "Framework" + +* È qualcosa che prende decisioni al posto mio +* Una collezione di assunzioni codificate +* Una libreria che chiama il tuo codice e ti da un'architettura +* Una collezione di strumenti e pattern utile all'implementazione di problemi noti +* Soluzioni precotte +* Conoscenza ed esperienza codificata +* Una convenzione +* Una soluzione che mappa la maggior parte dei problemi +* Una cornice di lavoro in cui sono stato valutati dei compromessi +* un sistema che definisce una struttura su cui si può costruire + +## Scope + +Framework per sviluppo software + +## Valore + +* Il valore che il software porta +* Legato al ciclo di vita --> Per la "gente" lo usa +* Soddisfa i bisogni nel tempo + +## Qual è l'obiettivo del Manifesto? + +* Facilitare il lavoro +* Distillare conversazioni +* Generare consapevolezza + +## Principles + +* Avere chiaro quello che devo fare (lista di requisiti funzionali vs NFR) +* "No Framework" è sempre un'opzione +* Valuta sempre il costo del framework +* Valuta sempre il costo di uscita da ogni singola feature del framework +* Il framework deve poter essere sacrificabile +* Impara i principi alla base del framework +* Valuta quanto le competenze del team possono coprire le feature del framework +* Metti in discussione la framework way +* Prediligi i framework non monolitici +* Scelte tecniche, fatte dai tecnici in collaborazione con gli stakeholder +* Il codice del framework che scegli è comunque codice tuo +* I framework sono una fonte di conoscenza +* Framework come punti di ingresso (abbassa il carico cognitivo per i Junior) +* Ogni progetto ha le sue caratteristiche ed esigenze +* Il valore non è nello scrivere codice ma nel motivo per cui scrivo codice +* Fare ciò che serve +* I criteri delle scelte tecnologiche devono essere condivise a tutto il team +* Stabilisci una convenzione e motivala +* Non essere pigro +* Frameworkless !== Hate Framework +* Presto !== Fretta +* Coraggio (nasce dalla consapevolezza) +* Ogni soluzione è più o meno valida in un contesto +* Non dare nulla per scontato (Brain Driven Development) +* Walking Skeleton +* Simple Design (Evolutionary, Emergent) +* Work on "The Metal" +* Knowledge of Fundamentals +* Avere consapevolezza delle decisioni che sto delegando +* Training Skills with Katas +* L'igengneria è l'arte del compromesso +* Cercare nei framework esempi di soluzioni +* Generare Opzioni, rimandare le decisioni revocabili +* Metti in discussione ciò che credi di aver capito +* Attenzione alle Buzzword +* Rispetto per chi scrive i framework +* Prendi in considerazione il cost of delay +* Riconoscere il valore del framework +* No Silver Bullet (nemmeno questo manifesto) +* Frameworkless come appropriazione e non come rifiuto +* Preparati al fallimento del framework +* Chediti se la scelta presa in passato sia giusta o no +* Documenta e irradia le scelte \ No newline at end of file diff --git a/QuEST/README.MD b/QuEST/README.MD new file mode 100644 index 0000000..b2e9e61 --- /dev/null +++ b/QuEST/README.MD @@ -0,0 +1 @@ +# QuEST Data from Frameworkless workshop \ No newline at end of file diff --git a/QuEST/SELECT.MD b/QuEST/SELECT.MD new file mode 100644 index 0000000..2c8c9da --- /dev/null +++ b/QuEST/SELECT.MD @@ -0,0 +1,18 @@ +# Select + +## Criteri + +*Sceglieremo principi che...* + +**Must Have** + +* Qualcuno di noi li sta applicando +* Aiutano a creare software di valore +* Mettono in evidenza il legame tra scelta e contesto + +**Nice to have** + +* Puntano sulla crescita delle persone +* Guidano le decisioni e non danno soluzioni +* Che siano inclusivi +* Non si prestino ad intepretazioni ambigue \ No newline at end of file From 2686f4c02a766857a25710deae3547d95ecf4fda Mon Sep 17 00:00:00 2001 From: Francesco Strazzullo Date: Wed, 19 Sep 2018 20:23:31 +0200 Subject: [PATCH 02/12] fixed links --- QuEST/README.MD | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/QuEST/README.MD b/QuEST/README.MD index b2e9e61..6e8d2e4 100644 --- a/QuEST/README.MD +++ b/QuEST/README.MD @@ -1 +1,5 @@ -# QuEST Data from Frameworkless workshop \ No newline at end of file +# QuEST Data from Frameworkless workshop + +## [Envision](https://github.com/frameworkless-movement/manifesto/blob/QuEST/QuEST/SELECT.MD) + +## [Select](https://github.com/frameworkless-movement/manifesto/blob/QuEST/QuEST/ENVISION.MD) \ No newline at end of file From 9d4df3cf47ca811005e7dd0cb50e73d565edc373 Mon Sep 17 00:00:00 2001 From: Francesco Strazzullo Date: Thu, 20 Sep 2018 08:18:24 +0200 Subject: [PATCH 03/12] Added Mental Map --- QuEST/Question.svg | 97 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 QuEST/Question.svg diff --git a/QuEST/Question.svg b/QuEST/Question.svg new file mode 100644 index 0000000..a293e5d --- /dev/null +++ b/QuEST/Question.svg @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 6a9c1f6709d7b7e5ffe23c79833aaf5b86b76eb8 Mon Sep 17 00:00:00 2001 From: Francesco Strazzullo Date: Thu, 20 Sep 2018 08:19:30 +0200 Subject: [PATCH 04/12] updated readme --- QuEST/README.MD | 2 ++ 1 file changed, 2 insertions(+) diff --git a/QuEST/README.MD b/QuEST/README.MD index 6e8d2e4..3db40c5 100644 --- a/QuEST/README.MD +++ b/QuEST/README.MD @@ -1,5 +1,7 @@ # QuEST Data from Frameworkless workshop +## [Questioning](https://github.com/frameworkless-movement/manifesto/blob/QuEST/QuEST/Question.svg) + ## [Envision](https://github.com/frameworkless-movement/manifesto/blob/QuEST/QuEST/SELECT.MD) ## [Select](https://github.com/frameworkless-movement/manifesto/blob/QuEST/QuEST/ENVISION.MD) \ No newline at end of file From 6a793f1018b6bba3af3bab91dce47311b91676a4 Mon Sep 17 00:00:00 2001 From: Francesco Strazzullo Date: Thu, 20 Sep 2018 08:25:14 +0200 Subject: [PATCH 05/12] Update principles --- QuEST/ENVISION.MD | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/QuEST/ENVISION.MD b/QuEST/ENVISION.MD index ed96c42..63dbb0c 100644 --- a/QuEST/ENVISION.MD +++ b/QuEST/ENVISION.MD @@ -73,4 +73,5 @@ Framework per sviluppo software * Frameworkless come appropriazione e non come rifiuto * Preparati al fallimento del framework * Chediti se la scelta presa in passato sia giusta o no -* Documenta e irradia le scelte \ No newline at end of file +* Documenta e irradia le scelte +* Conoscenza del Framework come meccanismo di difesa \ No newline at end of file From f5ef843f6431abc6170917c7277b964076528f7e Mon Sep 17 00:00:00 2001 From: Francesco Strazzullo Date: Thu, 20 Sep 2018 08:36:12 +0200 Subject: [PATCH 06/12] Added GDrive link --- QuEST/README.MD | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/QuEST/README.MD b/QuEST/README.MD index 3db40c5..3c7e096 100644 --- a/QuEST/README.MD +++ b/QuEST/README.MD @@ -4,4 +4,6 @@ ## [Envision](https://github.com/frameworkless-movement/manifesto/blob/QuEST/QuEST/SELECT.MD) -## [Select](https://github.com/frameworkless-movement/manifesto/blob/QuEST/QuEST/ENVISION.MD) \ No newline at end of file +## [Select](https://github.com/frameworkless-movement/manifesto/blob/QuEST/QuEST/ENVISION.MD) + +You can find the original Material from our workshop on [Google Drive](https://drive.google.com/drive/folders/1toegTODc3ED_YO7ND81MUE4ZtOkqks_m?usp=sharing) \ No newline at end of file From 2ac989e0d097ac4e32de3620af63419399651891 Mon Sep 17 00:00:00 2001 From: francesco-strazzullo Date: Sun, 4 Nov 2018 16:43:16 +0100 Subject: [PATCH 07/12] fixed links --- QuEST/README.MD | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/QuEST/README.MD b/QuEST/README.MD index 3c7e096..2527e0a 100644 --- a/QuEST/README.MD +++ b/QuEST/README.MD @@ -2,8 +2,8 @@ ## [Questioning](https://github.com/frameworkless-movement/manifesto/blob/QuEST/QuEST/Question.svg) -## [Envision](https://github.com/frameworkless-movement/manifesto/blob/QuEST/QuEST/SELECT.MD) +## [Envision](https://github.com/frameworkless-movement/manifesto/blob/QuEST/QuEST/ENVISION.MD) -## [Select](https://github.com/frameworkless-movement/manifesto/blob/QuEST/QuEST/ENVISION.MD) +## [Select](https://github.com/frameworkless-movement/manifesto/blob/QuEST/QuEST/SELECT.MD) You can find the original Material from our workshop on [Google Drive](https://drive.google.com/drive/folders/1toegTODc3ED_YO7ND81MUE4ZtOkqks_m?usp=sharing) \ No newline at end of file From 3faff6d2fd0e48048afd6e21b1f13949e4b801f9 Mon Sep 17 00:00:00 2001 From: francesco-strazzullo Date: Sun, 4 Nov 2018 16:44:27 +0100 Subject: [PATCH 08/12] Added Take section to QuEST readme --- QuEST/README.MD | 3 +++ 1 file changed, 3 insertions(+) diff --git a/QuEST/README.MD b/QuEST/README.MD index 2527e0a..76b9deb 100644 --- a/QuEST/README.MD +++ b/QuEST/README.MD @@ -6,4 +6,7 @@ ## [Select](https://github.com/frameworkless-movement/manifesto/blob/QuEST/QuEST/SELECT.MD) + +## [Take](https://docs.google.com/spreadsheets/d/15DaeSvxpRwXG9UFfTagVRSl-JqjqLv_15_UzFeUsiW4/edit?usp=sharing) + You can find the original Material from our workshop on [Google Drive](https://drive.google.com/drive/folders/1toegTODc3ED_YO7ND81MUE4ZtOkqks_m?usp=sharing) \ No newline at end of file From 3531f14a0e4ed927a4e18a11c77c7659d6c77f1e Mon Sep 17 00:00:00 2001 From: francesco-strazzullo Date: Sun, 4 Nov 2018 17:45:44 +0100 Subject: [PATCH 09/12] draft of final version of manifesto --- README.md | 59 +++++++++++++++---------------------------------------- 1 file changed, 16 insertions(+), 43 deletions(-) diff --git a/README.md b/README.md index 43a4e6b..6f112cc 100644 --- a/README.md +++ b/README.md @@ -1,59 +1,32 @@ -![Logo](https://file-aorgnbquet.now.sh) - -[![License: CC BY-SA 4.0](https://img.shields.io/badge/License-CC%20BY--SA%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by-sa/4.0/) - -The Frameworkless Movement is a group of developers interested in developing applications without frameworks. We don't hate frameworks, nor we will ever create campaigns against frameworks, but we perceive the **misuse of frameworks as a lack of knowledge regarding technical debt** and the availability of alternatives given by the vanilla language or by dedicated libraries. - -## Why the Movement - -Every time a team uses a framework, it also takes a **risk**. The risk is that after some time has passed the team ends up with a tool that does not provide any kind of value anymore and that most of the times represents a major roadblock to change. Most importantly a framework could "die" way before the software that uses it, leaving the developers with a heavy burden. - -This risk is amplified without the presence of a strong bond between technical decision making, business goals, and user experience. Instead, the non-functional requirements like deadline, lifespan, budget, usability, future business scenarios and domain-specific constraints should be the primary decision drivers for the architectural choices as well as for the implementation roadmap. - -## Is Frameworkless only for developers? - -Because user research, design activities and business goals are those that more clarify the non-functional requirements we think it's important to put everyone who works on the project in our discussion, non-developers included. Every technical decision, including the choice of a framework, should be made considering every aspect of the context the software "lives". +# Frameworkless Manifesto -## Our purpose -We commit to learn and help others learn how to deliver software with a Frameworkless approach. We want to make everyone **consider a "No Framework" as an option when choosing a technology** for a new project or a new feature of an existing project. Finally, we want to help everybody make mindful technical decisions. -## What Frameworkless Movement is - -Like we stated above, **we don't think that frameworks are evil**. They are very powerful tools, written in plain vanilla language and in a very generic way, a fact that makes them great **learning tools** which can help anyone learn how to code **without** them. In order to know how and when you should use a particular framework you have to understand how frameworks work. Understanding the strengths and the constraints of each framework will enable you to make the right choice of a framework. Even more, it will be very clear when you don't need one at all. Grasping the concepts of how frameworks work behind the scenes will deepen your knowledge about the language itself. Knowing the framework's rationale will enable you to write better code for each specific problem you encounter. - -Nonetheless, we believe that a framework, when chosen, should be used responsibly throughout the life of the project. Continuously remind yourself that every tool has some kind of tradeoff. - -Frameworkless means that you must give the right importance to the technological decision making and realize that the choice to develop a project or a single feature with no dependence on a framework is a real possibility! - -Frameworkless also means that you must take into account the entire context where the software will have to "be born" and "live". Including the developers' skills who have to develop the software, deciding if they can get help from a framework keeping in mind the reasons that support this choice and its tradeoffs. - -Finally, Frameworkless means that you should not assume that writing software is a responsibility you can afford to delegate elsewhere and depend on other software (a library for example) to solve a specific problem you have. You can avoid binding hand and foot to a whole framework when you don't really need it. +![Logo](https://file-aorgnbquet.now.sh) -## What Frameworkless Movement is not +[![License: CC BY-SA 4.0](https://img.shields.io/badge/License-CC%20BY--SA%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by-sa/4.0/) -Frameworkless **does not mean that we have to (or we want to) build our own framework**. +The Frameworkless Movement is a group of developers interested in developing applications without frameworks. We don't hate frameworks, nor we will ever create campaigns against frameworks, but we perceive the **misuse of frameworks as a lack of knowledge regarding technical debt** and the availability of alternatives given by the languages or by dedicated libraries. -Frameworkless **does not mean "reinvent the wheel"**. There are a lot of "tools" (frameworks, libraries but also StackOverflow) that solve known and common problems in a great way. +We believe that a framework, when chosen, should be used **responsibly** throughout the life of the project. Continuously remind yourself that **every tool has some kind of tradeoff**. -Frameworkless **does not mean that you must develop all software by yourself without a framework** in every context and in every situation, thinking that this is more secure and more high-performance ([Not Invented Here syndrome](https://en.wikipedia.org/wiki/Not_invented_here#In_computing)), far from it. +We also want to give the right importance to **technical decision-making** and in realizing that the choice to develop a project or a single feature with no dependence on a framework is a **real possibility**. -Frameworkless is not a model where "everyone protects his own point of view" and acts in separate ways and times. Instead, we are in favor of making shared decisions, thinking about the good of the whole project. +**With this manifesto we want to create awareness around these topics, gathering together people in a community.** ## Principles -These are a draft of the principles that guide us: +Everytime that we need to choose a framework for a project we will use these principles to guide our choices. + +* **Every project and every team are unique, with their properties and needs. A good choice for a context could be a bad choice for another one.** -* Our primary objective is to deliver quality software in reasonable time. If we can achieve this without frameworks, we prefer not to use them. -* We commit to study and understand the code of the framework we use. -* We also take into consideration non-functional requirements in order to choose a good framework. -* We make explicit both reasons and tradeoffs behind every technical decision. +* **The choice of a framework is a technical choice and thus should be made by technical people, but to make mindful decisions also all the stakeholders should be kept in consideration.** -## Our Manifesto +* **Every decision should be made considering the context, how a software should work is as much important as what a software should do.** -We are going to define and publish the Manifesto of the Movement. **We want to create it sharing our ideas with other developers, so right now we're creating a distributed team to help us to create a good Manifesto**. If you want to be part of this team please send an email to info@frameworklessmovement.org. +* **The decision-making criteria that made someone to choose a framework should be accessible to all the members in the team.** -## Get Involved +* **The value of a software is not the code itself but in the reasons behind the existence of that code.** -**We accept any kind of feedback**, so if you want to discuss with us about any of the topics stated here just open an Issue or a Pull Request. +## How to sign -Since we don't have a manifesto yet, there's no way to actually sign it for now. **To show appreciation for this idea you can star the repo**, it will help us to understand how many people are interested in this topic. +It will not be possible to sign this Manifesto. **We want to keep it alive letting people modify it over time**. We will use GitHub as a virtual meeting place. You can propose a discussion creating an [Issue](https://github.com/frameworkless-movement/manifesto/issues) or propose a modification to the Manifesto with a [Pull Request](https://github.com/frameworkless-movement/manifesto/pulls). \ No newline at end of file From feb1512b3b42ac15811b1bae204324822c603d2d Mon Sep 17 00:00:00 2001 From: francesco-strazzullo Date: Sun, 4 Nov 2018 18:10:27 +0100 Subject: [PATCH 10/12] typo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 6f112cc..2cc8007 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ We believe that a framework, when chosen, should be used **responsibly** through We also want to give the right importance to **technical decision-making** and in realizing that the choice to develop a project or a single feature with no dependence on a framework is a **real possibility**. -**With this manifesto we want to create awareness around these topics, gathering together people in a community.** +**With this movement we want to create awareness around these topics, gathering together people in a community.** ## Principles From 5b4339b3e4209bb74d66d6ee66da979115a65ef3 Mon Sep 17 00:00:00 2001 From: francesco-strazzullo Date: Thu, 8 Nov 2018 09:11:30 +0100 Subject: [PATCH 11/12] redefining some principle --- README.md | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 2cc8007..bc073e3 100644 --- a/README.md +++ b/README.md @@ -17,16 +17,19 @@ We also want to give the right importance to **technical decision-making** and i Everytime that we need to choose a framework for a project we will use these principles to guide our choices. -* **Every project and every team are unique, with their properties and needs. A good choice for a context could be a bad choice for another one.** +* **The value of a software is not the code itself but in the reasons behind the existence of that code.** -* **The choice of a framework is a technical choice and thus should be made by technical people, but to make mindful decisions also all the stakeholders should be kept in consideration.** +* **Every decision should be made considering the context, not simply the list of requirements.** -* **Every decision should be made considering the context, how a software should work is as much important as what a software should do.** +* **Every project and every team are unique, with their properties and needs. A good choice for a context could be a bad choice for another one.** -* **The decision-making criteria that made someone to choose a framework should be accessible to all the members in the team.** +* **The choice of a framework is a technical choice and thus should be made by technical people, but to make mindful decisions business needs should be kept in consideration.** -* **The value of a software is not the code itself but in the reasons behind the existence of that code.** +* **The decision-making criteria that made someone to choose a framework should be accessible to all the members in the team.** ## How to sign -It will not be possible to sign this Manifesto. **We want to keep it alive letting people modify it over time**. We will use GitHub as a virtual meeting place. You can propose a discussion creating an [Issue](https://github.com/frameworkless-movement/manifesto/issues) or propose a modification to the Manifesto with a [Pull Request](https://github.com/frameworkless-movement/manifesto/pulls). \ No newline at end of file +The purpose of this Manifesto is to have valuable conversations about the movement. We firmly believe that to be useful this manifesto **should be modified during the time as a result of the conversations that our community will have**. Thus, it will not be possible to sign this Manifesto. If you find this Manifesto useful for your work please share it with your network. *Sharing is how we would like people to sign this document* + +We will use GitHub as a virtual meeting place. You can propose a discussion creating an [Issue](https://github.com/frameworkless-movement/manifesto/issues) or propose a modification to the Manifesto with a [Pull Request](https://github.com/frameworkless-movement/manifesto/pulls). + From 5e43f96fec0f4390b4b9b9a89c6039333bc78eaa Mon Sep 17 00:00:00 2001 From: francesco-strazzullo Date: Thu, 8 Nov 2018 09:53:40 +0100 Subject: [PATCH 12/12] merging two principles --- README.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index bc073e3..49c3eb3 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ The Frameworkless Movement is a group of developers interested in developing app We believe that a framework, when chosen, should be used **responsibly** throughout the life of the project. Continuously remind yourself that **every tool has some kind of tradeoff**. -We also want to give the right importance to **technical decision-making** and in realizing that the choice to develop a project or a single feature with no dependence on a framework is a **real possibility**. +We also want to give the right weight to **technical decision-making** and in realizing that the choice to develop a project or a single feature with no dependence on a framework is a **real possibility**. **With this movement we want to create awareness around these topics, gathering together people in a community.** @@ -19,9 +19,7 @@ Everytime that we need to choose a framework for a project we will use these pri * **The value of a software is not the code itself but in the reasons behind the existence of that code.** -* **Every decision should be made considering the context, not simply the list of requirements.** - -* **Every project and every team are unique, with their properties and needs. A good choice for a context could be a bad choice for another one.** +* **Every decision should be made considering the context. A good choice for a context could be a bad choice for another one.** * **The choice of a framework is a technical choice and thus should be made by technical people, but to make mindful decisions business needs should be kept in consideration.**