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