[MonoDevelop] Feedback wanted: Settings and data storage locations

Michael Hutchinson m.j.hutchinson at gmail.com
Fri Jan 22 18:31:21 EST 2010

On Fri, Jan 22, 2010 at 1:36 PM, Vladimir Giszpenc <vgiszpenc at dsci.com> wrote:
> Hi Michael et al,
>> I'm seeking feedback on a proposal to change the locations in which
>> MonoDevelop stores data. This affects all users, so please have your
>> say!
> I had an application that I initially wrote for linux only and I had to
> make it support Windows (how backwards is that?!?)  Anyway, the first
> thing I figured out is that cross platform applications should not use
> GConf.  You are already there so no problem there.  I would suggest
> Elektra http://elektra.g4ii.com/Main_Page  instead of sqllite if you are
> looking for alternatives.
> My real point though, is that this problem should be solved for more
> applications than just MonoDevelop.  Obviously, some things are out of
> scope, but I believe that MonoDevelop is helping application developers
> write cross platform applications and whatever solution we come up with
> should make sense for all the cross platform apps that have config data.
> Your decision will most likely impact other projects so if we can have a
> mono.AppConfig (or whatever) that all applications can reuse that would
> be helpful.

In general, if you use
Path.Combine (Environment.GetFolderPath
(Environment.SpecialFolder.ApplicationData), yourappname);
Path.Combine (Environment.GetFolderPath
(Environment.SpecialFolder.LocalApplicationData), yourappname);
those paths are portable.

This discussion is really about how to structure the specific data
that MD has in subdirectories of these locations.

There is also the "Mac problem", which is that Mac data should be
stored in ~/Library, which Environment.GetFolderPath does not use, but
that's technically a Mono bug. The Mac also complicates things in that
it has 4 or so different locations for different data types, so
perhaps that could be handled by some kind of shared platform
abstraction code like you describe, but that's not such a big deal

> Ideally other things that you guys have done to port MonoDevelop to
> Windows and Mac get pushed either into Gtk# or some other place that we
> can all reuse.  Sorry to sound like such a moocher.

Designing good APIs for re-usable libraries and splitting our code out
would take a lot of work, and the MD team is already very
resource-constrained. Where possible I've been trying design platform
wrappers so that they're re-usable, but it would really help if people
actually started using some of this code for their own apps and giving
feedback on how to improve it. Not all of the platform code we write
is easily re-usable by other apps, so it would be good to know which
pieces are useful.

Michael Hutchinson

More information about the Monodevelop-list mailing list