Wouldn't it be better to release the code before you ship Leap, in
case we find bugs or have issues with something about the
implementation?
- Jon
--
________________________________________________________________________
Jon Gotow go...@stclairsoft.com
St. Clair Software http://www.stclairsoft.com/
Fax (540)552-5898 ftp://ftp.stclairsoft.com/
If you will not implement the tag mirroring, how do you feel about a
branch or fork where I add that functionality? If I do this, can I
still be deemed OpenMeta compliant/compatible?
Also, what is the status of any domains that can be used for this
purpose? I see that OM currently uses openmeta.com for preferences but
the whois record for that domain indicates someone in South Korea owns
it. I don't know if this is someone affiliated with you so any
clarification on this would be appreciated.
It would be very easy for me to drop all this now as it seems like you
are doing everything possible to make sure I quit in frustration. If
you want OM to be seriously considered, I ask that please you stop
evading the questions.
paul
> In other words - since I know I need backup for Adobe applications,
> and other eventualities, - lets make sure the backup system works.
> Simplicity is everything in code and data.
What do you plan to do to make sure it works? The current backup
system does not seem to be simple (especially with the aggressive new
directory caching) and has many shortcomings (previously discussed).
It's also no more accurate in the face of non-conformant applications
than the mirrored xattrs--less so, really, because it would be much
easier for a second codebase to look in the xattrs than to re-
implement your backup system.
I can see different apps possibly rolling their own backup systems,
e.g. to handle security differently. Simplicity is exactly the reason
to define xattrs as the official storage: they're simple to access and
stuck to the file so that there's no "domain mismatch." And, unlike
with a backup system, the data itself will be so simple as to not
change between versions.
> Also to say it again: how would we tell when to use the mirrored tags?
> I don't see a way.
I thought we already discussed this and determined that it was
possible by looking at the tag time--which Gravity's Tags does set.
> So I'm not putting it in.
This is disappointing. First, you agreed to put it in. Paul offered to
write the code, but you said you were going to do it. He delayed his
beta waiting for you. Then you said you were working on it, but that
you wouldn't let us see it until after Leap shipped. Now, Leap has
shipped, the code is not written (what you wrote and commented out is
not what we discussed), and you apparently won't accept a patch, either.
--Michael
First off, as usual, not all my questions have been answered. Maybe
they are moot at this point but it is just confirming a pattern of
evading straightforward questions. It doesn't help build confidence
when you gloss over the weak spots.
Secondly, I have a hard time believing you just came up with this
decision on the day you released the code. If you had changed your
mind (or had no intention of really doing it), it would have saved me
a lot of time if you had told me then. The lack of communication on
this front is pretty appalling.
I don't understand your bending over backward for an app whose
developers, last I heard, have no interest in support OpenMeta. A
standard is something for people to adhere to, not a formalization of
someone else's bad practices.
As for not doing mirroring, you should look at it the other way. To
solve the Adobe problem, you have cooked up a pretty complicated
backup system, one that, by your comments in the code itself, you
aren't even sure works properly. Most of your arguments you levy
against mirroring can apply to your backup system. You talk about
simplicity but looking at the code for your backup system, I do not
see it. In the very least, I do not consider the current
implementation ready for prime time. But no one is going to convince
you on this point. I don't get the sense you are actually open to any
feedback that may differ at all from what you already had in mind.
Also, to quote:
> The obvious way to do it would be to also set the tags with out
the "com.apple.metadata:" prefix.
I can't believe you just said this, and your commented out code also
follows this. After all the debate over domains, you suggest we (the
proponents of observing proper ownership rules with regards to xattr
namespaces) use an unprefixed xattr. If you disagree with us, that's
one thing, but things like this seem to indicate a real
misunderstanding over what was being discussed.
In the end, I can't officially support OpenMeta based on flaws in both
the design and implementation as well a strong resistance towards
addressing them (or even giving straight answers). Right now, I am
considering a hidden default that certain users can set that will
point to an already installed 'omtool' binary. This would be
unsupported and, this way, I won't have to link against this code.
Also, users would have to read up on the risks involved before being
able to learn about this default. Note that this support would be
unofficial and unsupported so do not use my company or product in
conjunction with OpenMeta for any promotional purposes.
Good luck.
> One thing that is bothering
> me, though: would the mirrored xattr tags survive the Adobe apps?
No. Basically, there is a tension between designing a backup system to
handle the situation with the Adobe apps, and designing a simple,
reliable, and future-proof system for storing tags under our own
namespace. Neither design solves both problems well. Mirrored xattrs
do not address the former at all, but they are great for the latter.
Tom's plist backup partially solves the Adobe problem, but it is poor
at the latter.
I think the mirroring is easy to do now and clearly the right choice
for the future. It can be supplemented with another system to work
around the Adobe problem, until those applications are updated to work
with xattrs.
> As a developer of Punakea, where we have recently switched to using
> OpenMeta, I was very glad of a good solution finally available for
> tagging, but, as others here, I'm concerned with the tag safety and
> future-proofness of the whole system. If Tags has a good solution, why
> doesn't OpenMeta go the same way?
As far as I know, Tags does not currently have *any* solution.
--Michael
> I think the mirroring is easy to do now and clearly the right choice
> for the future. It can be supplemented with another system to work
> around the Adobe problem, until those applications are updated to work
> with xattrs.
I agree with you there.
> As far as I know, Tags does not currently have *any* solution.
I was referring to this part of your last mail:
"I thought we already discussed this and determined that it was
possible by looking at the tag time--which Gravity's Tags does set."
Which would make the mirroring between to xattrs feasible, as far as I
understand. It would be a solution to keeping the xattr tags in sync
properly, right?
I have followed the discussion over the last few weeks, about using the
apple.com namespace, and I haven't been commenting on it. It is also my
opinion, especially for an "open standard", which OpenMeta should be,
and also tries to be if I understand the whitepaper correctly, a
namespace that isn't owned by the standard creators is not a solution in
my eyes. I know this has all been said before, but the more, the
merrier, right? ;)
Regards,
Johannes Hoffart
>> As far as I know, Tags does not currently have *any* solution.
>
> I was referring to this part of your last mail:
>
> "I thought we already discussed this and determined that it was
> possible by looking at the tag time--which Gravity's Tags does set."
>
> Which would make the mirroring between to xattrs feasible, as far as I
> understand. It would be a solution to keeping the xattr tags in sync
> properly, right?
What I meant was that Tags does not currently do xattr mirroring or
any other sort of backup. However, because it does set the tag time
(as does OpenMeta), we can use that to make sure the xattrs are in sync.
--Michael
The problem with Adobe apps will continue for quite a while - Adobe's
apps use a method of saving files that destroys xattrs - we have to
deal with that out of practical necessity. Even if they've fixed it
in CS4 (have they?) there are still piles of CS3 users that will
continue using that for the foreseeable future. I'm one of those,
because I've yet to see a compelling reason to shell out for CS4.
>Even if this is not the case, though, I would still propose to go
>forward with the mirrored tags as a primary store (mirrored in the
>public namespace that is, not in Apple's).
The mirrored tags were agreed upon in the last flurry of activity on
OpenMeta, and I was under the impression that everyone, including
Tom, saw them as a reasonable solution to future-proofing us against
any changes that impact the use of the com.apple.metadata naming
convention. Even without a built-in recovery mechanism, just
mirroring the data to org.openmeta (or whatever) xattrs will
safeguard the user's data.
I think several developers made it clear that this was crucial for
their buy-in. Tom, I'm not understanding your approach - if we want
this effort to succeed, we have to come to some consensus with other
developers and put code in place that makes the community happy, not
just you. And communication is necessary too. I understand being
busy - I've been off coding and running my business too - but if you
spearhead a project like this, it's imperative that you at least
answer other developers' questions.
I'm feeling pretty stupid for adopting OpenMeta in Default Folder X
if it's going to fall flat now - pulling OpenMeta out of DFX would be
messy now, and there will be unhappy users. I'd certainly rather see
the mirroring added to the code so everyone can move forward. It's a
good idea and generally works well - why is it so hard to be
pragmatic and get everything working?
The backup solution is practical for dealing with apps that strip
xattrs, but it's not a substitute for mirroring at-risk data in
another store.
>So, while we will not hold back on the Punakea release waiting for the
>final decision (we have migrated our tags once alreay ;)), I still
>encourage the OpenMeta developers to address this issue quickly, if you
>truly want to create an open standard.
That means you, Tom. You have control over the code, so we
ultimately need your input. Please respond.
> What we have agreed on: (at least from my viewpoint)
> [...]
> Apple should endorse and recognize OpenMeta as an example of how to
> properly interact with the metadata store for applications writing
> metadata to any file type.
What I'd like is for Apple to provide a documented and supported means
for third-party developers to attach Spotlight-indexable metadata to
files. I don't think relying on a a "com.apple.metadata" prefix is
necessarily the best design, because it's not very flexible and
imposes an unnecessary constraint on the data. Stuffing two kinds of
information (indexability and ownership/name) into one field is a hack.
It might be better for applications to declare (via an API or
Info.plist key) which xattrs should be indexed, or to extend the
Spotlight importer system to allow multiple plug-ins to operate on the
same file, or to use some other design entirely. So I hope that Apple
will add official support for this type of functionality, but I also
hope they will come up with something better than using a prefix.
> What we disagree on: the mirror
> [...]
> In my view the need to mirror is based on fear uncertainty and doubt
> (FUD).
In my view, it's good engineering to rely on the specifications of the
parts you are building with. If you have a part that's rated for
between 50-80 degrees and you try use it at 20 degrees, it might not
work as intended. You want to use it anyway, on the grounds that you
don't foresee any problems. Maybe it really did pass the tests at 20
degrees. Just to be sure, we ask the vendor whether they support the
use of the part at 20. They say no. At this point, you still decide to
use the part.
I don't want to ride in a vehicle that was built this way. I certainly
don't want to sell one and be responsible for all the passengers. I
don't think this is FUD. FUD would be if the part actually *was* rated
for 20 degrees, but I told people that you were using shoddy parts
that weren't up to spec.
> A) There has to be a prefix of some sort as a hint to apple to index
> the metadata:
Prefixing is simply the technique that Apple is currently using within
the OS and built-in apps. There's no reason it has to remain that way.
It is also ambiguous what "com.apple.metadata" *means*. Is it metadata
assigned by Apple? Or is it metadata that's indexed by Spotlight?
Since it is an undocumented prefix, we only know how it *currently
behaves*. I think it's unwise to infer meaning and a contract from
what may be a temporary implementation detail.
> com.apple.metadata makes sense - it does not mean that apple owns
> the data
Yes, this is as clear as can be. I think it's obvious that "com.apple"
means Apple ownership; you don't.
> B) What's the problem?
> Apple also owns the "com.apple.iwork.pages.pages" but are they going
> to start erasing peoples pages documents?
I don't think this is a good analogy because
"com.apple.iwork.pages.pages" is a UTI (an abstract property that a
file may or may not conform to) whereas the xattr is a concrete
storage location. Another concrete storage location is the /System/
Library/CoreServices/ folder. If you store Pages documents there, I
would not expect the OS to preserve them.
> Similarly, if you make an
> application that writes rtfd files (com.apple.rtfd) will apple then
> remove them from the computer ever? Or change the format without
> notice?
Well, they actually did change the Pages format without notice. It
used to be a package, and now it's a Zip file.
RTFD is different because Apple provides an API for accessing it.
Apple would be free to make changes to RTFD that do not violate those
contracts.
Note that if you use the QuickLook API to view a Pages document, the
change is invisible to your application.
> So is the key name of an attribute like the extension on a
> file?
No.
> C) Where is the complaint from Apple?
First, the prefix is not documented as a supported technique. So
assuming that it does what you want and will continue to do so is
guess-work. Second, as previously discussed, I filed a DTS incident
asking Apple whether developers could rely on "com.apple.metadata",
and they said no. In other words, the lack of documentation is not an
accidental omission; they do not support this.
> Assume for a moment all the mirrored data is written. Under what
> circumstance do you use it?
You would use the data with the most recent tag time. Eventually,
perhaps, the transition is over and you simply define org.openmeta to
be the one official location.
> Simple precedence won't work, as
> attributes can be erased easily by anyone, on purpose. It would be
> really frustrating to erase tags in one app only to have them reappear
> again. So if there are no com.apple.metadata kOMUserTags but there are
> some openmeta.org ones - do we use those? Likely not - it is far more
> likely that the com.apple.metadata ones are correct.
I don't think it makes sense to take the absence of com.apple.metadata
to mean that the *user* deleted the tags. To indicate deleted tags, I
would expect to see an empty array and a recent tag time. As with
anything, a user who runs a script that modifies the data in a non-
conforming way may see unexpected results. By defining a standard and
a providing an open-source reference implementation, we make it easy
for people to access the data in a reliable way.
> So I think that the only reason to ever use the mirror would be if
> Apple were to start erasing user data from the xattrs, based on
> partial key names only (say for 10.7) and we would have plenty of
> time.
I just don't think it makes sense to store data in an unsure location,
with promises to migrate later if necessary. It's easy to get it right
now, so why not do it? Any sort of transition would only be more
difficult later, when there's more user data, more applications and
versions of them, and more versions of the OS to contend with.
> Can you write some code that would automatically switch to using
> org.openmeta* tags?
Yes: you use the most recent non-absent value.
--Michael
>>> So is the key name of an attribute like the extension on a
>>> file?
>>
>> No.
> The xattr is the name of a storage location in the same way that .rtfd
> is the name of a storage location.
Prefixes and suffixes have (by convention) different meanings. Google
owns all the URLs beginning with google.com, but no one owns all the
URLs ending with .html.
>> You would use the data with the most recent tag time. Eventually,
>> perhaps, the transition is over and you simply define org.openmeta to
>> be the one official location.
>
> That will not work, as removing tags with any shipping application
> will simply not work, once a new mirror capable application ships and
> has mirrored all the tags.
Please give a specific example, because I have no idea what you're
referring to.
> There will be applications that directly
> set only what they need to - user scripts, etc.
Really? How do you even construct a binary plist from AppleScript or sh?
> Then, if you define org.openmeta as the 'real' location - using any
> old application will change the spotlight DB so searches will see one
> thing, while the tag editor will see another.
That's why I said "eventually, perhaps." At some point, people won't
even be able to run the old applications, just like I can't run
FrameMaker in Classic on my MacBook Pro.
>> I don't think it makes sense to take the absence of
>> com.apple.metadata
>> to mean that the *user* deleted the tags. To indicate deleted tags, I
>> would expect to see an empty array and a recent tag time. As with
>> anything, a user who runs a script that modifies the data in a non-
>> conforming way may see unexpected results. By defining a standard and
>> a providing an open-source reference implementation, we make it easy
>> for people to access the data in a reliable way.
> It would be great if all software was written by and conformed to
> everything with no bugs but that is not the case.
Do you have an example of an application that doesn't conform? Or is
this just a hypothetical that someone might write code that actively
ignores the standard? I just tested this with Leap 2 and with Tags,
and both remove the tags by setting an empty array.
Also, if there were an application that deleted the xattr instead of
setting an empty array, this would create equal problems for the xattr
mirroring and for your existing plist backup system.
--Michael
Just think of the way Spotlight works at the moment. Spotlight importers
overwrite any changes made to the Spotlight DB directly, effectively
only caching the documents for efficient search. What if Apple would, in
the future, adopt a system that handles metadata the same way? They
might give developers an API to write their metadata, and then, upon
_really_ writing the metadata to the file, flush the com.apple.metadata
stuff, rebuilding it from the original sources, just to avoid
synchronization issues with apps that do not use the Apple API?
Even if this is a remote possibility , it highlights the basic sense of
a namespace, and I think that there should be no doubt about what
namespaces are used for. Namespaces were introduced to have your own
area in a shared environment, precisely to avoid conflicts.
Tom, I share your concern about irritating users, but do you really
think any serious developer would use the xattrs, but not know about
OpenMeta? Most probably he would get to know of the method to add user
generated metadata to files through OpenMeta, and in the course learn of
the very simple API. Why should a potential developer not use OpenMeta then?
I think that mirroring the attributes to "our own" namespace, but
keeping the com.apple.metadata one as a primary for the time being
should be a good comprise, and very easy to implement, right?
Performance issues should be negligible I believe.
I really hope we can resolve this issue, because I love the idea and I'm
very thankful that Ironic made OpenMeta available in the first place!
Regards,
Johannes Hoffart
How about (hate to partial quote Johannes)
> I think that mirroring the attributes to "our own" namespace, but
> keeping the com.apple.metadata one as a primary for the time being
> should be a good comprise, and very easy to implement, right?
> Performance issues should be negligible I believe.
I have registered openmetainfo.org - should we use that for a mirror -
anyone feel free to reply with a better domain - i think that it makes
sense to use a domain thats not already taken.
If you do find a good free one, don't post it in public - just email
it around a bit. A public post will likely result in the domain being
swiped by someone.
I registered it in my name - there is no 'openmeta' company or
organization to register it under.
What I coud do is post a letter to code.google.com/p/openmeta that
says that the openmetainfo.org domain will not be held for ransom or
sold for any money be me when the initial 2 year period is up. Would
that be ok?
Perhaps there is someone with more knowledge of how to handle the
domain ownership?
--Tom
> I think that mirroring the attributes to "our own" namespace, but
> keeping the com.apple.metadata one as a primary for the time being
> should be a good comprise, and very easy to implement, right?
I would rather figure out something that makes sense technically,
before acting. This compromise seems to postpone that, and add more
cases to consider, with a possible second code transition down the line.
We were agreed before that we could migrate to org.openmeta while
maintaining compatibility by using the tag time to determine which
domain was primary. Tom now says, "that will not work...with any
shipping application." I think he's wrong and that it will be
compatible with the currently shipping applications. The only
potential problem is someone writing a script that modifies one domain
but not the other *and* doesn't set the tag time. But if Tom is right,
then obviously we need to re-think this. So, Tom, please explain why
you think this won't work.
--Michael
> I have registered openmetainfo.org - should we use that for a mirror -
> anyone feel free to reply with a better domain - i think that it makes
> sense to use a domain thats not already taken.
Agreed. There are also a few variants of openmeta.* available.
Whichever domain we pick, the preferences should be stored there as
well.
> I registered it in my name - there is no 'openmeta' company or
> organization to register it under.
>
> What I coud do is post a letter to code.google.com/p/openmeta that
> says that the openmetainfo.org domain will not be held for ransom or
> sold for any money be me when the initial 2 year period is up. Would
> that be ok?
Yes.
--Michael
I've been off at WWDC for the last week, so am just catching up now.
Tom and I were discussing this via email before I left, so I'll pick
that up and see where we are.
> This thread has gone a bit cold, and I'm curious: is this issue
> essentially "resolved", from Tom's point of view and that of the other
> developers here (such as Default Folder X, Hazel, etc.)?
As I see it, nothing has changed and we're waiting for a response from
Tom.
--Michael
> All because people cannot agree about "the best way
> to do it". Oh really, folks, seriously?
>
> From an user perspective, what is needed is a tagging system that just
> works.
I think we're all agreed that finer details like the backup system can
be polished up later.
For the basic tag storage, it's not so much a question of agreeing on
the "best way" as that some feel that the current code is
unacceptable. I think "just works" means more than working on a
particular Mac with a particular version of the OS. Users expect that
their data will stay intact and that tagging applications will
continue to interoperate correctly (given reasonable assumptions about
the future).
> Using Spotlight comments was no less one
> than injecting xattr metadata into com.apple namespace
I don't like Spotlight comments, either, but that statement simply
isn't true. Apple has provided developer access to the comments since
System 7.
> Michael, Jon, everybody who objected: don't deny your users a feature
> because its future proofness is not set in stone. No computer
> technology is, everything developed is only ever done so "for the time
> being".
Not knowing what the future may bring is one thing. Unnecessarily
relying on something that we know ahead of time to be out-of-bounds
would be negligent.
> openmeta is no 100 % solution, but it is further up that path
> that anything developed before.
The thing is, in April we agreed on (what we thought was) a 100%
solution. So I see no reason to go backwards from that unless someone
can point to a reason why some other way would be better.
As I see it, the current situation is that:
(a) Tom rejects the April solution but has not identified a specific
problem with it.
(b) Tom controls the code.
So I would like to move forward, but I don't think the ball is in my
court.
--Michael
> Now I do understand that robustness over time is exactly the issue at
> hand: does the *potentially* lower robustness over OS incarnations of
> openmeta outweigh the *actual* user facing advantages so much that it
> justifies not implementing it?
That is a false dichotomy because there are ways to have both
robustness and the user-facing advantages.
--Michael
> OpenMeta code has had mirroring since June 4, 2009.
Cool. I think things would move along more quickly if you could tell
the group when you make a change like this.
> All attributes written to com.apple.metadata:* are also written to
> org.openmetainfo:*
What's the status of openmetainfo.org? It looks like it's parked at
GoDaddy.
> To read from these requires code that I don't think can be written at
> this point
Why can't the code be written? Didn't we discuss using the
kOMUserTagTime in April?
> No one has ever offered one line of code for me to include in
> OpenMeta.
I offered on January 30:
<http://ironicsoftware.com/community/comments.php?DiscussionID=632>
Paul offered on May 8:
<http://groups.google.com/group/openmeta/msg/71263063ec54a05a?hl=en>
You never actually accepted or rejected the offers.
> I feel that this whole discussion compares well to discussing 'how
> many angels can dance on the head of a pin'. Or what if Apple changes
> its disk format to ext4 without telling the developers or users ahead
> of time. ?
Do you have an example of an unsupported HFS+ feature that would not
work on ext4? Otherwise, I don't see the analogy.
> The chances of Apple changing this technology are both distant in time
> and unlikely.
As far as I can tell, that's just your hunch. The official word from
Apple is that it's not supported (i.e. subject to change).
> Things like Time Machine backups use
> them - backups that need to be viable years down the road.
My understanding is that most of the metadata is actually stored
elsewhere. Apple mirrors it into com.apple.metadata for the benefit of
Spotlight. I don't believe com.apple.metadata is the primary data
store for any user-entered data, except for OpenMeta. It is the
primary store for kMDItemWhereFroms, but Apple considered that so
unimportant that in 10.4 it was only "stored" in the Spotlight index.
> Furthermore: Say we wrote a 'internet downloader' application: would
> it not be 'right' to set com.apple.quarantine on disk images
> downloaded with it? Or set the com.apple.kMDItemWhereFroms?
That would be incorrect because you should use the LSQuarantine API to
do this.
--Michael
> openmetainfo.org is likely parked I bought the name - but that's it. I
> guess its not too hard to point it to google code openmeta.
Sounds good.
> I added some lines of code to write the org.openmetainfo as paul
> suggested. I don't know if he wants reading or not. Most people here
> don't seem to want to use org.openmetainfo as the primary store.
Is that true? I thought Jon and Paul both supported moving in the
direction of using org.openmetainfo as the primary store. The only
benefit to having com.apple.metadata as primary is that's what the
currently deployed apps do. But by using the kOMUserTagTime we can
transition to the non-Apple namespace while maintaining compatibility.
>> Do you have an example of an unsupported HFS+ feature that would not
>> work on ext4? Otherwise, I don't see the analogy
> I was trying to say that Apple will tell people before they erase
> their data.
OK. My point is that Apple is only responsible for telling you when
they break a contract. They don't tell people when they remove a
private API or change a private file format. You can't expect a
warning if you weren't supposed to put your data there in the first
place.
--Michael
I want to keep com.apple.metadata as the primary store and mirror
data to org.openmetainfo. We can switch this at a later date if
that's desirable to you and others (I'm comfortable just having a
backup of the data in org.openmetainfo that can be salvaged if
necessary, though I personally don't think that will be necessary).
Delaying the switch would give Gravity some time to incorporate
OpenMeta so that users are all using apps based on OpenMeta before we
transition to org.openmetainfo as the primary store. If we do this,
then all apps will be writing to both stores by the time the
transition occurs and there will be far fewer instances of OpenMeta
having to "fix" things by shuffling tags and deciding which source is
the correct one in a particular instance.
Yes! I wasn't aware it'd been done either. I was just wondering if
I'd missed something while I was away at WWDC...
> I want to keep com.apple.metadata as the primary store and mirror
> data to org.openmetainfo. We can switch this at a later date if
> that's desirable to you and others (I'm comfortable just having a
> backup of the data in org.openmetainfo that can be salvaged if
> necessary, though I personally don't think that will be necessary).
>
> Delaying the switch would give Gravity some time to incorporate
> OpenMeta so that users are all using apps based on OpenMeta before we
> transition to org.openmetainfo as the primary store. If we do this,
> then all apps will be writing to both stores by the time the
> transition occurs and there will be far fewer instances of OpenMeta
> having to "fix" things by shuffling tags and deciding which source is
> the correct one in a particular instance.
I'm not sure I understand your reasoning. You seem to agree that we
*can* figure out which tags are correct, but you're reluctant to do
this. From my perspective:
1. Doing the transition now (in OpenMeta) means that even apps that
use com.apple.metadata will get automatic mirroring in
org.openmetainfo, as soon as the tags are read by any OpenMeta
application. So I see having to "fix things" as a pro, not a con.
2. If we switch now, deployed apps would "just work" if anything
happened to com.apple.metadata. There would be no need to issue
updates that salvage the data in org.openmetainfo.
3. The code will be the same whether or not we write it before Gravity
incorporates OpenMeta.
4. Even after Gravity switches, we would still want to "decide which
source is the correct one" in order to remain compatible with any
legacy apps.
So I see several advantages to switching earlier, and no
disadvantages. Am I missing something?
--Michael
The disadvantage I see of doing it now is that you're taking on the
responsibility for data synchronization for Tags and old apps that
don't support org.openmetainfo themselves. Yes, the code for this
will work in nearly all cases, but there will always be the isolated
users that, for whatever reason have some bizarre system problem,
disk corruption, or other unanticipated circumstance that will result
in the OpenMeta code doing the wrong thing, or things getting blown
apart somewhere.
Yes, that's ambiguous, but in my experience such problems crop up
every so often and serve to make some poor user's life hell for a few
days while they try and unwind the damage (I do code very
defensively, but still get blindsided by weird stuff like last week,
when a user's disk developed a bad block underneath a cache file and
would lock whenever anything tried to delete the cache. I wasn't
sure that was it until she emailed me a week later to tell me the
whole drive went went south and was being replaced under AppleCare).
By waiting 6 months, we significantly reduce the number of cases in
which OpenMeta needs to make critical decisions about which data is
"correct" (org.openmetainfo vs. com.apple.metadata) and thus reduce
the chance for error. By that time, most apps will be writing to
both org.openmetainfo and com.apple.metadata themselves because
they'll all be using OpenMeta.
Again, this is all predicated on my take that exception cases on
individual Macs are more of a present concern than com.apple.metadata
going away. I guess it's a more simplistic view - don't add more
logic than you have to until it's needed (where we obviously differ
on the term 'needed'). In the end, I honestly think we're arguing
awfully small details. If it makes you happy to write the code now
and include it, I'm not going to pitch a big fuss.
> The disadvantage I see of doing it now is that you're taking on the
> responsibility for data synchronization for Tags and old apps that
> don't support org.openmetainfo themselves. Yes, the code for this
> will work in nearly all cases, but there will always be the isolated
> users that, for whatever reason have some bizarre system problem,
> disk corruption, or other unanticipated circumstance that will result
> in the OpenMeta code doing the wrong thing, or things getting blown
> apart somewhere.
OK. I'm happy with a two-phase transition (first add mirroring, then
switch the primary) if that will make people more comfortable.
Tom, are you working on the reading code, or would it help if I
submitted a patch? I think we discussed before the idea of making a
preference. Developers could set it when initializing OpenMeta, or it
could kick in automatically after 6 months or so.
--Michael
> I have registered openmetainfo.org
Could you set this up to forward to code.google.com/p/openmeta?
--Michael
> Done that,
Thanks!
--Michael