[HN Gopher] Richard Hipp Speaks Out on SQLite (2019) [pdf]
       ___________________________________________________________________
        
       Richard Hipp Speaks Out on SQLite (2019) [pdf]
        
       Author : pncnmnp
       Score  : 91 points
       Date   : 2022-12-11 16:00 UTC (7 hours ago)
        
 (HTM) web link (sigmodrecord.org)
 (TXT) w3m dump (sigmodrecord.org)
        
       | clusterhacks wrote:
       | There are great bits of discussion about SQLite being maintained
       | and enhanced by a very small team - three people.
       | 
       | While I very much appreciate the safety of being a very small cog
       | in a larger machine, I also wonder how my career might be more
       | enjoyable and satisfying if I had chosen to limit my options to
       | small teams where every single person on the team had a critical
       | impact on the success of a project.
        
         | jerrygenser wrote:
         | Is there a succession plan in place given the bus factor [1]
         | with such a small team? Is anyone else concerned about
         | maintenance if either a normal everyday medical issue came up
         | or in the worst case something unimaginable?
         | 
         | [1] https://en.wikipedia.org/wiki/Bus_factor
        
           | xiphias2 wrote:
           | It's not really a problem when it's a 100% well tested
           | software.
        
           | bob1029 wrote:
           | From my perspective, SQLite is stable enough to be considered
           | "done". For our product, we could go back to builds from 2020
           | and none of our customers would be able to detect a
           | difference.
           | 
           | SQLite is not something we wire up and expose bare-ass to the
           | public internet. We don't worry about 0-day security issues
           | in this context. It's more like a wrapper our product uses
           | for structured disk access. Anything that would warrant
           | urgent patching is in .NET vendor or in-house software piles.
           | 
           | If something horrible happened and the entire SQLite dev team
           | was wiped off the face of the planet, I'd make a note to look
           | at alternatives by ~2025.
        
           | rwbt wrote:
           | Yes, Dr. Hipp mentioned it once that there is a foundation in
           | place to take care of things and increase the bus factor. I
           | think that was one of the conditions before Nokia signed
           | their agreement to license SQLite for Symbian.
        
         | richardlblair wrote:
         | There are organizations, even large ones, that prefer to work
         | this week. Trying to set the maximum number of team members to
         | 6 people including a PM and a designer. As you move through
         | your career I highly recommend adding a question during the
         | interview process to address this. It really does make a big
         | difference on your quality of life, and you'll make some great
         | friends along the way.
        
         | ilyt wrote:
         | That kinda entirely depends with what people you're stuck with.
         | In 6-10 person team you can just avoid working with that one
         | colleague you just can't gel with (even if they might be
         | perfectly fine from competency standpoint).
         | 
         | I think medium-sized projects (say a team of max 10, or maybe 2
         | smaller ones) seems to be the most fun ones. You have enough
         | manpower to do some bigger reorganizing if required but it
         | isn't as big that rewrite of any part is years-long saga.
        
       | qbasic_forever wrote:
       | More recently he's been on the Changelog podcast in the last year
       | and it's a great listen: https://changelog.com/podcast/454
        
       | johnboiles wrote:
       | I've been trying to use SQLite3 in an embedded (ESP32 -- dual
       | core 240MHz w/ qspi NOR flash) project and the performance has
       | been surprisingly bad. Seems like the minimum amount of time to
       | make a query (even for example, selecting from a table that does
       | not exist, takes a minimum of 5ms). For a simple table with 10
       | short columns I'm getting 10s of milliseconds per record to
       | SELECT. I can parse whole JSON files with the same data to RAM
       | faster then I can query SQLite which seems wrong. SQLite is
       | performing ~10x worse than I'd expected it would.
       | 
       | Anyone had experience running SQLite on low-power embedded
       | platforms? Is this expected performance?
        
         | fbdab103 wrote:
         | If you have the RAM to load up a toy dataset, what happens if
         | you utilize a :memory: database instead of disk? If the
         | performance is the same, you know the problem exists outside of
         | the storage.
        
         | bob1029 wrote:
         | Could you share some source code around your implementation?
         | Selecting from a non-existing table should be a very quick
         | operation. I suspect you might be doing something like creating
         | a new connection per command if you are seeing this behavior.
        
         | phonon wrote:
         | Have you benchmarked the storage? That might be the bottleneck.
        
       | andrewl wrote:
       | This is interesting. I wonder if he's actually working on it:
       | 
       | Q: If you magically had enough extra time to do one additional
       | thing at work that you're not doing now, what would it be?
       | 
       | A: Oh, I've got a long list. But my #1 thing right now I think
       | would be a new version control system which the working name is
       | Fit, it's a combination of Fossil with Git. Uses the Fossil user
       | interface but it uses the low-level file format of Git. So that
       | then you can work with Fossil's interface but push and pull to
       | legacy Git users. And I think that would be huge.
        
         | mdaniel wrote:
         | > Uses the Fossil user interface but it uses the low-level file
         | format of Git. So that then you can work with Fossil's
         | interface but push and pull to legacy Git users.
         | 
         | I'm surprised that's the #1 magic-wand project for anyone. I'm
         | not trying to yuck his yum, but am just surprised.
         | 
         | But the larger elephant in the room for any such effort is that
         | Fossil's mental model is, by choice, _way_ different from git.
         | If they just want a new ui that isn 't as "git sux," surely a
         | new cli to kid-gloves git would be less work than trying to
         | reinvent a whole new version control system, and that goes
         | 1000x for trying to maintain wire compat with _every_ git
         | server in the world
        
           | ilyt wrote:
           | I don't think Git wire format changes all that often and old
           | clients work with new servers just fine so I don't think that
           | would be a problem.
           | 
           | > But the larger elephant in the room for any such effort is
           | that Fossil's mental model is, by choice, way different from
           | git.
           | 
           | How? I've been glancing at docs but I don't see much
           | difference, still a DAG of commits that are named after its
           | hash like almost every other DVCS
           | 
           | From onlooker perspective the killer feature seems to be
           | integration with project management tools vs "just" being a
           | VCS
        
           | dahart wrote:
           | > I'm surprised that's the #1 magic-wand project for anyone.
           | 
           | It seems like Dr. Hipp is frustrated that Fossil hasn't had
           | mainstream adoption, and that git has, he's talked about it
           | quite a bit in Fossil docs and here on HN. Given that SQLite
           | is very stable and adoption is an absolutely runaway success,
           | I'm not too surprised his wish list now turns to Fossil.
           | 
           | > Fossil's mental model is, by choice, way different from
           | git.
           | 
           | Is that accurate? It does come with a ton of extra features,
           | but seems like the core version control model is quite
           | similar conceptually, and differs more on implementation
           | (SQLite backing instead of file system) and workflow dogma
           | (Fossil's moralizing of rebase and commit graph edits). The
           | Fossil docs even start with "The feature sets of Fossil and
           | Git overlap in many ways." Fossil was released after but
           | within a year of git being released, the timeline and docs
           | and comments from the authors generally suggest it's a
           | reaction to git, taking the good parts and trying to, in the
           | authors' eyes, improve and fix their perceived problems with
           | git.
        
             | mdaniel wrote:
             | I don't mean DAG versus "lolol," because I'm not saying
             | Fossil isn't an SCM, I'm pointing out the design choices
             | which presumably someone who wants to use Fossil buys into
             | and thus would be a culture clash with trying to
             | participate with the git upstream. I am cognizant this is
             | quoting a bunch from the same page but pull-quotes the
             | anti-git stance that makes me question whether this is a
             | _technical_ problem
             | 
             | We'll start with Fossil not tolerating `git rebase` or `git
             | commit --amend`: https://www.fossil-
             | scm.org/home/doc/trunk/www/fossil-v-git.w... and the number
             | of repos I've seen where PRs don't land without someone
             | chirping about "please rebase your branch"
             | 
             | "Fossil was designed for [...] just four programmers, and
             | 64% of it is from the lead developer alone. [They] know
             | each other well and interact daily." https://www.fossil-
             | scm.org/home/doc/trunk/www/fossil-v-git.w... makes one
             | wonder what kind of awesomeness would ensue if running `fit
             | clone https://github.com/chromium/chromium.git`
             | 
             | and its related topic: "Fossil is not designed for drive-by
             | contributions" and "Where Git encourages siloed
             | development, Fossil fights against it.":
             | https://www.fossil-scm.org/home/doc/trunk/www/fossil-v-
             | git.w... -- I would be really sad to have all my working
             | changes auto-pushed by the tool, although the
             | https://github.com/martinvonz/jj#readme is also in that
             | spirit, where almost every operation is a `git add . && git
             | commit -mwip`
             | 
             | Fossil is `git push --mirror` by default:
             | https://www.fossil-scm.org/home/doc/trunk/www/fossil-v-
             | git.w... versus `git push origin HEAD` which is what most
             | people think of with "git push"
             | 
             | Then, as one of the obvious actual technical issues: Fossil
             | is SHA-3: https://www.fossil-
             | scm.org/home/doc/trunk/www/fossil-v-git.w...
        
               | dahart wrote:
               | Yeah I agree, this isn't a technical problem. The stated
               | goal is to build the Fossil interface using the git
               | engine, so it's not Fossil, it's just an implementation
               | of git that is compatible with Fossil's workflow. It
               | seems like the assumption there is maybe people want
               | Fossil's workflow but are stuck having to use git because
               | it's entrenched.
               | 
               | BTW, Fossil's comparisons to git (especially rebase and
               | rewriting) have always been hyperbolic. It's improving
               | slowly over the years, however the fundamental problem is
               | still there: the Fossil team is presumptuously stating
               | git's intentions under Fossil's overtly moral framework.
               | Git devs have never stated any intention "to record what
               | the development of a project should have looked like had
               | there been no mistakes." That's the Fossil team framing
               | things to sell the idea behind Fossil. Ironically, the
               | Fossil team is attempting to rewrite the history of git
               | development by using such language. I think the reason
               | behind Fossil's lack of adoption isn't because git is
               | entrenched, I suspect it's because very few people care
               | about having the ability to record in stone every single
               | commit no matter how messy, most people _enjoy_ having
               | the ability to clean up after the fact. (Not to mention
               | that the idea of capturing and preserving an exact
               | "history" is misguided and fundamentally impossible; it's
               | already up to me what I put in a commit in the first
               | place, and Fossil is providing dis-incentives to commit
               | early and often, undermining the safety reasons to have
               | version control in the first place.)
        
               | robertlagrant wrote:
               | The counterpoint is that Git's enables multiple
               | workflows, especially branching and merging, rather than
               | just trunk-based development. Not to say you can't do the
               | latter in Git, but people might struggle to adapt.
               | 
               | I think trunk-based, warts and all, is probably the best
               | method for a team that isn't extremely async. Which, I
               | think, makes it useful for a large number of projects.
        
         | tiffanyh wrote:
         | Super interesting given the purposeful differences between
         | Fossil & Git.
         | 
         | https://www.fossil-scm.org/home/doc/trunk/www/fossil-v-git.w...
        
           | fbdab103 wrote:
           | I think it is just being practical. Much to my chagrin, git
           | has consumed the world. The Fossil tooling offers a
           | reasonably slick (well, not the CSS) out of the box
           | experience which would be nice to have elsewhere.
        
         | Cyberdog wrote:
         | Git's UI is difficult, yes, but I'm sure far more people are
         | familiar with it at this point than Fossil. It would be far
         | more inefficient for me to learn Fossil's commands for what I
         | need Git to do than just continuing to use Git, at least in the
         | short term (and with no guarantees it'll improve in the long
         | term). If anything, a tool which goes the other way around -
         | allows me to interact with Fossil using familiar Git commands -
         | seems more useful to me.
        
           | eptcyka wrote:
           | This is the case for a lot of tools. There was a time that
           | for a majority of people on the planet, handwriting a letter
           | would be faster than typing it up too.
        
         | _a_a_a_ wrote:
         | That would seem to be just a new porcelain for git.
        
           | eesmith wrote:
           | Fossil also supports bug tracking, wiki, forum, email alerts,
           | chat, and technotes.
           | 
           | I don't think it's right to call that "just a new porcelain".
           | 
           | I have no clue how Hipp thinks to implement it, much less in
           | a way that allows push and pull to legacy Git users.
        
             | ilyt wrote:
             | I'd imagine legacy users would just see a unconnected
             | branch with a bunch of textfiles. fit-tickets for tickets,
             | fit-wiki for wiki, fit-docs for docs etc.
        
           | marmetio wrote:
           | Isn't that the point of both projects?
           | 
           | Git is primarily a file format. There's also a canonical set
           | of low-level command-line utilities. But you can create
           | whatever interface you want. Most programmers and GUIs happen
           | to use the canonical command-line tools, but that's hardly
           | necessary. Fit would keep the necessary part of Git (the file
           | format), and provide a different human interface.
        
         | vouaobrasil wrote:
         | That would be really nice. I think there is definitely room for
         | version control for people who are less in the programming
         | realm or who work on personal projects that have a more
         | creative art flavour (writers, desingers, etc). The user
         | interface of Git is too frustrating for these types. Even as a
         | mathematician and somewhat-programmer I dislike Git a lot.
         | Rebase, blame, stash...ugghhh. Although Git is nice I liked
         | Subversion better.
        
           | eternityforest wrote:
           | Non-programmers aren't going to want _any_ CLI version
           | control, and git-cola plus meld is perfectly fine for simple
           | use cases as long as nobody force pushes or uses a submodule
           | or something like that.
           | 
           | Although usually what seems to happen is people only use one
           | linear history and never branch anything. I'm not sure if
           | that's because Git is hard, or just because nobody wants to
           | learn about branches and stuff in any system if they don't
           | have to.
           | 
           | In any case it works perfectly fine and is an amazing step up
           | compared to no VCS.
        
           | tokamak-teapot wrote:
           | Have you used Mercurial? I found it a lot more user friendly,
           | especially with TortoiseHg for Windows. Not sure if that's
           | still around as I don't use Windows any more but even though
           | there are many similarities, git always feels like it's
           | designed to solve problems I don't want to use source control
           | to solve.
        
             | muxator wrote:
             | TortoiseHg is still maintained and works both on windows
             | (no direct experience) and linux.
             | 
             | The development happens on its mailing list, but there is
             | also an Heptapod (a gitlab fork modified to also support
             | mercurial) instance here:
             | https://foss.heptapod.net/mercurial/tortoisehg
             | 
             | Interesting enough, almost all my work nowadays consists of
             | interacion with git remotes. But my local clone has always
             | been mercurial via hg-git.
        
         | leeoniya wrote:
         | the main reason i'm not all-in on Fossil is because you cannot
         | squash commits; my WIP branch history is very messy, e.g.
         | "looks to be working", "refactor", "typo", "optimize", "undo
         | checkpoint". i don't need any of that junk on the `main` branch
         | once the feature branch is merged.
         | 
         | it's really too bad, everything else in Fossil looks very
         | compelling.
        
           | zie wrote:
           | You can hide those commits, you just can't delete/squash
           | them. It's really not as big of a deal as everyone claims.
        
       | andrewl wrote:
       | In this conversation from July 2021 he said he's going to write
       | his own email server, which I would be very interested in:
       | 
       | https://corecursive.com/066-sqlite-with-richard-hipp/
       | 
       |  _I'm going to write my own mail server. I was making notes on
       | that even as we were setting up this call. That's a big problem,
       | and that's at least as difficult if not more difficult than
       | writing a database engine, but I don't want to be beholden to
       | Gmail. I don't want them controlling my destiny. I don't want
       | them controlling the record of all of my conversations. I want to
       | control that myself, and so I'm going to go through a lot of pain
       | and a lot of work and a lot of effort to come up with some
       | solution that I can control myself. I can go out and lease a
       | virtual machine out there in the cloud and run it myself and not
       | depend on a third party to control my email._
        
         | mdaniel wrote:
         | > I'm going to write my own mail server. I don't want to be
         | beholden to Gmail.
         | 
         | Wowzers, that's some RMS-"Web Over Email"-level "I have privacy
         | concerns so I'm going to reinvent $foo"
         | https://stallman.org/stallman-computing.html
        
           | eesmith wrote:
           | How do you go from "control" (used several times) to
           | "privacy"?
           | 
           | Hipp not only wrote SQLite, which uses his own parser
           | generator (Lemon) but he also wrote his own version control
           | system (Fossil), and his own editor.
           | 
           | Perhaps it's more likely that he wants to be in control of
           | the things which most closely affect him, rather than this
           | being a privacy issue?
        
       ___________________________________________________________________
       (page generated 2022-12-11 23:00 UTC)