On Nov 21, 2017, at 3:55 PM, [email protected] wrote:
>
> On Mon, 20 Nov 2017 17:44:49 -0700
> Warren Young <[email protected]> wrote:
>>
>> …muscle memory for both Fossil partisans and for partisans of other
>> VCSes.
>
> This seems more like a complaint about the user interface.
How does that observation get us to a different solution?
If someone has been using Git for years and I point them at my fine Fossil
repository, they’re not going to be happy switching, even if they do eventually
agree that Fossil is better. That transition cost must still be paid.
What many of my public repos’ users want is Git, and I’m refusing (today) to
give it to them.
This proposed feature set might well fix that problem, with zero effort on my
part.
What is your alternative? Force the world to switch to Fossil? Tell the Git
fans to pound sand?
This proposal seems like a good way to enlarge the Fossil user base by
leveraging the same network effects that today work against Fossil.
> Subversion should implement native Git support,
> and Mercurial should implement native CVS support.
The other VCSes will have to come to whatever accommodation with the realities
of the Git network effects their developer communities are willing to strive
for.
> The idea being proposed appears to be that Fossil repositories should
> be able to store artifacts in multiple different formats, which will
> only be a disaster since the "legacy" Git/SVN/CVS clients cannot read
> that kind of repository anyway.
I’m not enough of an expert on any of these file formats to know if the
conclusion follows from the premise. I assume drh is, who proposed it, and
will likely be doing the bulk of the work.
So, let’s just wait and see.
Someone probably once told him it’s too difficult to implement a SQL92
compatible RDBMS, too.
>>> svn > cvs > fossil, often stopping at git or hg. If Fossil could
>>> offer a Git or Hg view of the same data and take pushes losslessly
>>> via that same format, we wouldn’t have to keep blindly hoping that
>>> tool developers would add Fossil support.
>
> You will also find that tool developers may just get rid of existing
> Fossil support (if it ever existed) because oh well, Fossil can support
> Git so no problem.
I’d bet there are many more tools that support Git but not Fossil today than
those that support Fossil, irrespective of whether they also support Git.
If so, it’s a net win, even if it shakes out exactly like you suppose, which it
won’t.
> Let's face it, the SQLite single-file storage mechanism has a
> number of other advantages over the pile-of-files methods, even if
> performance isn't one of them.
I didn’t mean to imply that I thought that was the case, only that we can’t
know until it’s tested, because science.
We have some science that shows it’s the other way around:
https://www.sqlite.org/fasterthanfs.html
The thing is, we don’t yet know how well that test corresponds to the way Git
uses the filesystem. All we know today is that Git tends to be faster than
Fossil for equal workloads, even when things like repo-cksum are accounted for.
Also, realize that you’re talking to a raging Fossil partisan here. You don’t
need to sell me on its virtues.
> Profiling and optimising the most frequently called routines will help.
Do you believe that is not already being done?
How else do you suppose new versions of SQLite regularly come out showing
faster performance for some use case?
If that seems like a non sequitur with respect to Fossil, I’d be interested to
see benchmark results that show any common use case where Fossil’s performance
is dominated by time spent *outside* SQLite code. Lacking such data, I’ll
continue to assume that there’s little point optimizing Fossil proper. The
same effort spent optimizing SQLite and the SQL that Fossil gives to SQLite is
time better spent.
If you do come up with such a benchmark, and it involves the network, then be
sure to account for the time spent waiting for network I/O separately, unless
reworking Fossil somehow reduces time spent waiting on the network. A 10 ms
HTTP transaction where 999 µs of that is spent in Fossil and 1 µs is spent in
SQLite doesn’t count as “dominated by Fossil code.” Until you get the network
time down from the 9 ms in this made-up example to more like 3 ms, there’s
little point worrying about the Fossil contribution to the transaction time.
> Not coding like it's 1989 and use modern C99/C11 (eg. postpone variable
> declarations, declaring variables in a for(...) loop, uint_XX_t,
> inline, etc) will also help.
Infrastructure software like Fossil generally needs to be able to compile on
~10 year old systems. That means someone is probably still building Fossil
today using Visual C++ 2005, which had terrible C99 support and likely
supported little that eventually appeared in C11 aside from features that C
borrowed from C++.
SQLite made up roughly half the Fossil C code base the last time I checked, and
it not only needs to build 10 year old systems, but many of those are
*embedded* and not served by any of the Big Four C compilers. (GCC, VC++,
Clang, and Intel.)
There are some truly bletcherous C compilers in the embedded space.
I was trying to use one the other day that runs in 4 kwords of space. Among
its long list of misfeatures is that it will recognize a do/while loop, and it
will produce assembly output for it, but the result either will not assemble or
it won’t run correctly if you do manage to get it to assemble! This particular
C compiler only compiles while/do correctly, and then only on alternate Monday
mornings when the mad god Murphy is too drunk to get out of bed and meddle.
_______________________________________________
fossil-users mailing list
[email protected]
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users