[HN Gopher] Fossil Chat
       ___________________________________________________________________
        
       Fossil Chat
        
       Author : brobdingnagians
       Score  : 232 points
       Date   : 2021-03-25 10:51 UTC (12 hours ago)
        
 (HTM) web link (www.fossil-scm.org)
 (TXT) w3m dump (www.fossil-scm.org)
        
       | rkeene2 wrote:
       | I think this is great. I will upgrade ChiselApp.com to use Fossil
       | 2.15 as soon as it's released.
       | 
       | A bit off-topic, but the thing I miss most when I use Fossil
       | (versus GitHub.com) is the ability to do code reviews and leave
       | in-line comments on code.
       | 
       | Also, pull requests [0] would be awesome for some of my more
       | public projects.
       | 
       | [0] https://fossil-
       | scm.org/forum/forumpost/01d77b7259ea0b00b7065...
        
         | chillfox wrote:
         | Interesting, I could see using fossil for public projects if
         | the pull requests gets implemented.
         | 
         | Currently I only use it for private projects. So my top wish
         | list feature would be basic CI.
        
           | rkeene2 wrote:
           | I started Fossil CI [0] for this, but I have not finished it
           | up.
           | 
           | [0] https://chiselapp.com/user/rkeene/repository/fossil-
           | ci/index
        
             | sigzero wrote:
             | Is there a way to donate to the chiselapp effort?
        
               | rkeene2 wrote:
               | I added some ways to donate to my profile on here
        
               | sigzero wrote:
               | Excellent
        
       | jayd16 wrote:
       | As others have said, the fact that this isn't geared as a
       | replacement implies that its an additional distraction on top of
       | established chat.
       | 
       | Perhaps a better iteration would be as a consistent proxy to
       | other chat hosts? As in, once configured, this chat feature would
       | mirror to IRC, Slack, Discord, Telegram, Google Hangouts, etc.
       | 
       | Fossil users could have barebones but consistent access to team
       | chats without the multiple inboxes problem? Or they could use the
       | established chat host directly and never look at this chat again.
        
       | danpalmer wrote:
       | > Fossil chat is not intended as a replacement or competitor for
       | <list of chat platforms>
       | 
       | So what is it for? If it's another inbox to check that's a bit of
       | a productivity drain.
       | 
       | I could understand if it was explicitly designed to compete with
       | other chat platforms. This would seem to fit with Fossil's
       | mission well.
        
         | Thursday032521 wrote:
         | > Fossil chat is designed for use by insiders - people with
         | check-in privileges or higher. It is not intended as a general-
         | purpose gathering place for random passers-by on the internet.
         | Fossil chat seeks to provide a communication venue for
         | discussion that does not become part of the permanent record
         | for the project. For persistent and durable discussion, use the
         | Forum. Because the conversation is intended to be ephemeral,
         | the chat messages are local to a single repository. Chat
         | content does not sync.
        
           | butterisgood wrote:
           | Sounds like a privileged "finger" for a collective ".plan"
           | style uh... thingy.
        
         | mgreenleaf wrote:
         | I think the idea is so that core developers have a quick way to
         | chat with one another over design ideas w/o needing to register
         | or setup other infrastructure, then move the best over to the
         | permanent forum record or wiki.
         | 
         | Then the core members don't need to have a dedicated channel
         | somewhere else. If they did, then that would be another inbox
         | to check; instead they can check the fossil chat when they are
         | on the project site looking over commits or documentation.
         | 
         | So it is just another source of information on the main "fossil
         | channel" instead of another channel to check. Viewing it in
         | that way, it is reducing the number of channels by simply
         | inlining it.
        
           | jayd16 wrote:
           | >Then the core members don't need to have a dedicated channel
           | somewhere else.
           | 
           | But isn't that "a replacement"?
        
         | exDM69 wrote:
         | Fossil is offline. You sync up when connected and then you have
         | code, issues, wiki, chat that work offline, and sync when
         | connected again.
         | 
         | It's not an instant messenger, more like a mail box or a
         | bulletin board. Which works when network is down.
        
           | chillfox wrote:
           | The chat does not sync
        
             | rkeene2 wrote:
             | There are Forums within Fossil for this kind of thing,
             | though.
        
           | samatman wrote:
           | Agh this is a weird combination of accurate and not.
           | 
           | Fossil works offline! But leaving a local server up is pretty
           | normal, and that way you get new stuff just as soon as other
           | servers publish it.
           | 
           | Also, and unique to fossil, the server is just... fossil,
           | same fossil that runs locally. No Gogs, no Gitlab, just your
           | fossil, their fossil, and fossil on the server, maybe with a
           | "real" webserver in front of it, maybe not.
           | 
           | The chat room is clearly intended to be run on an always-on
           | server instance, but there's nothing stopping you from
           | setting it up locally and inviting people to jump on your IP.
           | Well, NAT might well be stopping you... but in principle!
        
         | scambier wrote:
         | Most Fossil projects are on the smaller (smallest?) side, apart
         | from 2-3 outliers. They certainly don't have a dedicated IM
         | channel, and they certainly don't need it... except when they
         | do.
         | 
         | I could see this as a useful feature when you need to chat with
         | contributors once in a while in a less-formal way than issue
         | comments.
        
           | wyoung2 wrote:
           | Yes. Developers working independently is best for
           | productivity, but sometimes you need to coordinate something,
           | which then brings up the question: what to use? The last time
           | I tried to list it, I came up with over a dozen options, all
           | of which either require some sort of admin setup hassle or
           | put you into the claws of some megacorp. With Fossil chat,
           | you've already got Fossil set up, so it becomes the low-
           | friction path.
        
             | NoodleIncident wrote:
             | I forsee an addition to this diagram with "the chat tab of
             | a shared fossil repo", as one of the completely isolated
             | bubbles to the side
             | 
             | https://xkcd.com/1810/
        
       | jnwatson wrote:
       | Another instance of Zawinski's Law: "Every program attempts to
       | expand until it can read mail".
        
         | bachmeier wrote:
         | Well actually...
         | 
         | Fossil supports CGI extensions and Thunderbird saves your
         | messages in an sqlite database. I plan to read my email from
         | within Fossil repos. Why? Because I routinely download email
         | messages and commit them to the repo. This will give me a web
         | interface to read messages and, if I want, copy them into the
         | tickets database. I can then query all the email messages
         | related to a project using SQL.
         | 
         | I realize your message was not serious, but it's a real use
         | case.
        
         | whereistimbo wrote:
         | I'm looking forward to email client in Fossil, preferably on
         | the next April 1st!
        
       | swiley wrote:
       | git: version control over messaging
       | 
       | fossil: messaging over version control
        
       | alberth wrote:
       | Has anyone seen a demo?
       | 
       | I tried to created an account to see it live at
       | https://www.fossil-scm.org/home/chat but it appears they have
       | /chat locked down to authorized accounts.
       | 
       | (Regardless of what others might be saying in this thread, I
       | think this functionality is great. It reinforces the
       | centralization of your dev related work. Plus, presumably they
       | are using SQLite on the backend - so /chat might result in now
       | additional functionality being added to SQLite that might also be
       | beneficiary e.g. removing blocking on writes, etc)
        
         | wyoung2 wrote:
         | Yes, chat messages are stored in a table in the SQLite DB
         | backing the repository you're chatting about, which allows you
         | to close the browser window when you need some peace to
         | concentrate on work, then revisit the chat room later and see
         | what's been going on while you were away.
         | 
         | As for the dream of making SQLite faster or better, I doubt it.
         | Fossil works best for small teams with projects sized
         | reasonably for those teams, and chat privilege isn't generally
         | given out to the masses. There's only one chat room per repo.
         | Therefore, there simply isn't enough I/O involved to drive much
         | in the way of SQLite changes.
         | 
         | Fossil proper has resulted in SQLite improvements, though, such
         | as the recursive CTE feature added in 3.34.0. That directly
         | supported a feature for tracing the history of files through
         | renames across repository history using a single efficient
         | (though complicated) SQL query: https://fossil-
         | scm.org/forum/forumpost/5631123d66
        
         | exikyut wrote:
         | See my comment over at
         | https://news.ycombinator.com/item?id=26579872
        
       | exikyut wrote:
       | HI!
       | 
       | What it looks like: https://imgur.com/a/PaHExsp
       | 
       | Here's Fossil 2.15 running on EC2: http://54.79.202.57/register -
       | this link will allow you to create a new account.
       | 
       | Alternatively, the "chat" user (password "chat") can be used if
       | you don't want to make an account. [It used to have the ability
       | to create additional users (with admin privs), with the result
       | that the fossil instance rapidly began spouting SQL errors and I
       | had to reset it, twice. That was fun...]
       | 
       | The instance is completely ephemeral. If this comment is more
       | than a week or so old, expect the above IP to be dead (I'll be
       | cycling the VM).
       | 
       | And yes - note that it's going over HTTP, not HTTPS :P (that
       | would have taken an extra, uhh, _while_ )
       | 
       | --
       | 
       | If you're using 'chat': once you've opened the above link, go to
       | "login", login, then locate the new "chat" tab. You can
       | optionally go to Admin > Users and make yourself a new account
       | (the "Add" link is a little hard to see, it's to the far left
       | immediately under the tab bar; also be sure to select "Chatroom"
       | from the far right in the permissions list).
        
         | Tenal wrote:
         | Yikes.
         | 
         | Tip: Hire a designer.
        
         | butterisgood wrote:
         | Not able to login a chat:chat
        
           | exikyut wrote:
           | FIXED
           | 
           |  _Realizes people can change the password_ woops  <insert
           | cartoon punching fight cloud here> argh
           | 
           | OK. Because Fossil is awesome you can disallow people from
           | changing their own passwords, while also making it possible
           | to create further accounts that _can_ change their own
           | passwords. Nice!
           | 
           | [EDIT: A few misconceptions here. No, you can't do the above;
           | if a user couldn't change their password but could create new
           | admin accounts, said new admin account could just change the
           | initial user pw.]
        
         | nattaylor wrote:
         | Some seems to have changed the password already :/
         | 
         | Too bad it isn't allowed for logged-in anonymous users to chat
         | (though that would be confusing!)
        
           | exikyut wrote:
           | Fixed and fixed. You can now go directly to
           | http://54.79.202.57/register
        
           | tomphoolery wrote:
           | i mean, this site is called "hacker" news so...
        
             | exikyut wrote:
             | Yeah, enabling _all the things(tm)_ for the chat account
             | produced unsolicitedly predictable results. Users can now
             | create their own accounts, and the  'chat' account I linked
             | can only access the chat page.
             | 
             | This evening was a fun howtobasic in like 15 minutes
        
         | SQLite wrote:
         | Thanks for the demo server, exikyut.
         | 
         | Maybe: Go to the Setup/Access page and select the "Allow users
         | to register themselves" checkbox, and add permission "C" to
         | "Default privileges". Then press Apply. With that setup change,
         | users will have a "Create New Account" button on the login
         | page.
        
           | exikyut wrote:
           | :O hi!
           | 
           | Done, that's a really cool feature.
        
             | SQLite wrote:
             | Newly registered users still don't have access to chat. I
             | think if you add the "C" privilege to the generic "reader"
             | user, that will solve the problem.
        
               | exikyut wrote:
               | Thanks. For completeness, this was fixed.
        
         | j-pb wrote:
         | I don't understand why these tools always have so much styling,
         | when they would look a lot better if they just never did it in
         | the first place.
         | 
         | Drop-shadows, rounded corners, borders, colouring, fades. All
         | extra work, all a pain to look at.
         | 
         | Is like watching Picasso paint a painting on a glass wall, the
         | first half you're "wow this is great", and then you just want
         | to start screaming "STOP! NO! IT WAS BETTER BEFORE!"
        
       | [deleted]
        
       | kevincox wrote:
       | All I can think is that it seems a bit early for April Fool's
       | jokes.
       | 
       | It isn't clear what makes bundling a chat program into your SCM
       | beneficial. The only benefit I can see is linking to other things
       | in the SCM like wikis and issues, but since these are available
       | on the web anyways you can just use regular URLs in any old chat
       | app.
       | 
       | The other possible benefit would be keeping chat with you for
       | local searching and keeping it with the history of the repo,
       | however this is designed to be ephemeral so throwing that
       | possible benefit away. (I guess you are supposed to use Forums
       | for that https://www.fossil-
       | scm.org/home/doc/trunk/www/forum.wiki)
       | 
       | I'm not a Fossil user, so maybe I just don't understand, but I
       | see little to no value in this feature.
        
         | sgbeal wrote:
         | > It isn't clear what makes bundling a chat program into your
         | SCM beneficial. ... you can just use regular URLs in any old
         | chat app.
         | 
         | You just answered your own question: trying to get any given
         | group of people to use the same 3rd-party chat platform,
         | especially one hosted by Big Megacorp (and aren't they all
         | nowadays?), is like herding cats. Every developer on a fossil
         | project already has an account they can use, not hosted by Big
         | Megacorp, which they can chat over (provided the project admin
         | permits it - they are not required to give devs chat access).
         | 
         | i admit that i had several reservations when Richard proposed
         | /chat on the fossil mailing list, but i'm a 100% convert, and
         | now use it 24/7 on two projects and get tremendous value from
         | it.
         | 
         | (Disclaimer: i wrote the /chat front-end, so am inherently
         | biased, but i'm biased towards it because it's useful,
         | low/zero-maintenance, and low-friction, not because i've
         | invested many hours into its development.)
        
         | billfruit wrote:
         | Lack of a direct messaging/email feature is one of the major
         | lacuna of Git hub. In that light may be having some sort of
         | integrated channel is a good thing.
        
         | [deleted]
        
         | mgreenleaf wrote:
         | If you already have a chat infrastructure set up with all the
         | bells and whistles, then you probably don't need this; it is a
         | different kind of workflow.
         | 
         | But one workflow for it would be open source projects that
         | prefer not to have to maintain additional infrastructure and
         | just want to inline ephemeral communication w/o having to keep
         | it forever; then they make a design decision and have
         | everything that is finalised moved over and documented in the
         | wiki.
        
       | halfmatthalfcat wrote:
       | Where are the screenshots?? How infuriating is it to go to a
       | project's homepage that has a UI and not see any goddamn
       | screenshots. This is absolutely table stakes if you want me to
       | use your product.
       | 
       | edit: Oh haha, the website is literally Fossil. Ok but I wanna
       | see what the chat UI and other stuff looks like.
        
         | sigzero wrote:
         | Pretty much what I'd expect...
         | 
         | https://imgur.com/a/EQ2wSQi
        
         | exikyut wrote:
         | See my comment over at
         | https://news.ycombinator.com/item?id=26579872
        
       | julianlam wrote:
       | So they built their own chat room feature?
       | 
       | I feel that's a bit short-sighted, but I'll admit I'm only a
       | random opinionated passer-by. You can certainly do it, but you'll
       | run quickly into issues and be buried in feature requests because
       | like it or not, a chat room isn't just "a couple messages being
       | passed back and forth"
       | 
       | Hand rolling your own communication tool is a great way to become
       | so busy you don't have time for your actual work.
        
         | supportlocal4h wrote:
         | Heh. Building an scm is a great way to become so busy you don't
         | have time for your actual work. Building a db is another great
         | way.
         | 
         | If I could be so unproductive...
        
           | sgbeal wrote:
           | > If I could be so unproductive...
           | 
           | It goes much further than that...
           | 
           | When one views a fossil-hosted forum post from the main
           | fossil site or sqlite's site, they are looking at...
           | 
           | - A forum post rendered by software Richard wrote. - Piped
           | out to you via an HTTP server he wrote. - Served from an SCM
           | he wrote. - Stored on a database package he wrote. - All
           | coded in a text editor he wrote.
           | 
           | Complete vertical integration. He's written, or had a
           | majority hand in, every part of the chain except for the
           | browser. We're all awaiting his announcement about his
           | browser project. It's only a matter of time.
        
             | ephaeton wrote:
             | I'd rather he'd announce his MTA & MUA so we can reinstate
             | the fossil mailing list. Going to its own quirky (at the
             | time, haven't checked since the switch) forums meant I lost
             | interest in being part of the (dev) community.
        
               | sgbeal wrote:
               | > I'd rather he'd announce his MTA & MUA so we can
               | reinstate the fossil mailing list.
               | 
               | It's demonstrably become impossible to manage spam in
               | such an environment without the resources of mega-corps,
               | whereas fossil aims to be a entirely SCM environment in a
               | single binary hosted from modest hardware (e.g. a
               | Raspberry Pi).
               | 
               | The inability to manage spam was the driving factor for
               | the forum. It is somewhat quirky, but it works well and
               | our spam rate has been literally one single spam in
               | nearly three years of operation (and that one was subtle
               | - hiding an ad link inside a markdown hyperlink which
               | enclosed only a single period). Similarly, the sqlite
               | forum (which was migrated only relatively recently) is
               | also spam-free.
               | 
               | If you have found a way to develop a fully spam-proof,
               | mailing-list-based solution then, by all means, show us
               | the code. Until then, the forum has proven to completely
               | solve the problem it set out to: provide a spam-free
               | communication channel for fossil and sqlite.
        
             | gglitch wrote:
             | What's the text editor? If anything could get me off Emacs,
             | it'd come from the Hippoverse.
        
         | barkingcat wrote:
         | In the context of fossil-scm, it does make sense. The idea of
         | fossil is that it's 1 embedded database (sqlite) that contains
         | the entirety of your development activities.
         | 
         | scm, wiki, defect tracking, a little bit of project management,
         | and now chat room.
         | 
         | The entire idea of fossil is that you shouldn't need to use
         | another website or another tool for anything related to
         | tracking your development. It's the "I am stranded on a
         | tropical island, what do I use for hacking on a project if I
         | can't have github or irc or slack or any other tools out
         | there."
         | 
         | In the context of fossil, chat is _just a couple messages being
         | passed around_ with no account taken at all for any other
         | concerns. It 's not a "chat" tool, it's a chat tool for the
         | fossil-scm. Especially if you look at the Ephemeral feature -
         | they delete chat messages after a certain configurable time -
         | so they don't even have to worry about keeping messages.
        
         | mscrnt wrote:
         | It's only for devs with commit bits--not random users. So not
         | likely to be buried in feature requests and much more likely to
         | be just a couple messages being passed back and forth between
         | developers of the project. I feel it streamlines the process
         | and improves cohesion a great deal; more of a long-sighted deal
         | --but I'm only a random opinionated passer-by.
        
         | sgbeal wrote:
         | > I feel that's a bit short-sighted, ... You can certainly do
         | it, but you'll run quickly into issues and be buried in feature
         | requests
         | 
         | (Disclaimer: i wrote 99%+ of the fossil chat front-end code.)
         | 
         | FWIW...
         | 
         | When Richard (our Alpha Coder) first posted about his proof-of-
         | concept app for the chat feature my inner reaction was very
         | similar to yours. However, writing a chat front-end sounded
         | like an interesting way to spent Christmas, so dove right in.
         | 
         | Now, exactly 3 months later, we've been using chat 24/7 within
         | the Fossil project and i use it heavily on one of my own
         | projects (hosted over CGI, and my biggest initial skepticism
         | was whether chat could work reasonably well that way). Despite
         | my early doubts it's been a genuine help to us within the
         | project. i don't recall us getting more than 1 small feature
         | request since then, and that was cut off the same way the
         | hypothetical deluge would be: point them to the feature's scope
         | document and redirect such users to Discord or Facebook or
         | whatever the cool kids are using these days.
         | 
         | It's been remarkably low-maintenance so far. The only notable
         | development in the /chat code in the past 3 months was the
         | recent replacement of window.fetch with more conventional XHR
         | because of compatibility issues with window.fetch for some
         | clients, and that took all of 90 minutes or so to do.
        
       | orf wrote:
       | mdel, ltime, mtime. Why do people insist on oft unreadable short
       | column names?
        
         | oblio wrote:
         | Because they're cdevs.
        
           | exikyut wrote:
           | Dear diary,
           | 
           | I was today years old when I learned I was a character
           | device.
           | 
           | I'm not surprised; I _do_ emit a lot of bytes all day.
        
           | orf wrote:
           | I think you mean cdvs, the e is clearly overkill, takes up
           | more bytes on disk, increases compile times and eats up
           | valuable screen real estate! The last one is especially bad,
           | because it will make the code that uses it harder to read.
        
             | onychomys wrote:
             | Surely we should instead use cdv, in case there's only one
             | of them in a row. And boom, 25% space savings from that
             | little change!
        
               | orf wrote:
               | This is a 25% decrease in storage and a 25% increase in
               | raw typing throughput. Truly increadible.
        
             | oblio wrote:
             | > I think you mean cdvs, the e is clearly overkill, takes
             | up more bytes on disk, increases compile times and eats up
             | valuable screen real estate!
             | 
             | Also one more extra letter to type for people who can type
             | 100+ words per minute and over an entire day probably only
             | need to type 2 words per minute on average (the rest of the
             | time spent thinking, debugging, reading documentation,
             | being in meetings, etc) :-)
        
         | sgbeal wrote:
         | > mdel, ltime, mtime. Why do people insist on oft unreadable
         | short column names?
         | 
         | You forgot to mention vfile.chnged. i've been contributing to
         | fossil since 2008 and that missing "a" still, to this day,
         | agitates me ;).
        
       | HeckFeck wrote:
       | Does anyone use Fossil? I'm considering it for my personal
       | projects. I like all it offers for the relatively low resource
       | usage.
       | 
       | The only use of it I've seen in the wild is Ripcord
       | (https://dev.cancel.fm/issues), which is interestingly also
       | relatively low resource usage compared to its competitor.
        
         | silasdb wrote:
         | I decided to give it a try on a new project and, although it
         | seemed strange at first (coming from years using git), I fell
         | in love with it and I'm converting all my own projects to
         | fossil. It does everything other SCMs do. It also can do
         | everything git does, but in a saner way.
         | 
         | Also, the self-hosting capabilities in a few MB binary are
         | astonishing and you just don't pay for what you don't use. In
         | my own repositories, I don't use chat nor wiki pages, but I do
         | use forum, the ticket system and technotes.
         | 
         | The community and developers are very nice to answer questions
         | too, and are open for suggestions. There is room for even
         | further improvement and it is more a matter of someone showing
         | up willing to develop the specific feature of the project.
        
         | arsome wrote:
         | SQLite is probably the best known user of it
         | 
         | https://sqlite.org/src/doc/trunk/README.md
         | 
         | https://www.sqlite.org/whynotgit.html
        
         | Tomte wrote:
         | SQLite obviously. Probably some other projects in the Tcl and
         | SQLite world.
        
         | sigzero wrote:
         | The TCT (Tcl Core Team) uses it heavily. They seem to like it a
         | lot.
        
           | exikyut wrote:
           | Ah, due to (who would've thunk) the SQLite connection.
        
             | sigzero wrote:
             | That probably had a lot to do with it I am sure.
        
               | bch wrote:
               | > Ah, due to (who would've thunk) the SQLite connection.
               | 
               | The "SQLite connection" is manifold - indeed drh (SQLite
               | author) used to be on the Tcl Core Team, and is an
               | unapologetic user of Tcl. SQLite itself isn't just "well-
               | supported" in Tcl, it started there. drh calls SQLite "a
               | tcl extension that escaped into the wild", among other
               | things, and that "...SQLite is still heavily dependent
               | upon TCL and the ongoing support, maintenance, and
               | enhancement of SQLite would not be possible without TCL,
               | and would be seriously inconvenienced without Tk." [0][1]
               | 
               | The ties are interesting and deep.
               | 
               | [0] https://sqlite.org/tclsqlite.html
               | 
               | [1] https://www.tcl.tk/community/tcl2017/assets/talk93/Pa
               | per.htm...
        
         | KwanEsq wrote:
         | SQLite famously does so:
         | 
         | https://www.sqlite.org/cgi/src
        
         | chillfox wrote:
         | I use it for any personal projects that are large enough that I
         | want a few pages of documentation and a ticket system to keep
         | track of planned features.
         | 
         | The ticket system can be configured quite a bit, so I usually
         | set it up like a todo list with: "to do, doing, done".
        
         | mgreenleaf wrote:
         | I use it for most of my projects, with git covering the rest of
         | them. I prefer the cli usage, philosophy, single binary /
         | single file repository, and having all the notes/issues
         | transfer across when I push makes it easier to develop and test
         | across windows/linux/bsd. Autosync and other things are well-
         | thought out details too; generally feels well designed.
         | Otherwise, day to day usage isn't much different.
        
         | petre wrote:
         | Yes, we use it. It's awesome. Thank you again D. Richard Hipp.
        
         | Hendrikto wrote:
         | Fossil looks very interesting, but I completely disagree with
         | their [stance on rebasing](https://fossil-
         | scm.org/home/doc/trunk/www/rebaseharm.md). This is a
         | dealbreaker for me.
         | 
         | I do not consider having 10 buggy commits per feature instead
         | of 1 working one an advantage. It just complicates reading
         | history and hinders debugging (e.g. bisect). I get their
         | arguments, I just disagree.
        
           | iudqnolq wrote:
           | The theory is that you don't see those 10 commits unless you
           | choose to.
           | 
           | I think they're right in theory that a Sufficiently Smart^TM
           | scm should be able to work better by not throwing data away,
           | but I haven't tested if it actually works in practice.
           | 
           | > The Git documentation acknowledges this fact (in so many
           | words) and justifies it by saying "rebasing makes for a
           | cleaner history." I read that sentence as a tacit admission
           | that the Git history display capabilities are weak and need
           | active assistance from the user to keep things manageable.
           | Surely a better approach is to record the complete ancestry
           | of every check-in but then fix the tool to show a "clean"
           | history in those instances where a simplified display is
           | desirable and edifying, but retain the option to show the
           | real, complete, messy history for cases where detail and
           | accuracy are more important.
        
           | BeetleB wrote:
           | First, it sounds like you're looking for squash - not rebase.
           | 
           | This is a false dichotomy. You can have it both ways - git
           | just doesn't provide it both ways.
           | 
           | In Mercurial, you can squash commits so the history shows it
           | as one commit, but you can still see the individual commits
           | if you really want to. The history is never lost. I imagine
           | Fossil does something similar.
           | 
           | Looking at this subthread: Wow! People really get triggered
           | when it comes to Git.
        
           | dahart wrote:
           | Agreed. In particular "Rebasing is lying about the project
           | history" is misleading and frankly, just downright lame
           | hyperbole. I actually want to try Fossil, but this text is so
           | dishonest and hyperbolic, it's off-putting and preventing me
           | from trying Fossil. This feels like a sign that Fossil might
           | not be focused on real world user needs.
           | 
           | It's not uncommon to bump into this claim in threads about
           | git, I don't think the Fossil devs came up with this idea,
           | but they sure are running with it. This is an argument whose
           | time has passed and needs to die. It's not helpful.
           | 
           | Please @Fossil devs, come up with better and more honest
           | reasons to compare Fossil to git. If I don't have to rebase
           | again, that's great! If Fossil avoids merge conflicts more
           | often, and handles merge conflicts better, absolutely
           | fantastic.
           | 
           | But, please, come on. Rebase is "lying" exactly just as much
           | as hitting backspace is "lying". Am I lying if I fix a typo
           | or a bug before I commit? Do you really want to preserve all
           | keystrokes ever typed on your keyboard during development?
           | Does Fossil actually capture all keystrokes? If not, then are
           | you sure Fossil is not lying about development history by
           | your definition? Being able to clean and organize your
           | development history before you share it with others is an
           | intentional feature, not a bug. Attempting to claim a moral
           | high ground over what is purely a technical and workflow
           | issue is making Fossil look ignorant to me, it's doing the
           | opposite of what you want.
        
             | SQLite wrote:
             | I consider a version control system to be a history of a
             | project. If you change the history to something that is
             | materially different, which rebase does, then you are lying
             | about the history. You cannot white-wash this fact.
             | 
             | The history Git and in Fossil is only precise to the
             | transaction level. A key-stroke or backspace is _not_ a
             | transaction. A single iteration of the edit-compile-test
             | cycle is not a transaction. A transaction is created by the
             | "commit" command. Git and Fossil make no record of the
             | stuff that happens in between two commits. They only record
             | what is in each commit. So you can backspace and edit and
             | change all you want to before typing "commit". But once you
             | type "commit", all that you've done since the previous
             | commit becomes part of the permanent record. Rebase
             | violates that constraint. It changes the permanent record.
             | Rebase makes the repository say that the sequence of
             | commits is different from the order in which they actually
             | happened.
             | 
             | You can call that whatever you like. "Telling a compelling
             | story." "Generating a clean history." I call it "lying",
             | since the purpose seems to be to deceive the reader about
             | what actually happened.
             | 
             | It is useful to have a simplified overview of project
             | history, to aid the reader's comprehension. There is no sin
             | in this as long as you are truthful to state that the
             | simplified history is in fact a simplification that skips
             | or revises some of the messy details of reality. The
             | alternatives to rebase that Fossil provides do exactly that
             | - they suppress the unimportant details of the history to
             | provide a simplified and more readable history. The
             | difference is that the original, truthful history is still
             | provided, for auditing and for those who care. In other
             | words, the repository reports both "what we should have
             | done" and/or "the best way to think about what we did" in
             | addition to "what actually happened".
             | 
             | I concede that if you think of a source code repository as
             | just a story or as documentation to help future readers,
             | and not as a accurate history of the project, then rebase
             | is not lying. In that case, rebase is just revising your
             | narrative. But I think that a source code repository should
             | be a true history of a project. If you view a source
             | repository as a true history, as I do, then rebase is a
             | tool for lying about the history.
        
               | dahart wrote:
               | > I call it "lying", since the purpose seems to be to
               | deceive the reader about what actually happened.
               | 
               | Do you have any better reasons to avoid rebase that don't
               | depend on your own negative interpretation of git's
               | design intent, an interpretation that contradicts git
               | documentation?
               | 
               | You could be focusing on positives instead of trash
               | talking. You could be talking about the interesting idea
               | of providing multiple views of history, one un-editable
               | for details and one editable for presentation. That's
               | interesting and useful. Instead you choose to take cheap
               | shots at a system that was designed differently than your
               | ideal, without acknowledging its intent. You are breaking
               | Hanlon's razor and consciously choosing to assuming
               | malice... for something that has a written history of
               | discussion about why it exists.
               | 
               | Are you aware that rebase openly advertises the fact that
               | it reorders commits, and was designed that way
               | intentionally? Are you aware that git openly makes zero
               | guarantees about the order of transaction events,
               | intentionally, to allow me to have control over my
               | presentation? Are you aware that rebase is primarily used
               | on local commits before push, and not often used after
               | push?
               | 
               | I would speculate that you are aware of these things, and
               | not simply ignorant about git. If so, that means you are
               | lying here and now, if not it means you don't know what
               | you're talking about. I think you know git's design
               | intent, so it seems like you are intentionally
               | misrepresenting the design intent of rebase. The only
               | deceit here is coming from you, ironically.
        
               | mscrnt wrote:
               | Except none of that refutes the fact that changing
               | history is lying irrespective of the motivation behind
               | the change. You can rephrase it however your
               | sensibilities like, it won't change that fact.
        
               | taberiand wrote:
               | My philosophy is that the true transaction event and
               | accurate immutable history of the project is the artifact
               | built for release (in our process, the merge to master
               | drives this and therefore commits to it map to the
               | transaction event). The stumbles and trips along the way
               | are irrelevant keystrokes that get backspaced / rebased
               | out.
        
               | harryvederci wrote:
               | Big fan of SQLite here (thank you!), and very interested
               | in Fossil as well.
               | 
               | I never understood why people want to change commit
               | history in Git, so for me it won't be an issue to not
               | have that in Fossil.
               | 
               | Having said that, one point of feedback on the "lying"
               | part: I personally interpret that type of negative
               | phrasing as pointing at a different tool and saying:
               | "Look! They're doing it wrong!"
               | 
               | You make amazing tools, man! There is no need to speak
               | negatively about the behaviour of other players if you're
               | a fantastic player yourself. I'd personally just mention:
               | "Git allows you to change history. Fossil is never going
               | to allow changing history, because that could cause
               | issues X, Y and Z. If you do need to change history for
               | some reason, by all means try something like Git." Keep
               | it factual, and get right back to pointing out what makes
               | Fossil great.
               | 
               | I love how SQLite doesn't downplay any alternatives, it
               | just says: "Look at me. I'm awesome. But if you need to
               | do <unsupported thing>, you probably don't want to use
               | me." It would be great if the Fossil website had that
               | same awesome attitude.
               | 
               | TL/DR: Random guy X that never created a successful
               | product gave marketing advice to the person who created
               | one of the most successful products of all time. Random
               | guy X is an idiot.
        
               | bachmeier wrote:
               | > There is no need to speak negatively about the
               | behaviour of other players
               | 
               | I don't interpret it as a negative statement about Git or
               | any other version control system. I interpret it as a
               | statement about use of the term "project history" after
               | rebasing. I agree with him, because the phrase "history
               | of the project" implies it's the history of the project,
               | and that's simply not what you have. If you order a
               | cheeseburger and they give you a chicken sandwich, maybe
               | it doesn't bother you since you like both, but it would
               | indeed be lying if someone asks what you're eating and
               | you say it's a cheeseburger.
        
               | dahart wrote:
               | Well said. Exactly. I agree 100%.
               | 
               | > I never understood why people want to change commit
               | history in Git
               | 
               | FWIW, by and large, they don't, not after it's been
               | pushed. That's one of the major problems with this
               | critique.
        
               | justin66 wrote:
               | Thanks for explaining the rationale of that feature (or
               | lack thereof) here.
               | 
               | Also for the online Fossil docs, which are great.
        
           | rubyist5eva wrote:
           | This is what private branches are for - when you merge them
           | and sync they show up as a single commit on the mainline
           | branch - not too different from git merge --squash.
        
             | [deleted]
        
             | mscrnt wrote:
             | That, and it's very easy to hide commits from the timeline
             | too. You can get most if not all the benefits of rebase
             | without losing history--that's a good thing.
        
         | rkeene2 wrote:
         | I use Fossil and run a Fossil hosting service called ChiselApp
         | [0].
         | 
         | I've used Fossil for all kinds of projects big (commercial
         | Linux distributions, with installer ISO as the result of the
         | CI/CD pipeline stored as Fossil Unversioned content artifacts)
         | to small (a single file demo), but primarily with only a small
         | number of developers.
         | 
         | [0] https://chiselapp.com/
        
           | AnonHP wrote:
           | Could you please put up a post on the ChiselApp website about
           | your motivations for running a free service, how you manage
           | it, etc.? It's always interesting to see these free services
           | without a commercial angle, and makes me wonder why they're
           | there, how they sustain themselves, what restrictions they
           | impose on users, and related matters.
        
             | rkeene2 wrote:
             | I run it because I use Fossil a lot and want a low-friction
             | way to create new repos. It doesn't cost me anything to run
             | since I already had extra CPU, RAM, and Disk capacity on my
             | personal server.
        
         | emodendroket wrote:
         | It seems to me like you'd want it to be obviously way superior
         | for some reason to go so far away from the herd.
        
           | mscrnt wrote:
           | You'd forsake an improvement for the sake of following the
           | rest of the cattle? Have you used it, yet, to see if it
           | sufficiently meets your way superior standard to break free
           | from the herd?
        
         | sgbeal wrote:
         | > Does anyone use Fossil?
         | 
         | Almost literally every day since Christmas break of 2007.
         | 
         | > I like all it offers for the relatively low resource usage.
         | 
         | And setting it up to run over CGI (e.g. over a $5/month shared
         | hoster) takes about 90 seconds and requires no additional apps.
         | That was the initial Killer Feature for me, and is still
         | critical for me. i host dozens of repositories over CGI on an
         | inexpensive shared hoster (https://fossil.wanderinghorse.net),
         | and couldn't do that with any other SCM.
        
         | theamk wrote:
         | I avoid it because of complete lack of commit amendment tools.
         | 
         | It seems like quarter of the time I make a commit I mess up
         | either a commit message or a file list, and have to "git
         | amend". I have no idea how the sqlite devs live without the
         | feature, they must be much more careful programmers than I am.
        
           | rkeene2 wrote:
           | There has pretty much always been a way to amend commits --
           | the difference is in Fossil this amendment is done by writing
           | a new journal entry (artifact) noting which commit is being
           | amended and how, rather than modifying the commit directly.
           | 
           | Generally, the compiled version (base+resultant set of
           | amendments) is displayed to the user, but the entries which
           | modified the commit are also available to be seen.
        
             | everybodyknows wrote:
             | >modifying the commit directly.
             | 
             | Git preserves a record of the origial commit, plus
             | amendments leading up to the final - _git-reflog_. The
             | reflog is however subject to periodic pruning by default -
             | see _git-gc_.
        
               | rkeene2 wrote:
               | Fossil preserves the journal of activities forever, and
               | across clones.
        
           | mscrnt wrote:
           | You could always try "fossil amend" as a commit amendment
           | tool for starters.
        
           | sgbeal wrote:
           | > I avoid it because of complete lack of commit amendment
           | tools.
           | 
           | That's downright wrong: https://fossil-
           | scm.org/home/help/amend
        
         | rcarmo wrote:
         | I used it for quite some time, still have archived repos on it
         | because they're a single file and very easy to move around.
         | 
         | Mostly moved to gitea on a home NAS for the GitHub sync
         | capability (makes it easy to have a local copy of dependencies,
         | etc.)
         | 
         | But I do miss the straightforwardness (and sometimes bluntness)
         | of fossil sometimes. Much easier to deal with for personal
         | projects.
        
         | zzo38computer wrote:
         | I use Fossil for my own projects. However, I do not use the
         | forum feature, chat feature, etc. They don't belong there in my
         | opinion, nor do I like the implementation much; I use external
         | software.
         | 
         | There are a few other things I dislike about the design of
         | Fossil; it doesn't have very good low level access, for one
         | thing (there are other concerns too, although rebase isn't one
         | of them). I have started to make my own implementation, which I
         | intend to support the Fossil protocol and deconstruction
         | format. Someone else perhaps had a similar idea, so were
         | writing libfossil; however, they seem to consider the protocol
         | implementation a lower priority, while I consider it important
         | (however, they consider it important to use the same database
         | schema, while I don't, and can freely rewrite it). As it turns
         | out, both of us had independently used the term "deck" or
         | Fossil structural artifacts.
        
       | satya71 wrote:
       | Reminds me of Unix talk and write. They were so simple when
       | sharing little bits of information with people already logged
       | into the system.
        
         | wyoung2 wrote:
         | The biggest difference was that write(1) was 1:1, whereas this
         | lets any number of people participate. It's got a bit of
         | formatting control as well, though not full Markdown, alas.
        
       | candiddevmike wrote:
       | How is the security with Fossil? I'm always leery of hosting
       | (niche) web facing services written in C.
        
         | sgbeal wrote:
         | > How is the security with Fossil? I'm always leery of hosting
         | (niche) web facing services written in C.
         | 
         | Fossil's been available for nearly 14 years now and we've had
         | to make only a single security-relevant release in that time
         | (in late Summer 2020).
         | 
         | Fossil's primary architect, Richard Hipp (edit: HN user
         | "SQLite"), is no stranger to code hardening and continues to
         | add security-related APIs to all levels of the code, from how
         | we internally build SQL queries or encode URL arguments to the
         | recent (late 2020) ability for the db to lock down regions of
         | the db until/unless that protection is toggled off for the
         | brief blocks of code which need to modify those regions,
         | ensuring that other areas of the code cannot modify parts of
         | the database which they aren't directly responsible for.
         | Security against malicious inputs has never been treated as an
         | afterthought in fossil.
        
         | pmarin wrote:
         | What web server do you use?
        
           | candiddevmike wrote:
           | Caddy, though I have used NGINX and HAProxy in the past. I
           | get your point, but those projects have corporate backing and
           | a lot of scrutiny. A niche C project seems less likely to
           | have that.
        
             | exikyut wrote:
             | SQLite3 is the only project I have ever seen that casually
             | makes (non-normative, non-legally-binding) confident
             | reference to its suitability for use in medical devices.
        
               | zie wrote:
               | My understanding is, if you pay for a support contract,
               | they are happy to make it legally binding.
               | 
               | It's literally the most used database in the world, but a
               | giant margin. Every Android and iOS device and every mac
               | and linux machine use SQLite. I haven't ever bothered to
               | check Windows, but I bet they use it too.
        
               | iudqnolq wrote:
               | I just saw today it's "aviation certified", which I
               | assumed was the same but turned out to be literally true.
        
             | pmarin wrote:
             | Do you know the author of Fossil is the same person who
             | wrote sqlite?
        
         | exikyut wrote:
         | Apache and nginx are C
         | 
         | As is stunnel, which is what the canonical fossil website uses
         | to handle HTTPS
        
           | mscrnt wrote:
           | And httpd and relayd.
        
         | wyoung2 wrote:
         | Fossil is a single executable with low system requirements
         | operating on a single SQLite database file, so it's really easy
         | to chroot. It'll even chroot itself if started as root:
         | https://www.fossil-scm.org/home/doc/trunk/www/chroot.md
         | 
         | If you want something more complicated (BSD jails, Docker,
         | etc.) the same properties make it easy to box up that way
         | instead.
        
         | SQLite wrote:
         | It's a fair question. I need to better document the security
         | features built into Fossil. Here is a quick off-the-top-of-my-
         | head summary:
         | 
         | (1) Fossil is designed to run inside a minimal chroot jail. The
         | stand-alone "fossil" binary needs its repository database file,
         | /dev/null, and /dev/random and nothing else. It can run inside
         | a sparse jail. So even if somebody manages to find an RCE in
         | Fossil, the damage potential is limited. They cannot shell-out
         | because there is no /bin/sh in the jail.
         | 
         | (2) Fossil processes each HTTP request in a separate process.
         | 
         | (3) Custom static-analysis tools run over the Fossil sources at
         | compile-time, and abort the built if any problems are seen. The
         | source code and docs to these tools is in the Fossil source
         | tree.
        
       ___________________________________________________________________
       (page generated 2021-03-25 23:01 UTC)