<div dir="ltr"><div dir="ltr">On Thu, Aug 29, 2019 at 5:41 PM David T. Lewis via Cuis-dev <<a href="mailto:cuis-dev@lists.cuis.st">cuis-dev@lists.cuis.st</a>> wrote:<br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Thierry,<br>
<br>
I am a casual user of various git tools in Cuis, Squeak and Pharo,<br>
and your explanation is very helpful for me to understand some of<br>
the tradeoffs.<br></blockquote><div><br></div><div>+1 me too.    :)<br></div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
Thanks,<br>
Dave<br>
<br>
<br>
On Thu, Aug 29, 2019 at 12:52:56PM +0200, Thierry Goubier via Cuis-dev wrote:<br>
> Hi Philip,<br>
> <br>
> as someone who has worked a bit on filetree, I'd say there are no<br>
> philosophical differences. Just implementation compromises with the way<br>
> Smalltalk has to deal with the world outside of the image for storing code.<br>
> <br>
> For example, Tonel has been introduced to solve issues with filetree: the<br>
> fact filetree generates too many files creating performance issues with the<br>
> host filesystem implementation (and issues with the poor support of Windows<br>
> long paths in the virtual machines), and losing space because the files are<br>
> small (and that current storage tech has solved its performance issues with<br>
> large files by forcing a large minimum allocation size). Filetree is itself<br>
> a compromise to have a different fit with current version management<br>
> systems (git, for example). As I said, just implementation compromises(*),<br>
> no philosophy behind that.<br>
> <br>
> If there is a philosophical difference, I would say that there is only one:<br>
> declarative or imperative storage format. Traditiional Smalltalk is<br>
> imperative... you don't load code, you execute a program. Newer formats<br>
> like filetree or tonel, or probably the database-oriented ones (VW, Magma)<br>
> are more declarative in nature (but have still imperative parts).<br>
> <br>
> The picture grows more complex if you consider what are version control<br>
> systems. They are in fact databases (even git), so a more natural fit for<br>
> Smalltalk would be an object persistency layer used with code objects (VW,<br>
> again. Gemstone?).<br>
> <br>
> To give you an idea of how that looks, for all formats:<br>
> <br>
> In Smalltalk, you have code as an object graph (class, CompiledMethod<br>
> instances, etc...) with an optimisation to store the text (the sources and<br>
> changes files). When you save, you iterate over that object graph and<br>
> convert it to a file / multiple files. Then you interact with your version<br>
> control system to record the files (either automatically or manually). Then<br>
> your version control system store your changes into a database, as a set of<br>
> objects...<br>
> <br>
> This also explains why you have those Smalltalk to database for storing<br>
> code implementations: avoid that file layer that is extremely annoying.<br>
> <br>
> Thierry<br>
> <br>
> (*) For example, the last version of GitFileTree, a git-enabled filetree,<br>
> never manipulates any files in Smalltalk. Git does file operations but only<br>
> as a kind of user interface layer, to allow users to solve conflicts.<br>
> <br>
> Le jeu. 29 ao??t 2019 ?? 10:26, Philip Bernhart via Cuis-dev <<br>
> <a href="mailto:cuis-dev@lists.cuis.st" target="_blank">cuis-dev@lists.cuis.st</a>> a ??crit :<br>
> <br>
> > Hi Hernan,<br>
> ><br>
> > could you find out the philosophical differences regarding<br>
> > the "new" package formats like filetree or tonel?<br>
> ><br>
> > If yes, what are they? I'm curious why thinks are supposed to<br>
> > be better the way pharo and visual works (?) went.<br>
> ><br>
> ><br>
> > Thanks for your time,<br>
> > Philip<br>
> ><br>
> > Hernan Wilkinson via Cuis-dev <<a href="mailto:cuis-dev@lists.cuis.st" target="_blank">cuis-dev@lists.cuis.st</a>> writes:<br>
> ><br>
> > > well well well, even I do admire you and so on, I would not call it a<br>
> > > date ????????<br>
> > > (we are starting to have fun!!)<br>
> > ><br>
> > > On Wed, Jul 31, 2019 at 4:44 PM Dale Henrichs via Cuis-dev <<br>
> > > <a href="mailto:cuis-dev@lists.cuis.st" target="_blank">cuis-dev@lists.cuis.st</a>> wrote:<br>
> > ><br>
> > >> Hernan,<br>
> > >><br>
> > >> Excellent! It's a date then:)<br>
> > >><br>
> > >> Dale<br>
> > >> On 7/31/19 12:32 PM, Hernan Wilkinson via Cuis-dev wrote:<br>
> > --<br>
> > Cuis-dev mailing list<br>
> > <a href="mailto:Cuis-dev@lists.cuis.st" target="_blank">Cuis-dev@lists.cuis.st</a><br>
> > <a href="https://lists.cuis.st/mailman/listinfo/cuis-dev" rel="noreferrer" target="_blank">https://lists.cuis.st/mailman/listinfo/cuis-dev</a><br>
> ><br>
<br>
> -- <br>
> Cuis-dev mailing list<br>
> <a href="mailto:Cuis-dev@lists.cuis.st" target="_blank">Cuis-dev@lists.cuis.st</a><br>
> <a href="https://lists.cuis.st/mailman/listinfo/cuis-dev" rel="noreferrer" target="_blank">https://lists.cuis.st/mailman/listinfo/cuis-dev</a><br>
<br>
-- <br>
Cuis-dev mailing list<br>
<a href="mailto:Cuis-dev@lists.cuis.st" target="_blank">Cuis-dev@lists.cuis.st</a><br>
<a href="https://lists.cuis.st/mailman/listinfo/cuis-dev" rel="noreferrer" target="_blank">https://lists.cuis.st/mailman/listinfo/cuis-dev</a><br>
</blockquote></div></div>