Ode to 1Password 4 [video]

Options
Everyone
Everyone
Community Member

"Yo, dawg. I herd u liked awesome software, so it's about time we put awesomesauce in 1Password 4 and made it better." --Words not uttered by AgileBits... yet.

Click here to play Ode to 1Password 4 (Video):

Comments

  • Everyone
    Everyone
    Community Member
    edited December 2013
    Options

    ^ Scroll up for the video.

    Every time there's been an 1Password 4 update, I check the changelog, and am disappointed over and over again.

    The fact that this is a frequently asked question should be a hint to you:

    I don't give a rat's ass if my 109 PNG app icons at 10-20 kilobytes per icon means 1 to 2 megabytes of more data to transfer on the first sync to my mobile device. And 1-2 megabytes is absolutely nothing. It only takes a few seconds over WiFi or about a minute over the air, for an initial sync that preserves all icons. That's nothing. All syncing after that will be instant.

    Here's the proposal:

    Wouldn't the simplest and best solution to both the import/export problem and the quality+transparency problem be to always use PNG for custom app icons?

    The 1Password 3.agilekeychain format uses .PNGs for all custom icons, doesn't it?

    So if 1Password 4 switches back to using .PNGs for all custom icons, it achieves 1:1 feature parity and compatibility with 1Password 3's data format.

    It then becomes trivial for 1Password 4 to import / export all custom .PNGs to/from the older .agilekeychain format whenever it's doing folder sync, since they will use the exact same file format. This would ensure that the same custom icons are visible on Mac, Windows, iOS and all versions of 1Password and that they always stay in sync.

    Sounds like the best choice to me, especially when when you also consider that the app icon .PNGs are super small files.

    It's completely ridiculous that I have to choose between icons or the latest version. Especially when we are talking about microscopically tiny filesizes to add PNG icons back and achieve perfect custom icon sync between all versions and all operating systems, along with preserving the kind of sharp, clear, non-blurry graphics quality that made 1Password 3 look so good.

    I bought 1Password 4 on October 21st, over two months ago, and I am still using 1Password 3. This is the only reason I am not switching yet, and if things carry on like this then I never will. /:) What a shame for what's otherwise an awesome upgrade...

    It looks like a decision was made long ago to migrate all customers over to the icon-server, but such a one-size-fits-all approach defeats the beauty, simplicity and flexibility of 1Password and just leads to the kind of desolate landscape seen in the video.

    Please reconsider.

  • Everyone
    Everyone
    Community Member
    edited December 2013
    Options

    I got a reply from AgileBits' Megan in private. I hope she doesn't mind me posting it:

    Hello there!
    Once again, you have added a lot of laughter to my day. I'm so sorry to hear that your puppy was killed to death by the lack of icons in 1Password 4! I'll be sure to pass this along to the head honchos. :)

    I'm going to bed now. It's late here in Europe. Merry Christmas, everyone! :ar! [1]

    [1] That's the closest smiley to a Santa hat. Just close your eyes and imagine that it's a pirate santa, I guess...

  • Megan
    Megan
    1Password Alumni
    Options

    Hello @everyone!

    Our team has been working hard to improve the desolate landscape, and our image database has been growing. I've been chatting with some of our tech gurus about your icon concerns, and they tell me that the latest available beta has improved custom icon support that will keep more of the icons in png format. Have you had a chance to take a peek at the 1Password 4 beta? I'd be curious to see if this helps you out at all. We certainly want to be able to take advantage of 1Password 4 awesome new features :)

  • Everyone
    Everyone
    Community Member
    edited December 2013
    Options

    Thanks to the technology of email notifications, I jumped out of bed to try the beta.

    Here's the changelog you were speaking about:

    4.1.2.BETA-2 (build #412002)

    IMPROVEMENTS
    Improved the quality of the custom items icons.

    I erased ~/Library/Application Support/1Password 4 and did a fresh import of the 1Password 3 agilekeychain file. Unfortunately, no custom icons. So it's still not doing any import/export to/from the agilekeychain (folder sync) format.

    As for the improved quality mentioned above, 1Password 4 currently works/worked like this:

    • Convert input icon to lossless PNG with alpha transparency. Example:
    • If PNG filesize > 28KB, compress as JPEG instead with 32% quality. Example (how it looks in 1P4):
    • The JPEG usually ends up ~10KB.

    So the "Improved the quality of the custom items icons" has obviously tweaked the above formula in some way. What's not clear from the changelog if is the PNG size ceiling was raised, or if the JPG fallback quality was increased, or both.

    My suggestion is to completely do away with the JPG fallback (it doesn't save any meaningful space, it loses all transparency, and it just leads to blurry icons as seen above), and instead save all custom icons as PNG - just like in 1Password 3.

    If a universal upgrade back to PNG quality was done, it would then become trivial to import all 1Password 3 PNG app icons upon first opening an old AgileKeychain in 1Password 4. Thus preserving every custom icon the user may have (and augmenting things by pulling in icon-server icons wherever the user lacked icons[1]).

    It then also becomes trivial to do two-way syncing with the folder-sync AgileKeychain format (which uses PNG), so that all icons stay in sync across all versions and installations of 1Password.

    Sounds like a lot of wins to me. As if that wasn't enough, there's another great win: The icons will be guaranteed to look gorgeous everywhere.

    And remember: The slight extra size of the PNG icons doesn't matter; broadband and WiFi is fast these days, and they only need to be transferred on the first sync. We're talking about 1-2 megabytes of PNGs for my 109 app icons. That's nothing.

    [1] The icon server is still best thought of as a fallback. Just look at the video. For the handful of icons that it did have, it had older versions of the application icons. For instance, for Xee3, the icon-server contains the Xee2 icon. For BetterTouchTool it contains a very old version of the icon. For OmniFocus it contains some older icon, etc. This means that for the 6 or so icons it did have, about half are wrong. From that, we can observe that the user's local app icons, pulled straight from the applications on disk, are always going to be more reliable than the icon-server fallback. So it becomes preferable to store everything in PNG and source things from disk in the exact same way as 1Password 3, and only contact the icon-server as a fallback for items that completely lack icons. Just imagine how beautiful it would be to scroll through the list on iOS and see all of the icons in my 1Password 3 example in the video. It would look awesome, and would only delay the first sync by a few seconds over WiFi, or 1-2 minutes over the air - and since the icons only have to be synced once, the syncs will be super fast each subsequent time after that. Totally worth it. Just add a sync status line on iOS that says "syncing icons..." so that the user knows what it's doing on that first sync. It'll be a tiny slowdown of the first sync for a major, major gain in application beauty and cross-platform compatibility.

    Worst case scenario (if you really don't want to slow down the initial mobile sync by a tiny amount), you can still solve it as follows: All desktop clients export/import PNG app icons from the AgileKeychain sync-folder, just like in 1Password 3. The mobile clients, however, sync everything except for the icons. Voila. That's another way to solve it, if the main concern is mobile syncing speed. Mobiles won't be getting any beautiful icons that way, but at least the mobile limitations would no longer be screwing up the desktop apps.

    Now I really need to sleep. :D

  • Everyone
    Everyone
    Community Member
    Options

    This seems like it was a case of accidentally starting on the problem from the wrong end: 1Password 4 started its life as the code for the rewritten iOS app, which didn't have custom icons at all. Then the icon-server was invented, and somewhere along the way, the words "it would be awesome to rely entirely on it" were uttered.

    Then user complaints about the step backwards got custom icon support re-added, but still mobile-oriented with the whole "no import of existing icons, and we fall back to ugly, transparency-less JPGs".

    We're so close. Just one step away from full PNG sync support again, so that the desktop apps end up being an upgrade from 1Password 3 in every way - the way it should be. ;)

    There's no reason to let mobile sync speed hold back the desktop apps anymore (see the end of the post above).

  • Everyone
    Everyone
    Community Member
    edited January 2014
    Options

    The custom icon regressions can be solved in multiple mobile-friendly ways. There's all of the solutions above. And I just thought of yet another way:

    Store two icon formats in the database. All desktop clients use pure PNGs (and backwards-compatible sync). The mobile clients use JPGs, which are automatically generated by the desktop clients when they're modifying/attaching new icons. The mobile clients download the main payload + the JPG blob. The desktop clients download the main payload + the PNG blob.

    Another great way is what I covered above: Store only PNGs in the database, and make the desktop clients download those. The mobile clients on the other hand simply ignore the binary blob containing the custom icons. That way they don't need to transfer any data.

    A third way (also covered above): Eat the slight 1-2 more megabytes of bandwidth during the first mobile sync of real PNG icons. What's the big deal? That amount of data is only needed on the first sync. Everything after that is incremental. And remember that people are on mobile devices which are frequently watching things like streaming YouTube on their phones, which is a heck of a lot more than a mere 1-2 megabyte transfer. So there's no reason to shy away from doing a 1-2mb one-time transfer. It would be really nice to see the exact same, beautiful icon collection on the mobile client as well. The icon-server alone is not good enough (just see the video above for why that's the case).

    There are so many ways to solve this in a way that rectifies this regression and restores all icon quality/sync functionality that was in v3, without interfering with cloud sync speeds. ;)

  • Everyone
    Everyone
    Community Member
    edited January 2014
    Options

    Final post, with one final alternative idea (bringing the total solutions to 4 now, I think):

    • The most beautifully elegant solution which preserves icon crispness & transparency and shortens sync times significantly would be to keep using the PNG format at all times (and on all devices) and simply put all icons in a separate binary data-blob devoted to icons (in a slight modification to the 1P4 cloud-sync storage format). As for the 1P3 AgileKeychain format, it already does this, since the icons there are already separate files under the "thumbnail attachments" folder.
    • What that separation of data & icons achieves is that all devices, both desktop and mobile, can first focus on downloading the textual core-data blobs so that any sync on any platform completes in mere seconds even for first-time syncers.
    • Next, the sync clients can asynchronously download the separate icon-blob in the background, transparently to the user, and begin to draw the custom icons as-they-arrive (in exactly the same way as the custom icon server is doing it, asynchronously).
    • Best of all - that solution means that since 1P4 uses PNGs internally, it becomes perfectly compatible with importing/exporting all icons to/from the 1P3 AgileKeychain format.

    I know for a fact (from discussions) that some people on your team use custom icons too, and are as sad as I am to see them crippled in 1P4 - particularly the import of old data, which simply discards the icons as if they were meaningless. Sure, I can understand that it was a decision made in order to migrate users to the icon-server. That's no excuse for throwing away a perfectly good database full of up-to-date custom icons. At least not until the day that the icon server can actually deal with alternative app-naming, and isn't missing so many icons, and doesn't have so many outdated/wrong icons. The latter will unfortunately just get worse over time as apps change their icon design, since the icon server works on the "404"-method of finding out if icons are missing, which of course leaves no room for finding out if the icons it serves are actually years out of date. Case in point: It's serving the Xee2 icon for Xee3, among many, many other examples of outdated icons. ;)

    It's not fun that 1P4 doesn't import the custom icons from 1P3. For anyone with a significant amount of icons, it becomes a showstopper to migrating and I'm still using 1Password 3 (even under Mavericks).

    1Password is the world's greatest login & license manager, and I refuse to migrate to the competition and am willing to go through hell for you guys. Worst case scenario, I'll spend a whole day manually Cmd+C'ing each old icon, going into Preview and hitting "New from clipboard", saving the icon to disk as PNG, and repeating that for all ~130 (now) custom icons. Then manually dragging them all one by one into 1Password 4... but that wouldn't be any fun and it wouldn't solve the core issue of lacking automatic import as well as having the silly fallback to non-transparent and blurry JPGs which barely even saves any space worth talking about. ;)

    I truly respect the vast amount of work and headaches you've endured throughout the beta development period. At the same time, I've actually done so much programming in my life, over 15 years, that I became sick of it and decided never to do it again - so I truly know how simple this issue is to fix. I know that it's not a matter of difficulty. It's a matter of having the time and inclination to do it (after all of the way more highly prioritized issues are done), which is why I've been very patient for over six months with this situation. I just hope that one day you'll have enough time to resolve this issue and to knock this entry away from your FAQ since it'd no longer be needed:

    That would be pretty awesome, wouldn't it? ;)

    The reason I'm thinking of solutions is that I could of course simply resolve it for myself by manually migrating all icons one by one, but that doesn't do anything for all the other people affected by this (it's a FAQ entry after all; and for every 1000 people with an issue, only 10 ever get annoyed enough to take the time to register a forum account and write in). I'm holding out for the silent, crying masses whose eyes are too tear-filled and blurry to even see the computer screen and write in about this... :P

    • Love, J.
  • Everyone
    Everyone
    Community Member
    Options

    I've learned something impressive about 1Password 4: The transparency loss hardly matters after the recent JPG quality upgrade in one of the previous betas.

    This is how it handles transparent PNGs in the latest version:

    • Step 1: Store the PNG unmodified if it's under 28 kB.
    • Step 2: Otherwise, convert it to JPG, flattening all transparency to a background-color that is sort of light-gray-ish, which is pretty close to the default 1Password 4 GUI background color, making it appear to a cursory glance that the transparency has been preserved (even though it hasn't). The compression quality selected is now actually pretty nice thanks to the recent update, and the icons are hard to tell apart from the PNGs. That's great. No more massive JPEG blur!
    • Step 3: Obviously, a static, gray, flattened background won't do in all situations. So, if you hover over the item in the list of logins/software items, it also appears to intelligently swap the background color with a blue-tone one so that you can't really tell that the transparency is actually faked. It looks perfect for items that had hard edges (not gradual transparency), and for ones with gradual transparency it looks sort of faked and cut-off, as you can see where the fake transparency begins and ends. But that kind of icon is ultra-rare, so it's good enough for 99.9% of icons.
    • Step 4: When actually storing the custom icons it in the database, it no longer uses the old "a/thumbs/l" folders (attachments/thumbs/large). Instead, it attaches it directly to the encrypted item itself, in the "encrypted" data-chunk, probably as some new sub-tag in that data blob so that it's properly ignored by 1Password v3.

    The 4th item is the awesome part. See, I wanted to know how robust the sync was and wanted reassurance that 1Password 4 would be able to preserve all custom icons from its v2/v3 .AgileKeychain format if my main hard disk dies and I'm forced to re-import from the older folder-file format. I didn't feel like speaking to a silent wall, so I took it upon myself to run a filesystem monitor and look for write-commands to see exactly what 1Password 4 does to the .AgileKeychain folder when you attach an icon.

    The answer is that the icons are now embedded directly into the encrypted item-data. So even if someone loses their entire "real" 1Password 4 database, they will get their icons back if they import an AgileKeychain folder that has been created by 1Password 4. The last part is important: It doesn't import older 1Password 3 .AgileKeychain icons that are stored in the "a/thumbs/l" (attachments/thumbs/large) folder. It only re-imports the modern JPG/PNG-hybrid-transparency icons that have been saved from 1Password 4.

    Also note that it only stores your custom icons in there. Rich icons that come from the server are kept in a totally separate cache.

    With these tweaks: The JPG fake-transparency, the increased JPG quality, and the robust sync and restoration/re-import of custom icons saved with 1P4, I can now fully recommend the 1Password 4 way of doing things. Sure, the new way of doing things isn't backwards-compatible with 1Password 3, but whatever. The main thing is that the icon quality is finally pretty-much as beautiful as transparent, crisp PNGs were in 1P3! That's awesome.

    This just leaves one issue:

    There are some people that have hundreds of custom icons in their 1Password 3 database. Sadly, 1P4 is lobotomized and doesn't import the icons (even though it has a great opportunity to read the old database and convert the PNGs to these new fake-transparency JPGs).

    Well, here's a workaround:

    • Install 1Password 3 and 4 side by side.
    • Tell 1Password 4 to create a brand-new database.
    • Do an 1PIF export from 1Password 3.
    • Import the 1PIF file into 1Password 4's brand-new database.
    • Now go through every entry one by one, side by side, and select the custom icon from 1P3 and paste it into the corresponding 1P4 item.

    That only leaves one thing for AgileBits to consider:

    Why aren't you importing the 1P3 icons and converting them to the smaller, fake-transparency JPGs?

This discussion has been closed.