SMOLNET PORTAL home about changes
iAdd MVP principle to bitreich style. - bitreich-style - Style guide for programmers.	Err	bitreich.org	70
hgit clone git://bitreich.org/bitreich-style	URL:git://bitreich.org/bitreich-style	bitreich.org	70
1Log	/scm/bitreich-style/log.gph	bitreich.org	70
1Files	/scm/bitreich-style/files.gph	bitreich.org	70
1Refs	/scm/bitreich-style/refs.gph	bitreich.org	70
1Tags	/scm/bitreich-style/tag	bitreich.org	70
1README	/scm/bitreich-style/file/README.md.gph	bitreich.org	70
1LICENSE	/scm/bitreich-style/file/LICENSE.gph	bitreich.org	70
i---	Err	bitreich.org	70
1commit a9d1a41e65352022f88865d209269def59979346	/scm/bitreich-style/commit/a9d1a41e65352022f88865d209269def59979346.gph	bitreich.org	70
1parent f428b125ec23c9c03c88380e2ecde62c04a943bf	/scm/bitreich-style/commit/f428b125ec23c9c03c88380e2ecde62c04a943bf.gph	bitreich.org	70
hAuthor: Christoph Lohmann <20h@r-36.net>	URL:mailto:20h@r-36.net	bitreich.org	70
iDate:   Sun, 22 Aug 2021 21:39:16 +0200	Err	bitreich.org	70
i	Err	bitreich.org	70
iAdd MVP principle to bitreich style.	Err	bitreich.org	70
i	Err	bitreich.org	70
iDiffstat:	Err	bitreich.org	70
i  A MVP.txt                             |     115 +++++++++++++++++++++++++++++++	Err	bitreich.org	70
i	Err	bitreich.org	70
i1 file changed, 115 insertions(+), 0 deletions(-)	Err	bitreich.org	70
i---	Err	bitreich.org	70
1diff --git a/MVP.txt b/MVP.txt	/scm/bitreich-style/file/MVP.txt.gph	bitreich.org	70
i@@ -0,0 +1,115 @@	Err	bitreich.org	70
i+Original: gopher://katolaz.net/0/p/MVP.txt	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+@var title = "Minimal Viable Programs"	Err	bitreich.org	70
i+@var tags = "programming"	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+A minimal viable program is the smallest program that solves a	Err	bitreich.org	70
i+particular problem.  It is small and beautiful. It has no additional	Err	bitreich.org	70
i+features.	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+If you removed a single feature it would be totally useless. If you	Err	bitreich.org	70
i+added a new feature that feature would not be essential, you could use	Err	bitreich.org	70
i+the program without making use of the new feature.	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+Very few of the programs I use are minimal viable programs, but some	Err	bitreich.org	70
i+are. I'll describe one such program. This is the ticket system that	Err	bitreich.org	70
i+was used in the Erlang distribution.	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+* The Erlang Ticket System	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+The Erlang ticket system was designed and implemented by Peter Högfeldt	Err	bitreich.org	70
i+in 1986.  We needed a ticket system that was easy to use, intuitive,	Err	bitreich.org	70
i+reliable and we wanted it yesterday, so Peter got the job, since he	Err	bitreich.org	70
i+was very busy and didn't have time to take on any new jobs.	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+If you want a job done find the busiest person you know and give them	Err	bitreich.org	70
i+an extra job.  This is because the reason they are busy is that lot's	Err	bitreich.org	70
i+of people want them to do things because they are good at doing things	Err	bitreich.org	70
i+and that's why they are busy.	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+Peter built the ticket system in a couple of hours and we've been	Err	bitreich.org	70
i+using it ever since. I guess the couple of hours were divided into an	Err	bitreich.org	70
i+hours drinking coffee and drawing things on a white board and twenty	Err	bitreich.org	70
i+minutes programming.	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+* The Ticket System	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+Peter's ticket system was simple in the extreme. There was one command.	Err	bitreich.org	70
i+You typed **newticket** in the shell and got an integer back. Like this:	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+$ new_ticket	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+The system had made a new file in `${HOME}/tickets/23` and the content 	Err	bitreich.org	70
i+of the file would be:	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+ticket: 23	Err	bitreich.org	70
i+responsible:joe@erix	Err	bitreich.org	70
i+status:open	Err	bitreich.org	70
i+title: ?	Err	bitreich.org	70
i+----	Err	bitreich.org	70
i+Describe your problem here	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+This file was also checked into a global CVS archive that all project	Err	bitreich.org	70
i+members had access to. Today one might use GIT or SVN but any revision	Err	bitreich.org	70
i+control system would do.	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+The ticket system had a few simple rules:	Err	bitreich.org	70
i+	Err	bitreich.org	70
i++ The status is open or closed	Err	bitreich.org	70
i++ The responsible person cannot be changed to somebody new without the permission of the new person	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+Project management wanted a reporting system. This was pretty easy,	Err	bitreich.org	70
i+this was done with a few simple shell scripts. For example to	Err	bitreich.org	70
i+find the number of open tickets a simple shell script does the job:	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+#!/bin/sh	Err	bitreich.org	70
i+grep 'status:open' ${HOME}/tickets/* | wc	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+The first ticket system was operational in 1985 and we have used it ever since.	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+* Adding features	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+Do we need to add additional features? The first point to note is	Err	bitreich.org	70
i+there is no time or dates - but wait a moment, this file is checked into	Err	bitreich.org	70
i+a revision control system, so the times when the file is created and modified	Err	bitreich.org	70
i+are in the revision control system and do not need to be added to the ticket.	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+* What happened later?	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+Feature were added - but none that broke the original spirit of the design.	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+* But we can't make money from a MVP	Err	bitreich.org	70
i+  	Err	bitreich.org	70
i+  Many companies sell ``features'' - so a MVP will be useless - a product	Err	bitreich.org	70
i+needs new features. But the MVP program will do exactly the same thing	Err	bitreich.org	70
i+in 100 years time as it did yesterday.	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+New features mean new sales opportunities, good for the company but	Err	bitreich.org	70
i+not good for the user.	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+New features mean new untested code, and backwards incompatibility	Err	bitreich.org	70
i+with earlier versions of the program. Things that are stable for a	Err	bitreich.org	70
i+long time are good.	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+The problem with adding features to MVP is that when we ship more	Err	bitreich.org	70
i+complex products like complete operating systems that are packed with	Err	bitreich.org	70
i+programs, the complexity of the individual programs contributes to the	Err	bitreich.org	70
i+complexity of the whole.	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+If a system shipped with one complex program it probably would not	Err	bitreich.org	70
i+matter - and it's difficult to imagine the idea of a MVP applying to	Err	bitreich.org	70
i+a complex program like photoshop.	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+If the individual components in a system are not MVPs we will soon be	Err	bitreich.org	70
i+overburdened by complexity when we start combining programs to build	Err	bitreich.org	70
i+larger systems.	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+If we to have any control over complexity then we should ensure that the	Err	bitreich.org	70
i+basic components are MVPs.	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+I really like systems that do one essential thing and do it well.	Err	bitreich.org	70
i+Good examples are Dropbox and Twitter. Dropbox just works. Twitter	Err	bitreich.org	70
i+has a no fuss 140 character tweet box. Simple, easy to understand	Err	bitreich.org	70
i+and minimalist.	Err	bitreich.org	70
i+	Err	bitreich.org	70
.
Response: text/plain
Original URLgopher://bitreich.org/0/scm/bitreich-style/commit/a9d1a41...
Content-Typetext/plain; charset=utf-8