From Offray:
as I understand Sqlite storate will be used only for settings
and from Terry:
I don't think we've considered the impact of switching to a binary format
*That's an important point that was not so clear until now! *At least not for me considering that Vitalije said the following at the very first post of this thread:

>> /If we use sqlite as file format for outline data it is trivial to keep the collected settings in the same file.

/And added this later:/
>> /Yes, we are discussing dropping Leo's XML format.

From Offray:
2) import/export from/to .leo XML files, which solves the DVCS integration issue,

Well, that's another important point that *was not so clear ***as it is now *in previous posts. *So there is there a wide field to explore...

Sqlite over XML have proved better response time in loading and querying when two representation of the same data are available
That's sure true for querying, but I'm not so sure for loading.

early optimization is the root of evil, as Knuth said and this is more like a lot of bump that a big hole ;-).
I agree in that early optimization is bad, but here *I'm not talking about optimization at all* so I don't understand the quote. I'm talking about proper *design *that takes into account the future evolution of the product.
The idea is to pass from native Objects representation to files and then use Git to represent changes in the system. The machinery behind this could be used with other DVCS, but the focus is now on Git: https://github.com/pharo-vcs/iceberg/
Thanks. Quite interesting, i'll take a look. I've already found interesting what the project states at its intro (emphasis mine):

>> Right now we support only git, but Iceberg *is designed* to allow other code versioning systems in the future.

That is: it was *designed *from the begining with that multi-VCS support in mind. That's what I was trying to transmit when I was talking about the abstraction layers: one can make a proper design from advance to account for the future expansion of the system to support any VCS. Design is not "early optimization", is it?

STON is the storage format you use to "export" notebooks from the image (a snapshot of all objects in your Pharo system) to the file disk, so they can be shared and versioned as usual files
Thanks, I got it.

The diff is provided by fossil over any text file, as usual with other DVCS, so is the combination of STON + Fossil that gives you such pretty and readable output.
From vitalije:
There is no need to add db file to git. External files are kept in git. If you want any part of Leo outline to be kept in git, you can make it external file and add to git.
Aha, I see. So now I realise that *I was wrong in one assumption I was making about Fossil*: that Fossil could handle _naturally_ the Sqlite file versioning just because it is Sqlite-based! That's why I told that "/using Sqlite as the next Leo file format //*is forcing us to take those files out of git, or to use Fossil*//as VCS./" Oh my God, I don't know how could I make such a wrong over-simplification of the problem! Now I see: Fossil is not going to solve the versioning of Sqlite files more or less than any other VCS does.

*I'm REALLY sorry for the confusion that such statement may have caused!*

From vitalije:
It is not the case that using sqlite as file format or even using fossil for keeping history of every node in outline is forcing any change in VCS used for project as whole.
Now I see. Thanks. Then that reinforces my idea that we should make Leo's capable of integrating with any VCS.

Thanks for the warning.
Je, je, you are welcome! Let me be clear about this point also: my warning *is not* that we must end the journey just because there is a hole in the road! It's just that we all have to be aware of the hole and decide the best way to circumvent it. It seems that you already know how to do it, but I'm just not sure yet.

To state it clearly again: the hole is that no VCS is capable of efficiently handling (storing) a database "as is".

Let's see the options we have.

From Terry:
Sqlite is certainly an option - if you're just using it for settings, it may 
not be necessary to include those files in VCS.
That's an option. The other option, suggested by Offray and Vitalije is to just always export the Sqlite info to a textual format (which may be XML or another more-diff friendly format al suggested by them) and have that included in your VCS. I have yet to think in how would that workflow be for the settings in Leo because you still want to store the (equivalent to the now) *leoSettings.leo* file in GitHub... it's an advanced topic for me at this moment.

To create more room for confusion :-} there's also now discussion of more 
dynamic *code* reloading.  I'm unclear as to whether this is for Leo only, in 
which case it seems primarily a benefit to Leo developers, or if it would cover 
other code being developed in Leo.  Without any standard way of doing the 
latter, I'm not sure how that would work.

Cheers -Terry
and Offray:
For me there is a deeper question in Vitalije's search and is "How can improve Leo 
liveness and responsiveness".
That's *a bigger and really **exciting endeavour *that I like alot!! To be clear on that point from my part: I'm *all about liveness* when programming! That's why I gave Light Table <http://lighttable.com/> a try in the past, before coming to Leo. It has *liveness of your Python code* (the one that you are developing) included in its design!... or it may have, because I could never make it work for me. :-( So I switched to Leo... with the eye put in a wider interactive programming experience! And I do still have this purpose in mind for Leo.

Light Table design was profoundly inspired by Bret Victor ideas which resonate alot with my own vision of programming.

There's a lot of work to be done in that direction, but I think /*It's worth any amount of effort*/, as Edward likes to say!

From Edward:
I prefer exploration ​ ​to "requirements", but discussions alternatives ​forms an important background to exploration.
I really think we should try to make kind of a roadmap for our explorations. When you know where you are and you know where you wanna go, you sketch a roadmap. But that *does not mean that later on, when you are on the road, you must stick to it at any cost*.*Of course not!***We will have to adapt to the problems and surprises we'll find along the road and change the roadmap accordingly at every stage. At least, that's my vision of software development. Roadmaps are just a tool. They must not get you out of your Goals. Some prefer to call this difference *Tacticts vs Strategy*, but I've found that those concepts are quite confusing for many people, so I choose not to use them.

Thanks to all for you refreshing ideas! This journey with you all is being a pleasure... and this is just the beginning! ;-)
Yours, Xavier

--
You received this message because you are subscribed to the Google Groups 
"leo-editor" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/leo-editor.
For more options, visit https://groups.google.com/d/optout.

Reply via email to