65 comments

  • AceJohnny2 5 hours ago ago

    I love seeing these projects make use of the wide-open namespace/references that git provides (outside of the basic `refs/heads` for git branches and `refs/tags` for tags). It looks like they store the data in the `bugs` namespace [1] (so refs/bugs/foo).

    Other projects also make use of alternate namespaces. The oft-forgotten built-in "git notes" puts stuff in the `refs/notes/` namespace (specifically in `refs/notes/commits`). Gerrit uses the virtual `refs/for/` namespace for receiving commits for review, stores project config in `refs/meta/config`, and stores User data in `refs/users/` in a special repo [2]. I'm sure others do interesting things.

    Alternate uses of git's DAG model are fascinating.

    [1] https://github.com/git-bug/git-bug/blob/bd936650ccf44ca33cf9...

    [2] https://gerrit-review.googlesource.com/Documentation/config-...

    • michaelmure 4 hours ago ago

      Yes, this really meant to be some sort of framework for storing entities in git, handle the conflicts, and let you buld easily your own tool (or add more features to git-bug).

      See also https://github.com/git-bug/git-bug/blob/master/doc/design/da... and https://github.com/git-bug/git-bug/blob/master/entity/dag/ex...

      I'd love to see this used in the wild for other use cases.

    • imoverclocked 2 hours ago ago

      Is there a registry of namespaces to avoid collisions?

    • farhanhubble 3 hours ago ago

      Wow!So this can be used for full blown project management too.

      • alchemist1e9 3 hours ago ago

        Could you expand on how you see that working? combining these extensions is what I’m guessing but I’d be super interested in hearing how it might work.

        If all information for an asynchronous development process could be stored into git and distributed by it, this would be a very good idea for many projects.

        • michaelmure 3 hours ago ago

          So for example, git-bug already has a PR to add support for a project board: https://github.com/git-bug/git-bug/pull/843

          The same way, one could add support for code review (aka PRs), todo list, custom entities that your workflow need (say, tracking documentation or custom requirement) ... It can also be entirely outside of the development process.

  • alasr 3 hours ago ago
  • hungryhobbit 12 hours ago ago

    While I like the idea of tool consolidation, bug trackers aren't just a tool for the engineers. At most companies I've worked at, the support team, designers, QA team, managers, etc. all use the bug tracker on a daily basis.

    It sounds like you can "bridge" to somehow show the tracker outside Engineering, but then you're having to do work around the consolidation, and I'd imagine the result won't be as nice as a full-featured tracker designed for everyone to use.

    But, I am curious to hear from someone who has actually used this thing.

    • chungy 11 hours ago ago

      Fossil[0] has bug tracking as a standard feature, and through the HTTP role-based authentication, you are able to set up users with different privileges; for instance, being able to read and write the bug tracker without the ability to push new code.

      [0]: https://fossil-scm.org/home/doc/trunk/www/index.wiki

      • ndegruchy 10 hours ago ago

        +1 for this. I love having a self-contained, syncable GitHub-lite. It uses SQLite for the format, too, which makes it easy to discover the internals.

        It just needs some more 'modern' themes

    • layer8 9 hours ago ago

      Improved user interfaces can always be added on top of the CLI/library functionality, and that’s the more flexible approach. Everyone can use and/or build their favorite UI, like people do with Git itself.

      The monolithic web-first (often web-only) systems are a bit of a modern bane, you’re stuck with whatever user interface the one company/maintainer deems appropriate.

    • sudoforge 10 hours ago ago

      hey! maintainer here.

      git-bug has a web ui that you can run on your git server, for example, that can be accessed through a browser.

      it's fairly limited in functionality right now (create, comment on, and manage issues), but one of my goals is to refactor it to improve coverage of the existing features, and to add support for things like:

      - authenticated access

      - unauthenticated/anonymous access (e.g. a public, external contributor/user)

      - issue privacy levels

      - sprints, projects, report generation

    • devrandoom 11 hours ago ago

      This is a bug tracker. What you are describing is much closer to a project management tool, just to make the difference clear.

      • dcrazy 11 hours ago ago

        Those should be tightly integrated, if not the same tool.

        • nine_k 10 hours ago ago

          It depends on who manages the project. In an open-source project, those will likely also be engineering types, not non-technical managers.

          It's hard to make a product that's all things to all people, and it's wise to make a product that has a well-understood, if more narrow, audience.

      • whateveracct 11 hours ago ago

        To some people, engineers without project management doesn't make any sense.

    • hosh 11 hours ago ago

      I think that is more useful for communities whose members don't have reliable, always-on networks, rather than workflows within companies.

    • bluGill 11 hours ago ago

      All those users are why bug trackers are annoying. I don't care about those fields "those other people" are demanding, why do I need to fill them out. Mean while they don't care about the fields that are critical for me and don't want to fill them out.

      • pixl97 7 hours ago ago

        There's no I in team...

        Or to put it another way, those other 'useless' fields that take minutes may save the company hours of time in places that you don't see.

      • baq 10 hours ago ago

        Every job has a part people don't like that's necessary. The company you work for pays you money to fill the fields out, you fill them out, you get paid.

        • XorNot 5 hours ago ago

          That's why I do it. That doesn't explain why they even need to be there.

          For example every project code drop down has this experience: my manager tells me what project code to put everything against, then I always pick the same option. Sometimes I've not been granted access to that option and waste a bunch of time getting that turned on.

          At no point was any part of this necessary, because I neither defined the ticket, or could select the project code for myself, but we're all engaged in an elaborate game pretending I had agency over it.

    • eikenberry 7 hours ago ago

      Maybe the tool isn't intended for use in commercial environments. There is plenty of work done outside a those environments where this tool might be a better fit. E.g. most free software projects don't have all those other teams interacting with the bug trackers. To put it another way, this seems to fill a similar niche as Github's bug tracker and not Jira.

    • hungryhobbit 12 hours ago ago

      P.S. The GitHub readme for this project desperately needs a "Why?" (... would anyone use it, ie. what benefits does it offer vs. say Jira?)

      • jFriedensreich 11 hours ago ago

        I think this is made for an audience who find it obvious. "Why would you do it any other way" would be more interesting: There is a weird divide between git supported features on one hand and pull requests/ merge requests/ patch lists/ issues/ bug trackers etc. If everything was supported in git all these features would be interoperable between forges like github, bitbucket and gitea, forgejo.

        Not only interoperability but backups, tooling, distributed workflows and everything in between would work consistently and the same way.

        That said, I cannot count the times this concept was brought up and tried to make work but despite how much i love the idea in theory, i have yet to see a way it could work in practice.

        Some of the issues: - no universal agreement on exact schema, feature set and workflows, do the competing implementations break each other? if its not interoperable why even bother vs just using an external solution

        - how to handle issues not associated to one specific repo or to multiple repos, splitting repos etc.

        - how to not confuse devs seeing issue branches or wherever the actual data is stored in the repo

        - how to best make this usable to non devs

        The list goes on

        • cryptonector 10 hours ago ago

          > "Why would you do it any other way" would be more interesting:

          That's the interesting question. Normally a bug tracker would basically be a SQL application. When you move it into a Git repo you lose that and now you have to think about how to represent all that relational data in your repository. It gets annoying. This is why for Fossil it's such a trivial thing to do: Fossil repositories _are_ relational and hosted on an RDBMS (SQLite3 or PG). If you don't have a SQL then referential integrity is easy to break (e.g., issues that refer to others that don't know they're being referred to), and querying your issue database becomes a problem as it gets huge because Git doesn't really have an appropriate index for this.

          What one might do to alleviate the relational issues is to just not try to maintain referential integrity but instead suck up the issues from Git into a local SQLite3 DB. Then as long as there are no non-fast-forward pushes to the issues DB it's always easy to catch up and have a functional relational database.

          • Git-Master 7 hours ago ago

            Two corrections:

            1. Fossil repositories are explicitly not relational, they are however stored in SQLite databases. The data model for everything SCM-relevant (that also includes all content like tickets, wiki, forum) is stored as artifacts in a blob table (+ delta), which references other artifacts by hash value, and that provides the referential integrity. That, and the code that handles it. There are relations (via auxiliary tables) to speed up queries, but these tables are transient, get updated by inserting new artifacts, and can be regenerated from the artifacts.

            (Users and their metadata, and configuration is not part of this scheme, so these tables might be viewed as relational tables. They are local-only; and not synced.)

            See https://fossil-scm.org/home/doc/trunk/www/fossil-is-not-rela... and https://fossil-scm.org/home/doc/tip/www/theory1.wiki for more details.

            2. There are no other databases like PostgreSQL to choose from.

            • cryptonector 6 hours ago ago

              I get that the auxiliary tables speed up queries, but the data is relational in nature on some level.

              I thought that Fossil did or at least aimed to support different SQL RDBMSes. Did that go away at some point?

              • chungy 4 hours ago ago

                Fossil's "file format" is not intimately tied to SQLite: https://fossil-scm.org/home/doc/trunk/www/fileformat.wiki

                That being said, it's the only existent implementation and none other are planned. If you'd like to port it to PostgreSQL, go for it, but it probably would lose a lot of the appeal of being a distributed version control system.

          • jFriedensreich 7 hours ago ago

            I don't think that is the main issue. Its not THAT hard to build a secondary sqlite index for data stored in git and keep in in sync especially because the data is already versioned and can be incrementally updated.

      • cryptonector 10 hours ago ago

        It's obvious. It's also not original. There are multiple things like this already. Fossil was the first tool to put bug tracking in the repository. Idk which VCS/forge was the first to put wikis in the repository, but it might have been GitHub or Fossil.

        The point here is to be able to work with issues, PRs, and wikis offline just as one is now used to doing with code. And to use the same underlying content-addressed version control tooling for all those things.

        • freddie_mercury 22 minutes ago ago

          > Fossil was the first tool to put bug tracking in the repository

          I'm pretty sure Aegis did it 15 years before Fossil.

  • layer8 10 hours ago ago

    Some screenshots would be nice. I found this one [0] of the TUI from 2018, but not much else.

    [0] https://github.com/git-bug/git-bug/releases/tag/0.4.0

    • sudoforge 9 hours ago ago

      maintainer here - this is great feedback!

      i recently rewrote the README because i felt like its previous iteration was a bit _too_ dense. i may have gone a bit overboard on moving things :)

      FWIW, the screenshots you're looking for currently live in: https://github.com/git-bug/git-bug/blob/bd936650ccf44ca33cf9...

      • binary132 5 hours ago ago

        This would be amazing as a Magit module for Emacs. I don’t relish the idea of using it in a terminal alongside Emacs while using Git from inside Emacs. Is there a lower-level interface that Magit could provide a porcelain for, maybe?

      • bognition 9 hours ago ago

        honestly cleaning up the Readme and documentation would go a very long way, right now all the information feels fragmented behind all of the little pages. I clicked into the documentation and clicked the first link presented to me on each page and 5 clicks or so in I was on the command line docs but I hadn't seen anything that gave me a high level overview of what git-bug is, what it does, why I want to use it, etc...

        I understand that documentation can be hard and you need docs for newbies and long time users, but as a newbie I cannot for the life of me figure out what this is.

    • fundaThree 7 hours ago ago

      TUI?

      EDIT: "rich terminal users interfaces"

      • gapan 7 hours ago ago

        > TUI?

        Text User Interface

  • binary132 10 hours ago ago

    It’s very weird seeing the coping / seething about a useful tool like this even in HN comments. People have really drunk the proverbial kool-aid / joined the dark side.

    • haukilup 9 hours ago ago

      > It’s very weird seeing the coping / seething about a useful tool like this even in HN comments. People have really drunk the proverbial kool-aid / joined the dark side.

      It’s unclear to me what you mean.

  • WD-42 11 hours ago ago

    This is incredibly cool. I love seeing local first software starting to make a comeback. Github is becoming painful to use, even on a fast connection.

    • binary132 10 hours ago ago

      The fact that nearly all of our source code is not only hosted on proprietary platforms that can (and do) delete it any time they like, but is ALSO integrated with many of our build systems so that it’s not trivially relocatable blows my mind every time I think about it.

      • kgeist 7 hours ago ago

        If you want to be serious about this, use a self-hosted CI/CD server such as TeamCity, and then mirror all dependencies on a local git server (Go supports GOPROXY variable, but you can also probably fiddle with local DNS and self-signed certs, so that any mention of github.com forwarded you to the local server). This way, it's more controllable: if github.com is down or some repo is deleted, the CI/CD server won't even notice it.

        • binary132 5 hours ago ago

          I know there are workarounds, I’m talking about the general principle or the situation at large.

  • dannymi 8 hours ago ago

    There's also https://github.com/dspinellis/git-issue which has much fewer dependencies.

  • tiffanyh 11 hours ago ago

    Interesting that GPL3 was selected for this, while Git itself is GPL2 (these are incompatible licenses)

    • chungy 10 hours ago ago

      It'd only really matter if git-bug were to become part of the core Git features. Perhaps one or the other could relicense if that became a desirable outcome.

      I have doubt it'll happen. GitHub/GitLab culture is pretty strong, few seem interested in having distributed project management features.

  • omneity 5 hours ago ago

    This looks cool and has the opportunity to replace my old and trusted todo.txt, but I couldn’t find how to create or resolve bugs. The CLI has features related to syncing but nothing about this, or did I miss something?

  • rzwitserloot 10 hours ago ago

    I've been yelling 'omg why doesnt someone build a ticketing system on the basis of git, having a separate 'root' (no-parent git commit that is at the bottom of a git tree; technically a git repo can have more than one), with most of the conversation happening in git commit form' - for YEARS.

    This is wildly exciting.

  • mhh__ 6 hours ago ago

    Love this kind of thing. Particularly in the age of AI being cheap and even on device there are even more reasons to have issues be near the code for easy access.

    Similarly things like automatically promoting bugs into the test suite as SHOULD FAIL and so on

  • johanbcn 7 hours ago ago

    Funny.

    Some days ago, on the Firefox mover to github topic, people were wondering if issue trackers should also be distributed.

    Seems an interesting idea.

  • IshKebab 10 hours ago ago

    This really seems like an odd thing to make distributed. Do I now have to resolve conflicts in bug conversations? Am I going to find replies magically appearing before mine? The README doesn't even acknowledge that these difficulties might exist.

    This sounds like it adds a ton of potential problems and solves some very minor ones:

    * You can work offline. Great, but 90% of bug tracking is sending messages to other people so that's not particularly useful.

    * You aren't tied to GitHub Issues or whatever. I guess that's good. Seems pretty marginal though.

    • riedel 10 hours ago ago

      I think there is multiple cases where repos are mirrored between Codeberg, GitHub and internal and public instances of Gitlab. People want to open issues where they are and they can get accounts. Also I had to migrate issues from one repo to the other. Having wikis moved to git repos is a big advantage over trac and redmine (we just recently moved old projects and it is a pain each time). So I highly welcome anyone who moves issue tracking to git as well.

    • sudoforge 9 hours ago ago

      hey, maintainer here!

      > Do I now have to resolve conflicts in bug conversations? > Am I going to find replies magically appearing before mine?

      actually, no! git-bug objects embed a lamport timestamp [0] to handle time-based ordering, and actions like comment posting and editing are tracked as "operations", applied in order, and you will never have to deal with a merge conflict.

      the data model documentation [1] provides deeper insight into how we handle time, describe why you'll never see a merge conflict, and more. through this post, i've gathered that many people would prefer this sort of documentation be made more visible in the README (instead of "buried" under //doc). the README is probably a bit too high level for a more technical audience, but i appreciate your feedback here, and will take it into consideration as the README is refactored.

      [0]: https://en.wikipedia.org/wiki/Lamport_timestamp [1]: https://github.com/git-bug/git-bug/blob/bd936650ccf44ca33cf9...

      • IshKebab 7 hours ago ago

        Interesting, thanks. This must be true though right?

        > Am I going to find replies magically appearing before mine?

        • michaelmure 4 hours ago ago

          In theory it could happen but it's unlikely in practice, for multiple reasons:

          - git-bug use a form of logical clock (not wall clock) that order an action in relation to other actions in the repo. Clock drifting doesn't matter.

          - pushing to git usually require some access to the repo, and therefore abuse can be dealt with socially (aka you get kicked out)

          What can happen for example is someone write a comment, shut down the computer and only push the next day, but in that case the comment showing up before yours is the correct merging.

        • sudoforge 4 hours ago ago

          no - this is what using a lamport timestamp helps to avoid.

          edit: re-read your comment and i see what you're getting at.

          yes, there is the chance that you don't interact with the remote for X days, and neither does someone else, and when you both finally do, their comment will "magically show up before yours" because in reality they _did_ leave the comment before you.

          this is not dissimilar to looking at normal git commits ordered by "author date" vs. "commit date", and seeing "weird date ordering" in a linear tree.

          git-bug shows items in "the real order", so in a workflow where you are not fetching frequently, yes, other peoples' activity may be applied before yours when you finally do.

          this is just like on a centralized platform like github, where if you are writing a lengthy response or review of a PR, you can end up posting it and requesting changes or approving it after the PR has been merged.

        • tuckerman 6 hours ago ago

          I would think in general yes, but hopefully not like the example you gave because I would expect if you are replying to a comment, your clock would fast-forward past the timestamp of the original comment (NB I haven't looked at OP's implementation).

    • spoonsort 7 hours ago ago

      Just the fact that I can use it without a website is a game changer.

  • MichaelBosworth 6 hours ago ago

    Excited to try this. I like the look of that TUI.

  • stratosgear 10 hours ago ago

    Docs seem to miss instructions on how you add a bug! Did I miss it?

  • pacifika 11 hours ago ago

    Might be interesting as a personal cross project todo tracker?