Does Fossil have a unique or killer feature that makes it a good alternative to git, other than "simpler to use"?
I don't like the monoculture either, but at this point some knowledge of git is an essential skill. In fact pretty much the only chance you have of avoiding git would be to build your own stuff on something else, hire/collaborate only with others who share the same view, and never interact with basically any other open source.
So given some git knowledge is necessary anyway, there are alternatives interfaces to git that solve the simplicity problem, and any other tool is going to have friction (small ecosystem, few integrations, smaller community), why use something else? (I mean this genuinely)
I just don't see the dominance of git changing for the next decade, especially if there's no answer to my first question (for whatever aims to replace it). It's not even like there's git lock-in: it could be replaced, just like SVN was. It's just it doesn't seem like there's compelling reason to, and thus no desire.
> Does Fossil have a unique or killer feature that makes it a good alternative to git, other than "simpler to use"?
If you click on the link it lists a ton of additions to git. The first bullet lists "bug tracking, wiki, forum, email alerts, chat, and technotes" none of which are supported by git.
Then again, bullet 4 is "Self-host Friendly" (every git client is also a full git server -- after all it's fully distributed) and bullet 5 is "Simple Networking - Fossil uses ordinary HTTPS (or SSH if you prefer)" Pretty sure git supports https out of the box these days (though I don't use it -- ssh is so much simpler).
So yes, I would call those killer features for those who want them, and are pretty unique to any revision control system I've used, though some centralized sites have encrusted git with those features. Having them distributed sounds like a good idea.
Bullet 2, “Built-in Web Interface”, is also not quite something that makes Fossil stand out as opposed to Git, because most installations of Git come with gitweb[1]. It's not the pinnacle of modern web-design, sure, but if you just want to browse a repo through a web interface, it's perfectly fine.
Fossil is more self-host friendly if you're on a shared hosting plan, since it works via CGI and can be served via nginx/Apache with minimal configuration. Every git hosting solution I'm aware of requires a dedicated daemon.
I’m not sure the “extra batteries included” line is very persuasive.
It’s open to objections: first, Github does this already, so it’s a solved problem. Second, lack of focus. Why would VCS experts
be good at designing a compelling forum or ticketing system?
A more compelling selling point, which is buried in the docs, is the use of SQLite as storage. Apparently this makes it easy to traverse a commit’s descendants, which git struggles with.
I like it for projects which may need to live a really long time between changes. Having a single .fossil file containing the entire project, it's history, documentation, and tickets in a set location makes it simple to pick something back up after x years. The optional web UI is simple HTML that is unlikely to break in future browsers. Finally, fossil is typically distribed as a single static binary, which makes it easy to install/update.
If I was to have to build a VCS from source decades from now to get to my repo, I believe that fossil will be much simpler than git (which has a fair amount of build dependencies).
Other commenters are talking about GitHub/Discord/Jira etc but I think that's missing the point a bit - in 20 years time are those closed sass services still going to exist? If they are, is your project still going to be there? And will you remember which flavour of the month sass you used for tickets?
While there are a few differences in operating principles, probably 90% of the baseline knowledge required to use Git is the same as with Fossil (and Mercurial for that matter). If you already know Git, you can learn Fossil in less than 30 minutes, and IME there is very little context switching cost if using multiple VCSs.
In that sense, I don't believe Git has a knowledge lock in, because it is easy for anyone to switch or to simultaneously use available alternatives. It's all about the ecosystem, and really, Github.
One thing you can do with Fossil that you can't with Git is use the tickets database as a distributed, version controlled sqlite database, complete with user authentication, and trivially add extensions using CGI.
The big ticket item is obviously that Fossil includes all the stuff that people constantly whine about being locked into Git{hub,lab} over, e.g. issues, as part of the tool rather than some external vendor-specific thing you have to worry about separately.
Also, as someone who really liked Monotone before git won, having your whole repo in a single file is just nice for the same ops-related reasons it’s refreshing to be able to download and run a self-contained binary rather than needing an installer or whatever.
A killer-feature measure is not very useful way of selection, as it's not how projects select a VCS - many projects/teams have individual requirements which affect such feature considerations.
In my somewhat simplified view, Git's 'killer-feature' by now is simply its ubiquity.
By the same token, for Fossil's this could be claimed as a single binary that does it all.
Just download the binary, and you've got the ubiquitous set of project-related facilities: VCS/tickets/docs/wiki/team/forum/chat with simple aporoach to sync and self-host.
> In fact pretty much the only chance you have of avoiding git would be to build your own stuff on something else, hire/collaborate only with others who share the same view, and never interact with basically any other open source
I worked with a guy once who took a principled stand against git and (almost) exclusively interacted with the org's git repos through Hg-Git: https://hg-git.github.io/
It’s fantastic for personal projects. The ticket system is highly customisable, I usually set it up a bit like a todo list. It’s super easy to self host.
> In fact pretty much the only chance you have of avoiding git would be to build your own stuff on something else
This is a strange thing to say. It's like saying the only chance you have of avoiding python is to use something else.
> never interact with basically any other open source.
You don't need git knowledge to download an open source library from GitHub (there's tarballs on the web page), or to use your languages package manager, even if it speaks git under the hood (go get/npm)
> I just don't see the dominance of git changing for the next decade,
The dominance of git is real particularly in certain industries, but even now git still has terrible support for huge repositories and binary files, partial checkouts, submodules. The problem is that most projects are suited just fine to the limitations of git, (and SVN and p4 and hg), so the value comes in the supporting tooling and infrastructure. Why would I choose fossil over git when for free I can get everything that GitHub/gitlab provides for me?
All the bug tracking and wikis being integrated is amazing.
Sadly, it's not git and nobody else is using it, and I'm not a fan of using lots of nonstandard tech.
It seems to be better than Git, but there's no free hosts that are as big as Github/Gitlab, and convincing other people to switch technology is very hard.
Plus, the people obsessed with clean commit history won't like the lack of easy squash and rebase.
why "was"? mercurial is still around, and perfectly usable. we use it at work and I've never had any problems with it, it's pretty much as good as git for day to day usage.
Honestly, I think the killer feature of Git was GitHub, and it was made popular by people wanting to use GitHub. The rest of the features were cherries on top of being able to use GitHub.
So I guess the killer feature for Fossil would be Fossil in that case, as Fossil is basically Git + GitHub but in one package, that works offline and local first.
This is such an interesting piece of software. I recommend installing it to play around with it even if you have to intention at all of actually using it for real.
You can import an existing Git repository into it really quickly.
The app itself is built by the SQLite team, and takes full advantage of SQLite, in particular Many Small Queries Are Efficient In SQLite: https://www.sqlite.org/np1queryprob.html
The SQLite project is much like SQLite itself, i.e. simple and as self contained as possible. Naturally this means they have to deal with the overhead of developing and maintaining a large portion of their toolchain. On the other hand they avoid the litany of problems that comes with using 3rd party tools, and those tools can be optimized for their particular needs.
> Who uses it outside SQLite team?
Tcl/Tk is the only big user of Fossil, as far as I'm aware.
I love the idea of fossil, git cli has horrible and unintuitive porcelain. There is no brain dead git undo (except for the 'well actually if you sell your soul to the reflog' folks), but ultimately, just like C and unix, git may be annoying in some ways but its inertia and ubiquity keep it going way longer than it's technical merits deserve when directly compared to competitors.
Also, fossil feels like someone built it for almost NIH reasons, which I freely admit is just my outsiders impression, but it feels to me like the tcl community tends to dogfood themselves a lot for cultural reasons.
But fossil is already more complete and battle tested than anything this lowly amateur will accomplish in his career.
As for NIH, kinda a bit but not really. Fossil was first released in 2006, Git in 2005 (mercurial in 2005 as well). At this point in time, there was no clear "DVCS" (distributed version control system) winner yet.
The author of Fossil is drh, who is a lot more famous for being the author of sqlite (who also happens to be a major player in the TCL community). If I remember correctly[0], Fossil was written a) to dogfood sqlite (fossil uses sqlite) and also b) to get something able to not just do the VC part for sqlite, but tightly integrated issue tracking, docs, rel-eng, etc in one single system, as well as some VC-related features not present in git/mercurial and other competitors of the time (and in many cases not available in git or mercurial of today).
[0] I looked into all this new-fangled DVCS stuff back then, because it looked really interesting compared to subversion that I was using at the time, and was a pain.
> Also, fossil feels like someone built it for almost NIH reasons,
Considering the rest of the SQLite development toolchain, it would be more surprising if they _didn't_ make something like fossil.
Although shunning mainstream tools like git is probably rooted in a "not invented here" attitude, I love that they bother to do so. Of course it's interesting to see what bespoke solutions they come up with, but it's amazing to see such a highly complex piece of software come with such a trivial set of dependencies. Indeed, even if it's antisocial for the SQLite devs to play in their own sandbox, the end result is nothing but increased portability for the rest of us.
These are not links to the discussion of the same page, but links to threads discussing various blog posts, wiki pages, etc. on the same site. It's the same thing anyone could see by clicking the domain name by the title, except without titles.
They aren't all on the same site (not that it matters), they all have significant threads and they are all about Fossil SCM, which is how 'relatedness' works on HN - by value and not by reference. If you can think of some other ones that are not on their site, you should definitely add them.
Like the other reply points out, it's fairly standard community practice to link previous discussions for those who might be interested in checking them out. dang (the public moderator) has automated up his postings of past links so they show titles and dates but that's work and I wasn't going to do it by hand for this chonklist. The good news is, eventually, the tectonic plate of HN development will reach 'make the fancier formatting automatic for everyone':
It's a community effort. One person posts the links, then you come along and help out by posting the titles, then I help out by telling you what to do. Go team!
I remember when there were many different reasonable options for source control. I’ve really enjoyed recent years how there’s at least one thing in software development where basically everybody agrees what the right solution to a problem is. For source control, use git. Almost nobody disagrees. Is git perfect? Of course not. Is it hard to learn? Hell yeah. But everybody does, at least enough to get by.
I find the standardization that git has brought to the industry to be wonderfully simplifying for the lives of people developing software. If only we could all agree on things like a programming language, or a database - how much more productive would we be? How many life years do we spend trying out or learning new technologies that don’t go anywhere, or which only offer marginal benefits in exchange for real sacrifices? At least for now, source control doesn’t have that level of constant churn which is so commonplace in software.
To me, the benefits of standardization on git far outweighs any benefits that might be achieved by trying something new.
Only git for version control. Perfect? No. Good for everybody and every project? No. Good enough? Yes.
Only UNIX for any non-GUI application, and now even worse, almost only Linux. Perfect? No. Good for everybody and every project? No. Good enough? Yes.
Only C for system programming. Perfect? No. Good for everybody and every project? No. Good enough? Yes.
Only x86(_64) for almost anything non-portable. Perfect? No. Good for everybody and every project? No. Good enough? Yes. (same for ARM in portable world).
We use mediocre tools which share best property: ubiquity.
World of Good Enough, world of "multi-tools" which are not perfect for any application, but good enough for almost all of them.
We lost a tons of bright systems, ideas, approaches.
Now it is common to say, that diversity and inclusivity in teams are very well for corporate culture, as each person brings his/her own point of view, and multiple point of views are better for final product or service.
But in world of modern IT tools I see opposite. Monocultures everywhere.
Sometimes I read about different IT (mostly hardware, or integraged hardwae & software) of 1985-2005 and it is very sad reading: there was a tons of different systems, approaches, architectures, languages, ways to build systems. Each and every of them were more suitable for niche tasks. And what we can see now? Linux, Docker, git, x86, C.
Yes, I know, that there is Rust and there is ARM (at least!), but it is, what, 1% of landscape? And no new or specialized OSes (even IoT, which should be hyper-effective and realtime often is built on Linux!), no new platforms which shine in one or other niche, nothing
Yes, again, I know about POWER and z/Architecture (or how it is called this month), but, again, it is drop in the ocean of same boxes with same OS.
Fundamentally I don't disagree. Except that I see so much wasted effort in our industry trying to evolve just for the sake of enjoying trying new things, which I find fundamentally super inefficient. I know that's how evolution works and eventually gets to a better place. I'm just relishing the fact that for once we agree on something.
On the complexity front I have a couple perspectives. First, the fundamental concepts you need to contribute to a code base aren't that hard. Which I think is why it survives and thrives. But the CLI tools are NOT very friendly. So secondly, you might think we just need better front-ends. And maybe there are by now? But I've hated every alternative front-end to git I've ever used, but maybe that's just me. I also don't use an IDE, so I'm obviously a bit of a dinosaur by nature.
I kind of agree. I don't like monoculture in general, but I'm not so adverse with git.
I can remember where a place I worked used SVN, TFS, CVS and some commercial system (Perforce, I think), and it was really difficult switching between projects - I made quite a few mistakes.
Git isn't perfect, but it's more than good enough.
Are you referring to "Git the standard format" or "Git the CLI" ? If the former, then yes I agree. If the latter, then definitely not, and I appreciate tools like Fossil & Mercurial that offer alternatives.
* Does not track cherry-picks
* Does not track branch names
* Tags must be unique. (You cannot add a "release" tag to every release,
for example.)
* Not easily extensible - witness the pain and years of effort trying
to move from SHA1 to SHA2.
I've been using Fossil as my own personal knowledge repository for a few months, and it's been wildly successful.
It's pretty much Gitea in a single SQLite file (Wiki, tickets, version control, etc.). It's weird, but you can edit all of these things off-line and then sync everything back. `fossil ui` hosting the server for my docs locally, and from my home server is super useful and easy.
Some of the commands are super weird though, but I put them my homepage of my fossil docs :) The auto-sync feature helps since I work on multiple computers to help ensure that I don't get too far out of sync.
This is actually the use case I have in mind when I think of moving my personal knowledge management system knowfox to something more enduring like fossil.
It currently is built on php/mysql with laravel with a web ui in bootstrap. This has become super annoying for a few years now because once a year or so I have to port it to a new version of laravel and cope with the new javascript framework du jour that it now promotes.
This would be fine, of course, if you run an agency which extracts money from clients for continuous upgrades, but not for a personal project.
Fossil, on the other hand, is built for longevity. It is a single executable and comes with all tools built in.
Fossil is an alternative to both git (source control) and github (issues, etc).
I think its brilliant having issues tracked in fossil. Part of the promise of github is that the user is in control, since your computer is a first-class citizen of a repository. You have all the code, and all the history on your computer. You can use github, but you don't need github, since its just another node in git's distributed network.
But that promise falls apart with issues and pull requests. Issues and pull requests don't get replicated by git. If github goes down, you can't interact with issues. If github ever turns evil, or you decide you want to self host git over ssh or something, you lose the history of all your issues and conversations.
Git is a distributed, replicated data format. Why are issues fully centralized? Its bizarre - You can have a project on both github and gitlab. And you can replicate commits to both. But you can't replicate issues using the same mechanism.
Fossil is far from perfect, but I think putting the issues and stuff into the repository itself is brilliant.
"If [...] you decide you want to self host git over ssh or something, you lose the history of all your issues and conversations."
Github has a nice, documented API to export issues, including issue history. Many open source tools, including Gitlab, are happy to import that list into their own database:
Granted, this has a problem if Github suddenly, without any warning, decides to turn off that API. Or if it goes down and loses data permanently. I find both of those scenarios pretty unlikely, but it you are worried about them, it should be pretty straightforward to have some sort of export script in cronjob, to keep a local copy of issue database.
That's true. People imagine GitHub provides git, but that's the wrong way of seeing it. They do provide it on your server but the git running on your own computer is from the git project. GitHub does help significantly with the git project, though.
Here's git's official website, which is very good, and was started by a GitHub cofounder, but is run by the git project rather than GitHub: https://git-scm.com/
You're overstating the risks a bit and it's not great to posit implausible motives and means for bad outcomes... Like, Fossil devs could "turn evil", and ship an update that destroys your museum and any copies it can find. Github could "turn evil" without notice, and permanently nuke all of someone or some org's accounts for no good reason and yes, that'd catch a lot of people with their pants down. It's better to first focus on outcomes, not means. Of course anyone actually concerned about losing their github issue data (or having their museums corrupted) should at least be making backups. (And it's not exactly an implausible outcome on its own, you can think of a variety of means that achieve it and discover one may be rather more likely for your situation, like if I was a Russian in Russia right now I'd have already made arrangements in case GH changes their mind or is legally forced to drop the ban hammer.)
The desire to move off github (and therefore any additional services besides hosting you were using, which issues are just one -- new ones keep getting added to try and cement your dependence) is something more worthwhile of thought than the idea of github turning evil. Fortunately that desire is an actual thing that's very common, or at least the desire to not be wholly dependent, and is why many people don't even use github issues to begin with even if they use github itself for hosting (or some other non-issues features). So there's not a big problem, and even if you start with using github issues, there are various migration tools to move github issues out to [alternative]. (And of course github issues have their own merits, people frequently want to switch to them! So similar migration tools exist to move from [alternative] to github issues, I wrote one for Jira years ago.)
It is brilliant to integrate things with the decentralized source control itself, you get free backups and deciding to migrate to something different in the future is easy, I think it's an overlooked approach for a lot of people. (It seems less overlooked when it comes to documentation in various forms like developer-focused .md files, or broader full static html websites which github can conveniently host for you.) Fossil is well-worth investigating for this free integration to see if it meets one's needs. But of course nothing stops you from doing it with git yourself in various ways. For personal projects, I'm pretty satisfied with being as minimal as having an issues.md file and moving things to an issues-closed.md file when I close one. I've also used the git-issue extension (https://github.com/dspinellis/git-issue -- see also its bottom section of Related Work).
But despite its brilliance it's not always the right approach. It's very easy and reasonable to want more than what is realistic for something deeply integrated with the source code itself to provide, if only for inherent conflicts of desire, let alone any question of manpower. There are very good reasons to have entirely separate (and even multiple-of-kind partially overlapping/integrating/cross-referencing) systems for source code management, issue tracking, code review, forums, IM communication, wikis, public websites, docs (of whatever kinds and types for various audiences and authors, or public or not, or team-level spikes or plannings or retrospectives)... One aspect of Fossil I found weak was its user capabilities (https://fossil-scm.org/home/doc/trunk/www/caps/ -- no custom user categories alone is a deal breaker for so many things) but flaws in the execution of a fully integrated thing isn't really my point, my point here again is just that full integration despite its overlooked benefits and brilliance when applied to certain things is still not necessarily the right choice for something.
When Fossil didn't have those features, the frequent complaints were that Fossil doesn't have those features, and that's why they had to keep using $INERTIA_SOURCE. Now that it has those features, it's the reason not to move to it? I see. :)
All of these features cooperate and serve the same goal: coordinate the work product of people on a project, in a distributed fashion. One path to that is the nearly fully centralized model of GitHub. Another is the VCS + mailing list + bug tracker + wiki path, which requires considerable admin resources to manage, and at the end of the day is a pile of barely-cooperating services. Fossil's path is to put them all into one place so they all work properly together.
You can reference ticket IDs from a forum post.
You can point to a section of the timeline from a wiki article.
You can create diagrams in Pikchr format that live as version-controlled text in the repo and reference them from commit messages.
You can generate HTML diffs and include them into the body of a Markdown chat posting for discussion of a proposed change before committing it.
Etc., etc. It's all communication, which you need when you have multiple people working on a project, especially across time zones.
It sounds to me that people are split on whether or not SCM should include things like issues and wikis directly, or let others solve it.
Considering this is the largest point between fossil and git that I can see, maybe we should just make it so git has the capability to expose an extension API for plugging additional capabilities like this in.
Then we could probably all use git and just be happy. You could theoretically use fossil's issues and wikis with git.
I don't like the monoculture either, but at this point some knowledge of git is an essential skill. In fact pretty much the only chance you have of avoiding git would be to build your own stuff on something else, hire/collaborate only with others who share the same view, and never interact with basically any other open source.
So given some git knowledge is necessary anyway, there are alternatives interfaces to git that solve the simplicity problem, and any other tool is going to have friction (small ecosystem, few integrations, smaller community), why use something else? (I mean this genuinely)
I just don't see the dominance of git changing for the next decade, especially if there's no answer to my first question (for whatever aims to replace it). It's not even like there's git lock-in: it could be replaced, just like SVN was. It's just it doesn't seem like there's compelling reason to, and thus no desire.
If you click on the link it lists a ton of additions to git. The first bullet lists "bug tracking, wiki, forum, email alerts, chat, and technotes" none of which are supported by git.
Then again, bullet 4 is "Self-host Friendly" (every git client is also a full git server -- after all it's fully distributed) and bullet 5 is "Simple Networking - Fossil uses ordinary HTTPS (or SSH if you prefer)" Pretty sure git supports https out of the box these days (though I don't use it -- ssh is so much simpler).
So yes, I would call those killer features for those who want them, and are pretty unique to any revision control system I've used, though some centralized sites have encrusted git with those features. Having them distributed sounds like a good idea.
Sure, for code. But fossil distributes issues and wiki the same way, which makes comprehensive self hosting much easier.
[1]: https://git-scm.com/docs/gitweb
Oh, so systemd of SCM world?
Also, making moving out of it extra hard by embracing everything.
It’s open to objections: first, Github does this already, so it’s a solved problem. Second, lack of focus. Why would VCS experts be good at designing a compelling forum or ticketing system?
A more compelling selling point, which is buried in the docs, is the use of SQLite as storage. Apparently this makes it easy to traverse a commit’s descendants, which git struggles with.
If I was to have to build a VCS from source decades from now to get to my repo, I believe that fossil will be much simpler than git (which has a fair amount of build dependencies).
Other commenters are talking about GitHub/Discord/Jira etc but I think that's missing the point a bit - in 20 years time are those closed sass services still going to exist? If they are, is your project still going to be there? And will you remember which flavour of the month sass you used for tickets?
Fossil is basically GitHub itself stuffed inside the DVCS. Issues and the wiki are stored alongside the code.
In that sense, I don't believe Git has a knowledge lock in, because it is easy for anyone to switch or to simultaneously use available alternatives. It's all about the ecosystem, and really, Github.
Can you elaborate on this please?
I have never used, but I’m interested in trying… maybe some personal project in the future :)
Also, as someone who really liked Monotone before git won, having your whole repo in a single file is just nice for the same ops-related reasons it’s refreshing to be able to download and run a self-contained binary rather than needing an installer or whatever.
In my somewhat simplified view, Git's 'killer-feature' by now is simply its ubiquity.
By the same token, for Fossil's this could be claimed as a single binary that does it all.
Just download the binary, and you've got the ubiquitous set of project-related facilities: VCS/tickets/docs/wiki/team/forum/chat with simple aporoach to sync and self-host.
I worked with a guy once who took a principled stand against git and (almost) exclusively interacted with the org's git repos through Hg-Git: https://hg-git.github.io/
But that doesn’t make git or fossil right for every project.
Fortunately you can easily switch between them.
See https://www.fossil-scm.org/home/doc/trunk/www/fossil-v-git.w...
(Yes I obviously still use Git as well)
This is a strange thing to say. It's like saying the only chance you have of avoiding python is to use something else.
> never interact with basically any other open source.
You don't need git knowledge to download an open source library from GitHub (there's tarballs on the web page), or to use your languages package manager, even if it speaks git under the hood (go get/npm)
> I just don't see the dominance of git changing for the next decade,
The dominance of git is real particularly in certain industries, but even now git still has terrible support for huge repositories and binary files, partial checkouts, submodules. The problem is that most projects are suited just fine to the limitations of git, (and SVN and p4 and hg), so the value comes in the supporting tooling and infrastructure. Why would I choose fossil over git when for free I can get everything that GitHub/gitlab provides for me?
Sadly, it's not git and nobody else is using it, and I'm not a fan of using lots of nonstandard tech.
It seems to be better than Git, but there's no free hosts that are as big as Github/Gitlab, and convincing other people to switch technology is very hard.
Plus, the people obsessed with clean commit history won't like the lack of easy squash and rebase.
So I guess the killer feature for Fossil would be Fossil in that case, as Fossil is basically Git + GitHub but in one package, that works offline and local first.
You can import an existing Git repository into it really quickly.
The app itself is built by the SQLite team, and takes full advantage of SQLite, in particular Many Small Queries Are Efficient In SQLite: https://www.sqlite.org/np1queryprob.html
Why should one use that simple forum instead of Discourse? Why should one use the simple wiki than say Wiki.js?
And of course the toolings are already way behind as in there's not a single GUI client?
And it doesn't seem to have any social login, so people have to create an account instead of using GitHub logins.
Who uses it outside SQLite team?
> Who uses it outside SQLite team?
Tcl/Tk is the only big user of Fossil, as far as I'm aware.
Also, fossil feels like someone built it for almost NIH reasons, which I freely admit is just my outsiders impression, but it feels to me like the tcl community tends to dogfood themselves a lot for cultural reasons.
But fossil is already more complete and battle tested than anything this lowly amateur will accomplish in his career.
The author of Fossil is drh, who is a lot more famous for being the author of sqlite (who also happens to be a major player in the TCL community). If I remember correctly[0], Fossil was written a) to dogfood sqlite (fossil uses sqlite) and also b) to get something able to not just do the VC part for sqlite, but tightly integrated issue tracking, docs, rel-eng, etc in one single system, as well as some VC-related features not present in git/mercurial and other competitors of the time (and in many cases not available in git or mercurial of today).
[0] I looked into all this new-fangled DVCS stuff back then, because it looked really interesting compared to subversion that I was using at the time, and was a pain.
(arxanas shared a link to my project elsewhere in this thread :))
Considering the rest of the SQLite development toolchain, it would be more surprising if they _didn't_ make something like fossil.
Although shunning mainstream tools like git is probably rooted in a "not invented here" attitude, I love that they bother to do so. Of course it's interesting to see what bespoke solutions they come up with, but it's amazing to see such a highly complex piece of software come with such a trivial set of dependencies. Indeed, even if it's antisocial for the SQLite devs to play in their own sandbox, the end result is nothing but increased portability for the rest of us.
Are you aware that Git was not the first version control system? That doesn't mean Git was built for NIH reasons.
https://news.ycombinator.com/item?id=28168632
https://news.ycombinator.com/item?id=27736980
https://news.ycombinator.com/item?id=26578581
https://news.ycombinator.com/item?id=24643200
https://news.ycombinator.com/item?id=21974942
https://news.ycombinator.com/item?id=19006036
https://news.ycombinator.com/item?id=17230766
https://news.ycombinator.com/item?id=15752725
https://news.ycombinator.com/item?id=13668952
https://news.ycombinator.com/item?id=12673229
https://news.ycombinator.com/item?id=10737131
https://news.ycombinator.com/item?id=8697028
https://news.ycombinator.com/item?id=3036124
https://news.ycombinator.com/item?id=2524422
https://news.ycombinator.com/item?id=809493
Deleted Comment
https://news.ycombinator.com/item?id=27236708
The reply I really wanted to write was 'the point is to confuse passers by', though.
https://hn.algolia.com/?dateRange=all&page=0&prefix=true&que...
I find the standardization that git has brought to the industry to be wonderfully simplifying for the lives of people developing software. If only we could all agree on things like a programming language, or a database - how much more productive would we be? How many life years do we spend trying out or learning new technologies that don’t go anywhere, or which only offer marginal benefits in exchange for real sacrifices? At least for now, source control doesn’t have that level of constant churn which is so commonplace in software.
To me, the benefits of standardization on git far outweighs any benefits that might be achieved by trying something new.
Only git for version control. Perfect? No. Good for everybody and every project? No. Good enough? Yes. Only UNIX for any non-GUI application, and now even worse, almost only Linux. Perfect? No. Good for everybody and every project? No. Good enough? Yes. Only C for system programming. Perfect? No. Good for everybody and every project? No. Good enough? Yes. Only x86(_64) for almost anything non-portable. Perfect? No. Good for everybody and every project? No. Good enough? Yes. (same for ARM in portable world).
We use mediocre tools which share best property: ubiquity.
World of Good Enough, world of "multi-tools" which are not perfect for any application, but good enough for almost all of them.
We lost a tons of bright systems, ideas, approaches.
Now it is common to say, that diversity and inclusivity in teams are very well for corporate culture, as each person brings his/her own point of view, and multiple point of views are better for final product or service.
But in world of modern IT tools I see opposite. Monocultures everywhere.
Sometimes I read about different IT (mostly hardware, or integraged hardwae & software) of 1985-2005 and it is very sad reading: there was a tons of different systems, approaches, architectures, languages, ways to build systems. Each and every of them were more suitable for niche tasks. And what we can see now? Linux, Docker, git, x86, C.
Yes, I know, that there is Rust and there is ARM (at least!), but it is, what, 1% of landscape? And no new or specialized OSes (even IoT, which should be hyper-effective and realtime often is built on Linux!), no new platforms which shine in one or other niche, nothing
Yes, again, I know about POWER and z/Architecture (or how it is called this month), but, again, it is drop in the ocean of same boxes with same OS.
If we could all agree to a synchronised hype cycle that may help :)
that sounds like reason to try to evolve instead kf saying "yeah well, we are done"
with some luck alternative tools come up with ideas, which become part of the default tool, maybe the default will change over time.
On the complexity front I have a couple perspectives. First, the fundamental concepts you need to contribute to a code base aren't that hard. Which I think is why it survives and thrives. But the CLI tools are NOT very friendly. So secondly, you might think we just need better front-ends. And maybe there are by now? But I've hated every alternative front-end to git I've ever used, but maybe that's just me. I also don't use an IDE, so I'm obviously a bit of a dinosaur by nature.
I can remember where a place I worked used SVN, TFS, CVS and some commercial system (Perforce, I think), and it was really difficult switching between projects - I made quite a few mistakes.
Git isn't perfect, but it's more than good enough.
It's pretty much Gitea in a single SQLite file (Wiki, tickets, version control, etc.). It's weird, but you can edit all of these things off-line and then sync everything back. `fossil ui` hosting the server for my docs locally, and from my home server is super useful and easy.
Some of the commands are super weird though, but I put them my homepage of my fossil docs :) The auto-sync feature helps since I work on multiple computers to help ensure that I don't get too far out of sync.
It currently is built on php/mysql with laravel with a web ui in bootstrap. This has become super annoying for a few years now because once a year or so I have to port it to a new version of laravel and cope with the new javascript framework du jour that it now promotes.
This would be fine, of course, if you run an agency which extracts money from clients for continuous upgrades, but not for a personal project.
Fossil, on the other hand, is built for longevity. It is a single executable and comes with all tools built in.
I think its brilliant having issues tracked in fossil. Part of the promise of github is that the user is in control, since your computer is a first-class citizen of a repository. You have all the code, and all the history on your computer. You can use github, but you don't need github, since its just another node in git's distributed network.
But that promise falls apart with issues and pull requests. Issues and pull requests don't get replicated by git. If github goes down, you can't interact with issues. If github ever turns evil, or you decide you want to self host git over ssh or something, you lose the history of all your issues and conversations.
Git is a distributed, replicated data format. Why are issues fully centralized? Its bizarre - You can have a project on both github and gitlab. And you can replicate commits to both. But you can't replicate issues using the same mechanism.
Fossil is far from perfect, but I think putting the issues and stuff into the repository itself is brilliant.
Github has a nice, documented API to export issues, including issue history. Many open source tools, including Gitlab, are happy to import that list into their own database:
https://docs.gitlab.com/ee/user/project/import/github.html
Granted, this has a problem if Github suddenly, without any warning, decides to turn off that API. Or if it goes down and loses data permanently. I find both of those scenarios pretty unlikely, but it you are worried about them, it should be pretty straightforward to have some sort of export script in cronjob, to keep a local copy of issue database.
Here's git's official website, which is very good, and was started by a GitHub cofounder, but is run by the git project rather than GitHub: https://git-scm.com/
The desire to move off github (and therefore any additional services besides hosting you were using, which issues are just one -- new ones keep getting added to try and cement your dependence) is something more worthwhile of thought than the idea of github turning evil. Fortunately that desire is an actual thing that's very common, or at least the desire to not be wholly dependent, and is why many people don't even use github issues to begin with even if they use github itself for hosting (or some other non-issues features). So there's not a big problem, and even if you start with using github issues, there are various migration tools to move github issues out to [alternative]. (And of course github issues have their own merits, people frequently want to switch to them! So similar migration tools exist to move from [alternative] to github issues, I wrote one for Jira years ago.)
It is brilliant to integrate things with the decentralized source control itself, you get free backups and deciding to migrate to something different in the future is easy, I think it's an overlooked approach for a lot of people. (It seems less overlooked when it comes to documentation in various forms like developer-focused .md files, or broader full static html websites which github can conveniently host for you.) Fossil is well-worth investigating for this free integration to see if it meets one's needs. But of course nothing stops you from doing it with git yourself in various ways. For personal projects, I'm pretty satisfied with being as minimal as having an issues.md file and moving things to an issues-closed.md file when I close one. I've also used the git-issue extension (https://github.com/dspinellis/git-issue -- see also its bottom section of Related Work).
But despite its brilliance it's not always the right approach. It's very easy and reasonable to want more than what is realistic for something deeply integrated with the source code itself to provide, if only for inherent conflicts of desire, let alone any question of manpower. There are very good reasons to have entirely separate (and even multiple-of-kind partially overlapping/integrating/cross-referencing) systems for source code management, issue tracking, code review, forums, IM communication, wikis, public websites, docs (of whatever kinds and types for various audiences and authors, or public or not, or team-level spikes or plannings or retrospectives)... One aspect of Fossil I found weak was its user capabilities (https://fossil-scm.org/home/doc/trunk/www/caps/ -- no custom user categories alone is a deal breaker for so many things) but flaws in the execution of a fully integrated thing isn't really my point, my point here again is just that full integration despite its overlooked benefits and brilliance when applied to certain things is still not necessarily the right choice for something.
https://fossil-scm.org/home/doc/trunk/www/fileformat.wiki
This is from the same person who made SQLite.
All of these features cooperate and serve the same goal: coordinate the work product of people on a project, in a distributed fashion. One path to that is the nearly fully centralized model of GitHub. Another is the VCS + mailing list + bug tracker + wiki path, which requires considerable admin resources to manage, and at the end of the day is a pile of barely-cooperating services. Fossil's path is to put them all into one place so they all work properly together.
You can reference ticket IDs from a forum post.
You can point to a section of the timeline from a wiki article.
You can create diagrams in Pikchr format that live as version-controlled text in the repo and reference them from commit messages.
You can generate HTML diffs and include them into the body of a Markdown chat posting for discussion of a proposed change before committing it.
Etc., etc. It's all communication, which you need when you have multiple people working on a project, especially across time zones.
Considering this is the largest point between fossil and git that I can see, maybe we should just make it so git has the capability to expose an extension API for plugging additional capabilities like this in.
Then we could probably all use git and just be happy. You could theoretically use fossil's issues and wikis with git.