github.com/grantbow/fit@v0.7.1-0.20220916164603-1f7c88ac81e6/docs/FAQ.md (about)

     1  # FAQ
     2  
     3  Q: Why would you use this?
     4  A: Different people may have different reasons. Bootstrapping project
     5     management without needing any external software dependencies is valuable.
     6     Working offline has advantages. You use whatever tools you want
     7     (SublimeText, notepad, ed, cat, vim..) to manage issues and not be locked
     8     into any vendor-specific tracking software. You keep track of things you
     9     need to do on as granular a level as you want locally without management
    10     complaining about the number of tickets. You follow this convention and keep
    11     your issues alongside your code in the same repo. You can trivially define
    12     your own extensions/conventions to add to this since arbitrary files are
    13     permited.
    14  
    15  Q: What is the project governance model?
    16  A: Currently the project owner (Grant Bowman) and lead contributors make all
    17     project decisions. If/when more people are involved this can be expanded.
    18     Of course forks are possible with all open source projects.
    19  
    20  Q: What is the code of conduct for this project?
    21  A: see CODE_OF_CONDUCT.md
    22  
    23  Q: How does the project respond to vulnerability reports?
    24  A: We will respond asap to any vulnerability reports. Since security is
    25     handled by the filesystem and revision control systems no reports are
    26     expected.
    27  
    28  Q: What is different from [git-bug](https://github.com/michaelmure/git-bug)?
    29  A: That project stores "Operation"s editing each bug/issue. This has advantages
    30     but simplicity isn't one. The trees are also not readily visible. Despite
    31     no lock-in of vendors that particular way git is used makes getting the
    32     information less than trivial. Hashes are not user-friendly either.
    33     This project keeps it simple when simple still fulfills all requirements.
    34  
    35     That project keeps issues "from polluting your project".
    36     This project keeps issues and plain text files in (by default) a top level
    37     directory "issues". We feel that if you are already working with code and/or
    38     command line editors then it seems more natural to work with issues/bugs the
    39     same way.
    40  
    41     That project has a nice interactive terminal UI to make up for the fact
    42     that a computer's filesystem is already has many tools users are already
    43     familiar with to create and edit issues.
    44  
    45     Git-bug has nice graphql and a bridge system for importing github and
    46     launchpad issues. We have focused on github (issues and projects) with some
    47     bugseverywhere support.
    48  
    49  Q: Why change the name from bug to fit?
    50  A: While it took some work, overloading naming conflicts for users and for the
    51     code began to pile up and cause problems as work on new features advanced.
    52     While a bug is somewhat specific to code it is also somewhat pejorative. The
    53     name fit feels better and allows for multiple use cases. fit has
    54     connotations with health and fitness. Working with git the name fit is quite
    55     natural once you get used to it.
    56  
    57     Submodule bugs was changed to issues.
    58         This is may also confuse. This new name for the code directory is the
    59         old name of the directory that holds the issues. This feels like the
    60         most natural choice to reduce future ambiguity.
    61     Submodule bugapp was changed to fitapp.
    62  
    63  Q: Why change the environment variable name from PMIT to FIT?
    64  A: bug was the program written in Go. PMIT was the original name of the storage
    65     system. [Filesystem_Issues](Filesystem_Issues.md) is the new name for the system
    66     that stores the issues. Dave MacFarlane (driusan) created bug and PMIT.
    67     The combination of flat files with was fantastic and just what needed to be created.
    68  
    69     Several assumptions are built into bug and PMIT that do not meet all needs.
    70     Therefore fit has extended bug by writing or rewriting code to handle things
    71     a little differently, trying to retain compability and provide a great
    72     experience to people using the system for the first time. The original bug
    73     repository assumes deleting issues is ok. It assumes tags do not need
    74     values, only true/false present/not present is enough. It uses a tags
    75     subdirectory. It assumes four "tags" are special and need values: Status,
    76     Priority, Milestone and Identifier. They were special cases and were hard
    77     coded.
    78  
    79     Despite the intended jovial meaning, the word "poor" in PMIT feels too
    80     negative. The program binary can be called by any name using using aliases.
    81     The word "poor" is not good description of this highly capable system.
    82  
    83     The "poor man's" idiom as [described](https://www.merriam-webster.com/dictionary/poor%20man's)
    84     is still applicable description in two ways.
    85  
    86     First, PMIT and file system issue systems are much less expensive to set up
    87     and use. Ease of setup is an inherent benefit of filesystem issues.
    88     Unfortunately the "poor man's" idiom can also be used to indicate that an
    89     entity is a facsimile of an original entity but is not as talented or
    90     successful. This feels wrong to me because using a filesystem is in some
    91     ways more talented than other systems and could become very successful in
    92     the future.
    93  
    94     Some of the patches offered to the original driusan/bug repository have been
    95     applied. Development there has slowed down. fit was forked from the original
    96     github repository to continue development and to improve upon the solid code
    97     to do many more things.
    98  
    99     To build the submodules in this golang fork the paths to the modules must be
   100     renamed. Therefore golang version 1.11 or greater and `export
   101     GO111MODULE=on` are required. This allows setting up go.mod files to rename
   102     the build paths and test paths. As of 2019 go.mod files are the best way to
   103     rename module paths. A move to a repo rather than rewriting the original paths
   104     may be worthwhile in the future.
   105  
   106  Q: What's the difference between a DVCS and an SCM?
   107  A: A source code management (SCM) system is a (distributed) version control
   108     system (DVCS) used in the context of source code. All SCM are VCS as well.
   109  
   110  Q: How do I add an issue x?
   111  A: `mkdir issues/x ; edit issues/x/Description ; git add issues/x/Description ; git commit ; git push`
   112  
   113  Q: How do I close issue x?
   114  A: `mv issues/x/tag_Status_* issues/x/tag_Status_closed`
   115  
   116  Q: How do I reopen an issue?
   117  A: `mv issues/x/tag_Status_* issues/x/tag_Status_open`
   118  
   119  Q: How do I rename an issue?
   120  A: `git mv issues/x issues/y`
   121  
   122  Q: How do I share issues?
   123  A: `git clone`
   124  
   125  Q: What if issue names conflict?
   126  A: Why are the issue titles generic? If you're using a shared git repo to
   127     manage issues with other people, make sure you pull (and push) often enough
   128     to avoid conflicts and other users are using descriptive issue titles.
   129  
   130  Q: What if naming issues aren't unique?
   131  A: This is a very flexible part of the convention. Use a convention that works
   132     for your team. Experiment to see what works for you. Using numbers as issue
   133     directory names might work but may limit human readability.
   134  
   135  Q: How do I check the issue creation time?
   136  A: If one of the files in the issue directory has not been changed ls -l will
   137     show it. Checking `git log` is another way. A tag could be added for just
   138     this purpose.
   139  
   140  Q: How do I check when the issue was last updated?
   141  A: [Using find](https://stackoverflow.com/questions/5566310/how-to-recursively-find-and-list-the-latest-modified-files-in-a-directory-with-s)
   142     is a good way, ls -lrt | tail -1 or manually checking the maximum time in
   143     the issue directory. (or `git log`)
   144  
   145  Q: How do I see the issue author?
   146  A: `git log`
   147  
   148  Q: How does a team comment on issues?
   149  A: Adopt a convention to use as an extension of this standard and track it
   150     in a git repo. In the unlikely event that this standard becomes popular,
   151     whatever convention is most widely adopted/considered best practice
   152     should be incorporated into a future version.
   153  
   154     (Whatever the convention is, `git log` will almost certainly be how 
   155      you find the time/author of a comment.)
   156  
   157  Q: How do I enforce [policy x] for a team
   158  A: Write a git hook.
   159  
   160  Q: How do I secure the system?
   161  A: The same way you secure your files and revision control system.
   162  
   163  Q: What do you mean by a job?
   164  A: `Jobs` are the reasons for your issues you track. This term is inspired by
   165     the Value Proposition Canvas by Alexander Osterwalder used with the Business
   166     Model Canvas. Repeatable structures will enable future tools speed up job
   167     completion.
   168  
   169     While people have other terms for "jobs" the Value Proposition Canvas talks
   170     about Customer Jobs vs. Products and Services. Customer Pains are relieved
   171     by pain relievers. Customer gains are created by Gain Creators.
   172  
   173     Jobs are the needs big enough to do something about or hire someone.
   174  
   175     There are many reasons to organize issues. The uses of a [Filesystem_Issues](Filesystem_Issues.md) storage system
   176     could be varied. In today's fast paced environments tasks must queue up if
   177     there is more to do than currently possible without more resources. Things
   178     can get missed if not recorded accurately.
   179  
   180     Computers can generate all kinds of data very quickly. Most data does not
   181     warrant storage in a system like this but some might.
   182  
   183      Help/Service/Support Desks           Software Development
   184      Performance        Issue Log         Bug Tracking
   185      Product Management Network Monitoring     System Administration
   186      Risk Management of Risks, Assets, Projects and Changes
   187  
   188     Non-computer focused areas also benefit where important communications take
   189     place. If you start looking it's amazing where issue type systems may be
   190     used. Simple first come first served queue management like take-a-number,
   191     paper based type medical waiting room or food ordering systems require no
   192     lists or sophisticated management as the result is immediately evident. More
   193     sophisticated systems with many inputs and outputs can be seen through the
   194     lens of tracking issues. These may need to prioritize, sort, filter and view
   195     issues in many different ways.
   196  
   197      CRM         Call Center        Channel Sales Leads   Suggestion Box
   198  
   199      Organizational Onboarding      Customer Support
   200  
   201  Q: Can I continuously adapt my issues?
   202  A: Yes. Recording shared understandings can be difficult even when a system
   203     moves at normal speed. Teams working with important issues need trusted,
   204     reliable systems.
   205  
   206     The storage system can continuously improve, adapt and grow. Professionals
   207     using similar systems find that other assumptions, requirements,
   208     recommendations or conventions may become important after building similar
   209     systems, sometimes simply due to inconsistent data entry by people.
   210     Adjusting the system to it's inputs maintains work efficiency.
   211  
   212     Results and understanding problems are key drivers of success. While
   213     important, methods and specialization do not have the most affect on
   214     success. Building a system with tools that are not continuously user
   215     improvable stems from the common IT project disconnects between software
   216     tool users and tool developers. Unfortunately no one tool can do it all.
   217     Tools that work around different kinds of problems can not address or solve
   218     underlying causes. Tools need to change as problems are more clearly
   219     understood.
   220  
   221  Q: What inspired [Filesystem_Issues](Filesystem_Issues.md) and what does it compare and contrast with?
   222  A: There are some impressive options out there available as open source
   223     software, commercial software and SAAS cloud services providing solutions
   224     tracking many different kinds of issues. There are no shortage of
   225     solutions customized for particular purposes.
   226  
   227     [google search?q=simple+issue+tracker](https://www.google.com/search?q=simple+issue+tracker)
   228     [wikipedia Comparison_of_issue-tracking_systems](https://en.wikipedia.org/wiki/Comparison_of_issue-tracking_systems)
   229     [wikipedia Comparison_of_help_desk_issue_tracking_software](https://en.wikipedia.org/wiki/Comparison_of_help_desk_issue_tracking_software)
   230     [wikipedia Comparison_of_CRM_systems](https://en.wikipedia.org/wiki/Comparison_of_CRM_systems)
   231     [wikipedia Comparison_of_Mobile_CRM_systems](https://en.wikipedia.org/wiki/Comparison_of_Mobile_CRM_systems)
   232     [wikipedia Comparison_of_time_tracking_software](https://en.wikipedia.org/wiki/Comparison_of_time_tracking_software)
   233     [wikipedia Comparison_of_project_management_software](https://en.wikipedia.org/wiki/Comparison_of_project_management_software)
   234     [dist-bugs software](https://dist-bugs.branchable.com/software/)
   235     [chromium adminIntro](https://bugs.chromium.org/p/monorail/adminIntro)
   236  
   237     Inspirations for these conventions, in no particular order ...
   238  
   239     While broad, parts of [Big History](https://en.wikipedia.org/wiki/Big_History)
   240     show themes that are relevant to issue tracking systems. In this narrative,
   241     everything is connected through Threshold Moments. Collective learning is
   242     one of the thresholds that changes everything. There is no going back and
   243     things accelerate when collective learning is engaged. Recording issues can
   244     be seen as assisting a project's collective learning, allowing team members
   245     to better distinguish more important improvements from less important ones.
   246     Many applications bring people together in hubs of interest separated by
   247     massive voids, making the improbable become possible if just the right
   248     "Goldilocks Conditions come together.
   249  
   250     OKR systems used by many companies including Google. It is well evangelized
   251     by Peter Drucker (MBO), Andy Grove of Intel, John Doerr of Kleiner Perkins
   252     VC firm in Menlo Park (who wrote [Measure What Matters](https://www.whatmatters.com/))
   253     and others.
   254  
   255     [David Allen's](https://davidco.com) GTD systems have inspired an amazing
   256     array of other useful systems. His TED talk is great. David says the art of
   257     stresss-free productivity flow is a martial art. Getting appropriately
   258     engaged is what happens during a crisis. It forces you to do the behaviors
   259     that could also be used without a crisis. The paradoxical truths he talks
   260     about can feel awkward, unnatural and unnecessary. Psychic bandwidth is key
   261     from the elements of control and focused attention. They come from much
   262     experience. His three key principles are:
   263      1. Get it out of your head, capture your thinking
   264      2. Identify and make outcome/action decisions
   265      3. Use the right maps
   266  
   267     [Manager Tools](https://www.manager-tools.com) guides organizational development using (un)common sense.
   268  
   269     Mindfulness generally as human beings can only effectively focus on a few
   270     things at a time.
   271  
   272     [Lean Manufacturing](https://en.wikipedia.org/wiki/Lean_manufacturing)
   273     has inspired all of the agile style methods that came afterward.
   274  
   275     [GitLab.com](https://gitlab.com) builds on distributed versioning tools and has extended into a
   276     single application for the entire software development life cycle with
   277     DevOps focused features.
   278  
   279     [Pivotal Tracker](https://www.pivotaltracker.com) is truly amazing for high volume agile software development.
   280  
   281     [Asana.com](https://asana.com) tracks projects well.
   282  
   283     [Axosoft](https://en.wikipedia.org/wiki/Axosoft) offers a proprietary
   284     project management system, specifically the Gitkraken git IDE client and the
   285     [Glo](https://www.gitkraken.com/glo) task tracking system.
   286  
   287     [Trello.com](https://trello.com) provides a great Kanban board.
   288  
   289     [Evernote.com](https://evernote.com) has an array of useful features.
   290  
   291     [ServiceNow.com](https://www.servicenow.com) provides tools for many human workflows.
   292  
   293     [Zenkit.com](https://zenkit.com/en/) does a great job providing an elegant, easy to use system.
   294  
   295     [Wunderlist.com](https://www.wunderlist.com) is a great app for managing tasks.
   296  
   297     [Todoist.com](https://todoist.com) is a new cloud based todo list.
   298  
   299     [notion.so](https://notion.so) is a new cloud based manager for many services.
   300  
   301     [GetDoneDone.com](https://www.getdonedone.com) for bugs and issues looks easy to use.
   302  
   303     [TaskWarrior.org](https://taskwarrior.org) is a command line todo list manager.
   304  
   305     [debbugs](https://www.debian.org/Bugs/) is still used as bugs.debian.org since 1994.
   306  
   307     [Bugzilla](https://www.bugzilla.org) began use in 1998 for mozilla.org
   308  
   309     [BestPractical.com/rt](https://bestpractical.com/request-tracker) Request Tracker started as a perl and email based system in 1999.
   310  
   311     [Bugseverywhere.org](http://bugseverywhere.org) is written in python and supports many different
   312     distributed version control backends. It's been in use since 2005.
   313  
   314     [RedMine.org](https://www.redmine.org) is used in business production environments starting in 2006.
   315  
   316     [Github](https://github.com) by Microsoft and [Bitbucket](https://bitbucket.org) by Atlassian have hosted projects since 2008
   317  
   318     [github.com/duplys/git-issues](https://github.com/duplys/git-issues) is 
   319     very similar to fit but is written in python and uses a hidden branch for
   320     storage depending on a system called a shelf. It was able to store a
   321     version of itself under the .git/ directory so only python is required.
   322     Code was contributed ther but after that it didn't feel stable and was a
   323     bit difficult to debug because of the shelf storage system. Development
   324     activity has also decreased.
   325  
   326     [github.com/dspinellis/git-issue](https://github.com/dspinellis/git-issue)
   327     is a single shell script to work with git. It can use an existing git repo
   328     or a new one. It stores files in a .issues directory as a hierarchy. It is
   329     backward compatible with gi.
   330  
   331     [github.com/jeffWelling/ticgit](https://github.com/jeffWelling/ticgit) is 
   332     another git based system that stores data in a branch.
   333  
   334     Jonathan Corbet wrote a [useful article](https://lwn.net/Articles/281849/)
   335     in 2008 about Distributed bug tracking.
   336  
   337     [github.com/google/git-appraise](https://github.com/google/git-appraise) 
   338     is a distributed code review system written in go that stores reviews as git
   339     objects that reference commits using a built-in git notes system.
   340     [git-scm.com/docs/git-notes](https://git-scm.com/docs/git-notes)
   341  
   342     [github.com/MichaelMure/git-bug](github.com/MichaelMure/git-bug) is a
   343     written in go, uses a golang struct (shown as json) data model to store
   344     changes to bugs as git tree (dir) and git blob objects in a structure like
   345     refs/bugs/<bug-id> which are hashes. These are aggregated into an array
   346     called an OperationPack. It uses a colorful, interactive terminal UI and is
   347     developing a web based UI. It has "bridges" to other trackers and is
   348     packaged for Archlinux.
   349  
   350     The [issue-based information system (IBIS)](https://en.wikipedia.org/wiki/Issue-based_information_system)
   351     is an approach developed in the 1960's for clarifying complex, ill-defined
   352     (aka wicked) problems that involve multiple stakeholders. IBIS focuses on
   353     questions and is especially suited for exploring early phases of problem
   354     solving conversations when a problem is ill-defined.
   355  
   356     [Compendium](https://en.wikipedia.org/wiki/Compendium_(software)) implements
   357     IBIS using a notation made up of issues/questions (?), positions/ideas
   358     (light bulb), supporting pro arguments (+), detracting con arguments (-),
   359     notes (paper) and lists (bullet items). Position/ideas that show
   360     committment can be changed to decisions (gavel).
   361  
   362     Every system has strengths and weaknesses. Any of these may be of more use
   363     to you or more adaptable than this system under various conditions.
   364  
   365  Q: Why do other systems use databases?
   366  A: This is a good question. While that's just how people manage data, let's
   367     take a moment to step back.
   368  
   369     What are the advantages of databases? They are very fast and efficient if
   370     you know what data you want to manage. Designs and models can store large
   371     amounts of data. Access control is also another strength.
   372  
   373     However we are dealing with sometimes ad hoc data. Requirements can and do
   374     change. High speeds, large data sets and database managers and are not
   375     present or needed.
   376  
   377     Filesystems are one of the simplest and most pervasive ways to store data
   378     readily available for users. Access control is sometimes needed for
   379     protecting private data, but the data we are working with is mostly public
   380     and needs to be shared widely among team members who already have the
   381     necessary access restrictions in place. When combined with a version control
   382     system changes can be tracked and reviewed even better than with most
   383     database systems.
   384  
   385  Q: How do I work better with teams?
   386  A: Members of project teams deal with seemingly unending streams of wildly
   387     variable `issues` generated externally or internally at any time.
   388  
   389     Your issue system must scale to meet a changing set of nonlinear needs.
   390     Personal lists of issues are great to capture issues but quickly fail to
   391     provide the important shared team context.
   392  
   393     The performance of the team is optimized by precisely, completely, quickly
   394     and respectfully by saving issues and team member contributions without
   395     detracting from keeping focus on the most impactful team goals. Recording
   396     ideas gives a beneficial outlet for member creativity while simultaneously
   397     allowing other team member views to be recorded. This helps build stronger
   398     shared understanding of team priorities. Wildly variable issue recordings
   399     can be tracked and synchronized, adding other viewpoints and perspectives.
   400  
   401     A set of the fewest, sufficient, shared team conventions help members work
   402     together to achieve shared goals. A system of shared storage is adaptable to
   403     many team needs and can be implemented in many ways. This system has evolved
   404     to capitalize on shared storage with the fewest limitations.
   405  
   406  Q: Why do IT projects run over time and over budget?
   407  A: The alternatives to good IT project practices are are all too common, in IT 
   408     projects and other projects. Intentionally disregard issues are lost.
   409     Project members hope problems known to some but somehow not surfaced will
   410     not attract attention. Facts that may affecting limitng project budget,
   411     time, scope, quality or other resources need to be known despite shifting
   412     pressures. Implementers should keep their own notes in addition to whatever
   413     systems projects provide. Hoping people remember things isn't a recipe for
   414     success as one person's recollection may or may not be valuable to another
   415     project member now or in the future. Due to human nature people who do
   416     notice things will often not say anything, so when they do it's best to
   417     record the ideas they have so everyone has a better chance of providing the
   418     best project outcome possible. These issues need to be recorded immediately
   419     using any available device. Using [Filesystem_Issues](Filesystem_Issues.md) conventions supports this
   420     using your present tools to capture valuable notes and ideas. The fit tool
   421     manages them. Specialized, high maintenance issue systems officially
   422     provided to project team members are not appropriate for collecting all
   423     possible project knowledge.
   424  
   425  Q: How do I write a good bug report?
   426  A: How to Report Bugs Effectively by Simon Tatham
   427  
   428      [sgtatham bugs.html](https://www.chiark.greenend.org.uk/~sgtatham/bugs.html)
   429  
   430     While it can be difficult to read the content of the following URL is carefully written
   431     and can help people better understand the perspectives of people involved in
   432     the lifecycle of open source software. Many people have never tried to code a
   433     fix to a software bug. Be prepared to accept language and/or terminology that
   434     may feel very colloquial, informal or casual.
   435  
   436      [catb.org smart-questions.html](http://www.catb.org/esr/faqs/smart-questions.html)
   437  
   438     Many pages on this site may be of help researching these types of systems.
   439  
   440      [softwaretestinghelp howto](https://www.softwaretestinghelp.com/how-to-write-good-bug-report/)
   441  
   442  Q: This can never work because [...]
   443  A: Okay, so use something that works better for you.
   444