Stories
Slash Boxes
Comments
NOTE: use Perl; is on undef hiatus. You can read content, but you can't post it. More info will be forthcoming forthcomingly.

All the Perl that's Practical to Extract and Report

use Perl Log In

Log In

[ Create a new account ]

Alias (5735)

Alias
  (email not shown publicly)
http://ali.as/

Journal of Alias (5735)

Wednesday September 24, 2008
08:45 PM

Padre to support "cloudfiguration"

[ #37534 ]

One of Ultraedit's biggest strengths is the length to which you can configure it to act in the way you want.

But after 5-10 years of upgrades, I've found that it has become one of my biggest annoyances.

The problem is that if you use multiple computers, there's no way that you can use the same highly-personalised configuration across multiple systems (let alone multiple operating systems).

Since I've been gifted with the opportunity of getting in at the ground floor on Padre, this is something I plan to have a serious shot at fixing.

With a few more tweaks to ORLite to support working with SQLite pragmas properly and to allow for automated schema migration, SVN Padre will now store a whole range of configuration and state information inside an internal SQLite database.

The key point here is that the configuration will be split in half, so that there is an intrinsic understanding of what is user-specific configuration, and what is host-specific configuration.

The user-specific parts go into your config file, the host-specific parts go into the SQLite data store.

The goal is to allow the issues related to the host to stay with the host, and for the user-specific parts to sync with the interweb.

It's configuration for the cloud, or "Cloudfiguration" if you will (Trademarked!)

So now whether you are on a Windows machine at work, or a Linux machine at home, or a Mac laptop on the road, the same user preferences will follow you around from install to install. Changes made on one Padre install (for example, if you want your comments pink instead of grey) appear auto-magically in the other Padre installs next time you start them.

I'm about half way towards the full separation needed to make this work. The only host-specific stuff left in the configuration file at the moment are the list of bookmarks and projects and a couple of "last blah you had open" values.

The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
 Full
 Abbreviated
 Hidden
More | Login | Reply
Loading... please wait.
  • … that this was called “putting your home directory in version control.”

    But hey, reinventing version control in every app that needs to be configurable is a fine solution too. Don’t mind me, I’m just a cranky oldster, and now I have to go back to shooing kids off my lawn. :-)

    • Have you ever tried doing that across multiple different operating systems?

      • I have in fact carried my Vim configuration back and forth to Windows and MacOS X machines (whereas my native environment is Linux). I didn’t use version control at the time, but that wouldn’t make a fundamental difference in feasibility.

        • You didn't do it with version control... which was my entire point.

          Of course you can move one file here and there.

  • Changes made on one Padre install (for example, if you want your comments pink instead of grey) appear auto-magically in the other Padre installs next time you start them.

    So, what happens if you change the color of your comments in one instance, while running another instance on another computer... Will the latter overwrite the new cloud preferences when you turn it off, while saving its own preferences? What if you changed a (different) preference there, too?

    • In the initial implementation, I would expect that it will be a simple naive "last to save wins". I don't want to do too many tricks.

      So it will only fetch the config at startup time.

      A second generation implementation will likely be needed to move that from that simplest possible version to something that uses real sync/merge logic.