HNHacker News
TopNewBestAskShowJobs

michaelmure

713 karma · joined January 24, 2018

submissionscomments
michaelmure··on Git Bug: Distributed, Offline-First Bug Tracker Embedded in Git, with Bridges
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.

michaelmure··on Git Bug: Distributed, Offline-First Bug Tracker Embedded in Git, with Bridges
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.

michaelmure··on Git Bug: Distributed, Offline-First Bug Tracker Embedded in Git, with Bridges
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.

michaelmure··on Fuzzing 101
Golang does that natively ;-)
michaelmure··on Fuzzing 101
The interesting thing to me is the stark difference between this and golang's approach.

With golang, you can run fuzzing as simply as you run tests, which means that it's trivial to target specific parts of your application or library. It obsoletes so much of those techniques.

I'm quite curious of techniques to guide more the fuzzing. It seems like the best you can do is provide a seed corpus and hope for the best.

michaelmure··on A Local-First Case Study
Not a file storage but https://github.com/git-bug/git-bug push and sync with any git remote. There is a generic data structure you can use to build your conflict-free type.
michaelmure··on CRDTs Turned Inside Out
A practical example of a op-based Merkle-DAG CRDT is (I believe) git-bug[1]. Some doc here[2].

I originally wrote something akin to an op-based CRDT and enforcing a purely linear series of commits in git's DAG, but eventually found that it doesn't really work in a multiplayer configuration. Eventually, I realized that I could instead have a real DAG to capture the concurrent editions, with "empty commits" as DAG merge operation.

The result is more or less what is described in that article, with some nice properties:

- written in go, I now have a generic implementation[3][4] that, given a set of operation, can easily support many practical use cases (bug tracker issue is the first, kanban and pull-requests coming).

- git itself is taking care of the storage and the synchronization with peers (aka git remotes). I get the full set of upsides described in the article.

- unfinished for now, but I can leverage some git construct to crypto sign each interaction with the data structure, to prove authenticity and later construct a proper access right system (who can edit a comment, who has admin right ...).

- additionally to the DAG structure, I also have lamport clock to give an order between each independent DAGs (last edited bug ...). They are also used as a help to compute the final order within a DAG if there is ambiguity (concurrent editing).

I'm much more an engineer than a researcher, so it'd be awesome to have the opinion of the community and especially iamwil, hecturchi or lxpz.

[1]: https://github.com/MichaelMure/git-bug [2]: https://github.com/MichaelMure/git-bug/blob/master/doc/model... [3]: https://github.com/MichaelMure/git-bug/blob/master/entity/da... [4]: https://github.com/MichaelMure/git-bug/tree/master/entity/da...

michaelmure··on What HashiCorp’s license change means for our customers
I always wondered: is there actual study about this?

There is people arguing both ways with relatively good arguments, but what about quantifiable realities? As the author of GPL-licensed softwares, I didn't have much reasons to go that way or another, apart from hunch. Can we quantify those effects, so that we can properly align our licenses with the effect we want?

michaelmure··on Git-appraise – Distributed Code Review for Git
As a sort of spiritual successor to git-appraise, I've been working on git-bug[1] which support issues and will at some point support kanban and code review. There is a few notables improvements:

- CRDT-like reusable data structure [2][3] for true p2p workflow and easily create new entities (code review ...)

- bidirectional bridges to github, gitlab ... to ease the transition or just use git-bug as a complement of those platform

- CLI, terminal UI and web UI, for different taste and integrate into your tooling/workflow

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

[2]: https://github.com/MichaelMure/git-bug/blob/master/doc/model...

[3]: https://github.com/MichaelMure/git-bug/blob/master/entity/da...

michaelmure··on Incident with Issues and Pull Requests
... of course. Mirror there: https://gitlab.com/MichaelMure/git-bug
michaelmure··on Incident with Issues and Pull Requests
Daily reminder that https://github.com/MichaelMure/git-bug could use some help :-D
michaelmure··on GitHub incident: ongoing issues with Actions, Issues and other Git operations
If that makes you mad, I still need help with https://github.com/MichaelMure/git-bug ;-) Coming at some point, kanban and pull-request support, offline-first!
michaelmure··on Clocks and Causality – Ordering Events in Distributed Systems (2022)
You might be interested by git-bug and https://github.com/MichaelMure/git-bug/blob/master/doc/model..., which seems to be exactly what you describe. (Disclaimer: author).
michaelmure··on Ask HN: Those making $0/month or less on side projects – Show and tell
https://github.com/MichaelMure/git-bug

Offline-first bug tracker (and soon-ish forge) embedded in git.

I keep working on this because the idea makes a lot of sense to me, because I learn a lot from it and it benefits me indirectly.

I'm not especially looking to monetize, but I'm curious about what this community think about it.

michaelmure··on Ask HN: What are you working on this year?
Really cool. I have with git-bug[0] similar properties (offline first, identities, generic "crdt like" base data structure... ). Maybe you'd like to have a look and improve each other's design.

[0]: https://github.com/MichaelMure/git-bug

michaelmure··on Git Notes
A bugtracker being "branch aware" and able to say where an issue started, where it was fixed ... can (and should IMHO) be a different concern than how the data is stored and how conflict resolution happen. By conflict resolution here, I mean: what happens when two user on different machines edit their issues and then states get merged? If you have this data into some format (let say JSON) and rely on git automatically merging, you eventually end up with corrupted formatting. Instead, you can do all that in your own branches, not pollute the normal code and not let git do any merging. Then, you can still have your bugtracker understand branches and track that information.
michaelmure··on Git Notes
It's significantly more friction for little benefit compared to git-bug's solution. First, storing this data alongside the code means requiring everyone agreeing to use that tool (quite high ask). Then, that means that you let git merge said data in case of conflict, which leaves you two options: merge failure, or requiring the user to fix things. None of that is acceptable, and it's why many of previous attempt failed.
michaelmure··on Git Notes
git-bug's author here with my 2cts. For what it's worth, I was aware of git notes during my original design process, but I found them clunky. I realized they would not be enough on their own to do conflict resolution and I'd be better making my own data structure with regular blobs, trees and commits. But when you have that, there is pretty much no point in using notes, as that would just grow the required features on which you sit on. What if I want to port git-bug to mercurial or whatever comes next? Even metadatas (the natural point of notes) are better expressed within that same unique data structure. Additionally, you then only need to sign those commits to cryptographically lock everything.
michaelmure··on Git-bug: Distributed, offline-first bug tracker embedded in Git
Thank you for that idea, I haven't considered that. I'm not too sure about how feasible that is as right now bridges sit on a sort of framework for configurations, credentials, events ... that seems uneasy to break into a plugin protocol. We'll see where that goes.
michaelmure··on Git-bug: Distributed, offline-first bug tracker embedded in Git
I haven't considered myself or git-bug worthy enough to bother him :-|
michaelmure··on Git-bug: Distributed, offline-first bug tracker embedded in Git
I was aware of fossil but never used it. It's not a new idea, it has been attempted many time before. Hopefully that one is the one reaching large usage :-) Regarding VSCode, the CLI commands are designed to be used for such integration. Hopefully someone makes it.
michaelmure··on Git-bug: Distributed, offline-first bug tracker embedded in Git
It does not ... yet. Nothing prevent from making git-bug "branch aware", just someone writing the code for that.
michaelmure··on Git-bug: Distributed, offline-first bug tracker embedded in Git
Delete .git/git-bug, .git/refs/bugs, .git/refs/identities, .git/refs/remote/*/bugs and .git/refs/remote/*/identities.

I'm considering adding a dedicated CLI command for that as it's a common concern.

michaelmure··on Git-bug: Distributed, offline-first bug tracker embedded in Git
What you are describing is exactly within git-bug's scope, and really not that far away! I'd love to make that happen, but unfortunately I have a demanding day job and rely on contributor's help.
michaelmure··on Git-bug: Distributed, offline-first bug tracker embedded in Git
I disagree. Bridges are a great on-ramp, as you can individually choose to adopt the tool without having everyone on the project (let alone users) agree to switch. It breaks the network effect. It's also a much needed migration path as you don't want to lose your project history. As a bonus, it's also a way to have backups, even if you keep using your centralized forge.
michaelmure··on Git-bug: Distributed, offline-first bug tracker embedded in Git
No plan but it's typically something that is brought by an eternal contributor as I need to focus on the core and I don't use those other tools. If you are up for the task, please do! A "good enough" bridge (config+import+export+tests) like the gitlab one is 1800 LOC.
michaelmure··on Git-bug: Distributed, offline-first bug tracker embedded in Git
I haven't but I'm not sure it's really necessary. What needs to happen first is a large enough usage of git-bug, or at least a large enough use case coverage. To do so, I think it needs:

- support for pull-requests

- support for external auth in the webUI, to make it work as a public frontend where anyone can browse and interact with bugs like any other forge

If that happens and people are convinced, I'd think that git-bug would become a natural companion for git. Then it's just a matter of packaging.

michaelmure··on Git-bug: Distributed, offline-first bug tracker embedded in Git
As mentioned in the release notes, the intent is really to have a reusable data structure in git capable of conflict resolution, plus all the tooling around that. So if you want to build a tool using the same techniques but outside of git-bug's scope, please consider using it as a library.
michaelmure··on Git-bug: Distributed, offline-first bug tracker embedded in Git
No, it's completely separated from your normal code and branches and doesn't pollute your development workflow. git-bug's data is stored in hidden branches (not in the way you think about branches though).
michaelmure··on Git-bug: Distributed, offline-first bug tracker embedded in Git
They have been quite ok[1] about the trademark aspect, but they do have a point about the namespace grab. I'm actually at a point where I do consider opting out of the git integration[2], as the introduction of new entities (project board, pr ...) do make things confusing (or even conflicting) as a series of git sub-commands. I haven't came up with a really satisfying solution though.

[1]: https://marc.info/?l=git&m=153457109619678&w=2

[2]: https://github.com/MichaelMure/git-bug/issues/530

← PreviousPage 2 of 5Next →