{"id":1852,"date":"2011-09-20T12:34:05","date_gmt":"2011-09-20T03:34:05","guid":{"rendered":"https:\/\/regex.info\/blog\/2011-09-20\/1852"},"modified":"2011-09-20T12:34:05","modified_gmt":"2011-09-20T03:34:05","slug":"saga-of-frustration-developing-and-abandoning-a-lightroom-plugin-for-500px","status":"publish","type":"post","link":"https:\/\/regex.info\/blog\/2011-09-20\/1852","title":{"rendered":"Saga of Frustration: Developing (and Abandoning) a Lightroom Plugin for 500px"},"content":{"rendered":"\n\n\n<div class='resize_warning' id='arw1852'>\n<b>NOTE<\/b>: Images with an <img class='raw' width='19' height='18' src='\/i\/s\/red_zoomup.gif'\/> icon next to them have been artificially shrunk to better fit your screen; click the icon to restore them, in place, to their regular size.\n<\/div>\n\n\n<p>This is a long post explaining &mdash; venting &mdash; why <span class='nobr'>I have<\/span> not released <span class='nobr'>a Lightroom<\/span> plugin for 500px.com.\nThis post will not be interesting if you don't care about 500px.com.<\/p>\n\n<p style='margin-top:50px'>I've worked with <span class='nobr'>a lot<\/span> of companies during <a\nhref='\/blog\/2010-02-10\/1452'>my life developing plugins\nfor Adobe Lightroom<\/a>. I've got <a\nhref='\/blog\/2010-02-10\/1452'>32 different plugins<\/a> at\nthe moment. With some companies like Flickr and Google and Facebook, my\ninteraction is as an anonymous faceless third-party developer, but with\nmost <span class='nobr'>I have<\/span> an ongoing personal interaction... for example, <span class='nobr'>I work with<\/span> Alex at Zenfolio,\nand with Dave and Andy at SmugMug. There's <span class='nobr'>a long<\/span> list.<\/p>\n\n<p>For the most part, <span class='nobr'>I feel a<\/span> strong partnership with the companies that <span class='nobr'>I\nhave<\/span> <span class='nobr'>a personal<\/span> relationship with, and that really helps when technical or\nlogistic issues cause friction in the development\/support process, as one\nmight expect happens from time to time over the years. <span class='nobr'>The relationship<\/span> is\nbuilt on respect, which helps it withstand minor bumps along the way.<\/p>\n\n<p>On the flip side, an active lack of respect drives me away from <span class='nobr'>a\ncompany.<\/span> For example, <span class='nobr'>I spent<\/span> many hours helping DeviantArt develop their\nthird-party API, but walked away from them and from an\nessentially-completed plugin when it became clear to me that the folks\nthere were <span class='nobr'>a bunch<\/span> of dirtbags. <span class='nobr'>But this type<\/span> of thing doesn't happen often\nbecause most people are not dirtbags, and frankly, it doesn't take much\nintelligence to realize that it's <span class='nobr'>a good<\/span> thing if you can get someone like\nme to develop, for free, something that helps your customers. Most business\nfolks <span class='nobr'>I deal<\/span> with care about their customers.<\/p>\n\n<p>I tend to keep it to myself when things do go bumpy, but the demand for\n<span class='nobr'>a Lightroom<\/span> plugin for <b>500px<\/b> is so high that <span class='nobr'>I feel<\/span> compelled to\nspeak out to explain why <span class='nobr'>a plugin<\/span> for their service will not be coming from\nme any time soon.....<\/p>\n\n<p>I started getting a lot of requests for <span class='nobr'>a plugin<\/span> for 500px.com this\nspring, and after enough requests <span class='nobr'>I finally<\/span> sent 500px <span class='nobr'>a note<\/span> asking about\nan API with which <span class='nobr'>I could<\/span> write <span class='nobr'>a plugin.<\/span> <span class='nobr'>I got no response.<\/span><\/p>\n\n<p>I still got a lot of requests, so <span class='nobr'>a month<\/span> or so later <span class='nobr'>I sent<\/span> another\nnote. <span class='nobr'>I got no<\/span> response, but eventually saw messages on Twitter saying that\n<span class='nobr'>a Lightroom<\/span> plugin would be coming by summer. Ah, well, if they're working\non it themselves, or perhaps with another developer, they don't need me,\nwhich explains the lack of <span class='nobr'>a reply.<\/span><\/p>\n\n<p>But I continued to see 500px's tweets promising <span class='nobr'>a plugin,<\/span> but no plugin,\nso <span class='nobr'>I continued<\/span> to get requests from their customers.<\/p>\n\n<p>Their occasional tweets had made it clear that <span class='nobr'>a plugin<\/span> was forthcoming\nsoon, so <span class='nobr'>I was<\/span> surprised on July 11th to get <span class='nobr'>a note<\/span> from Evgeny at 500px\nasking how we can work together to make <span class='nobr'>a 500px<\/span> plugin <span class='nobr'>a reality.<\/span> Cool.\nPoint me at an API and I'll make it....<\/p>\n\n<style type=\"text\/css\">\n.e1852 {\ncolor: #DDD;\nbackground-color: #333;\nborder-color: #C88;\nborder-style:solid;\nborder-width: 1px 1px 1px 8px;\nfont-size:95%;\nmargin: 5px 5em 20px 3em;\npadding: 5px 2em;\n}\n.e1852x {\nborder-color: #8C8;\n}\n.w1852 {\n   color: #F55;\n}\n.q1852 {\n   color: #999;\n   padding-left: 25px;\n}\n.qq1852 {\n   border-left: solid 2px black;\n   padding-left: 5px;\n}\n<\/style>\n\n<div class='e1852'>\n\n    <p>Evgeny Tchebotarev wrote:\n    <br\/>|&gt; How can we work together with you to make it happen?<\/p>\n\n    <p>Let me know how to use the API <span class='w1852'>(and respond to questions faster than <span class='nobr'>a month<\/span> <b>;-&#41;<\/b><\/span>,\n    and I'll build <span class='nobr'>a plugin.<\/span> <span class='nobr'>All the better<\/span> if the API is still in development\n    so that <span class='nobr'>I can<\/span> suggest improvements that better mesh with <span class='nobr'>a Lightroom<\/span> workflow.<\/p>\n\n<\/div>\n\n<p>This started a long, slow, painful series of emails with folks at 500px\nthat has been the very definition of frustration.... mind-blowing\nhair-ripping-out <i>does-anyone-there-talk-to-each-other-or-have-a-clue?<\/i> frustration.<\/p>\n\n<p>Notice how I jokingly refer to the response time in the first sentence\nof my first reply? (I've highlighted it and other things in the emails as\npresented here, but the actual messages were all plain text.)<\/p>\n\n<p>That apparently wasn't enough of <span class='nobr'>a hint<\/span> because <span class='nobr'>a few<\/span> days later <span class='nobr'>I felt<\/span> compelled to spell it out for them:<\/p>\n\n<div class='e1852'>\n   <p>Hi Guys,\n   <br\/>I'd like to build the plugin (many Lightroom users have been asking me for\n   one, and <span class='nobr'>I want<\/span> to support Lightroom), but only if 500px is willing to make\n   it <span class='nobr'>a sufficient<\/span> priority that we can have <span class='nobr'>a fluid<\/span> back-and-forth dialog.\n   Having to wait half <span class='nobr'>a week<\/span> for <span class='nobr'>a reply<\/span> each time would just be <span class='nobr'>a waste<\/span> of\n   everyone's time.<\/p>\n\n   <p>I understand folks in your position must be busy and are continuously being\n   pulled from every direction, so I'd understand if you don't choose to make\n   <span class='nobr'>a Lr<\/span> plugin <span class='nobr'>a priority<\/span> yet. <span class='w1852'>I'm just asking that it be enough of <span class='nobr'>a priority<\/span>\n   before you decide to give me the go-ahead.<\/span><\/p>\n\n   <p>If your API and its documentation is reasonably flushed out, <span class='nobr'>I could<\/span> have <span class='nobr'>a\n   rough<\/span> plugin going in <span class='nobr'>a day,<\/span> but history has shown that for <span class='nobr'>a new<\/span> API there\n   will likely be many back-and-forths before we get to that stage, and the\n   end result will be <span class='nobr'>a better<\/span> API for all your developers.<\/p>\n\n   <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Jeffrey\n   <br\/>&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;\n   <br\/>Jeffrey Friedl           Kyoto, Japan              https:\/\/regex.info\/blog\/\n   <\/p>\n <\/div>\n\n<p>I don't really think I could have been more clear: do what you think is\nbest for your business, but if you want to involve me, don't do so until\nyou can treat me with respect.<\/p>\n\n<p>I eventually got a note from their developer, Arseniy, asking for my\ninput on how to design an API. <span class='nobr'>I'm a good<\/span> person to ask about this kind of\nthing, considering the deep experience <span class='nobr'>I have<\/span> in working with the API for\nFlickr, Zenfolio, SmugMug, Expono, PicasaWeb, Facebook, ExposureManager,\nDeviantArt, Photobucket, Twitter, Kodak, and LifePics. So, <span class='nobr'>I took the<\/span> time\nto write <span class='nobr'>a detailed<\/span> reply, and promptly heard nothing back from them.<\/p>\n\n<p>More than a month later, they released an API. <span class='nobr'>As one might<\/span> expect from\nan initial release, it was poorly documented, buggy, and underpowered\n&mdash; exactly the kind of things they would have avoided had they worked\nwith <span class='nobr'>a plugin<\/span> developer in tandem with the development of their API. But\nhey, it's their business. <span class='nobr'>I just wish<\/span> they wouldn't have wasted my time if\nthey weren't interested in <span class='nobr'>a plugin<\/span> from me. <span class='nobr'>I sent a<\/span> note to Evgeny and\nArseniy lamenting on the opportunity lost, and wishing them the best with\ntheir API.<\/p>\n\n<p>The response from Evgeny was bizarre, indicating that he thought I'd\nbeen working with Arseniy the whole time. <span class='nobr'>The ensuing<\/span> messages made it\nclear that folks at 500px were not in touch with what other folks at their\nsmall firm were doing, and that no one seemed particularly competent in\ntheir respective fields, least of all the developer. Responses from him\ntook days, didn't address the issues raised in the messages, and were\nexactly the kind of response I'd write if <span class='nobr'>I didn't<\/span> care and just wanted to\nget the message out of my inbox.<\/p>\n\n<p>I made some further attempts to pry some clue from them, and at some\npoint got so frustrated that <span class='nobr'>I actually<\/span>\n<a href='https:\/\/plus.google.com\/110839411749298049815\/posts\/jmFyzMnzij3'>aired this frustration in public<\/a>\non the limited exposure <span class='nobr'>I have<\/span> on Google+. <span class='nobr'>It's really<\/span> rare for me to complain in public, about anything,\nso this indicates just how frustrating it was.<\/p>\n\n<p>Alas, after many tries it became clear that it was not going to be\npossible to get <span class='nobr'>a timely,<\/span> competent interaction going, and <span class='nobr'>I finally<\/span> had to\ncut the cord, venting to them directly and explicitly with:<\/p>\n\n<div class='e1852'>\n  <p>...<\/p>\n\n  <p>You guys really need to get a grip on what you want and your priorities. <span class='nobr'>YOU asked<\/span> for MY HELP, and then leave me hanging, then put up\n  missing\/incomplete documents, and take <span class='nobr'>a very<\/span> long time to reply for\n  clarification.<\/p>\n\n  <p><span class='w1852'>It would be much more professional to say &#8220;sorry, we don't have time for\n  you, go away&#8221; if that's how you felt.<\/span> If that's how you feel now, please\n  tell me and I'll walk away. <span class='nobr'>But if you<\/span> want <span class='nobr'>a Lightroom<\/span> plugin from me,\n  then answer every question quickly and correctly as if you give <span class='nobr'>a shit,<\/span> to\n  finally get the project (and people's bitching about <span class='nobr'>a lack<\/span> of <span class='nobr'>a plugin<\/span>)\n  off of your todo list.<\/p>\n\n  <p>Decide between these two options based on what is best for your company,\n  then let me know how you would like to proceed.<\/p>\n\n<\/div>\n\n<p>That was three weeks ago. <span class='nobr'>I got no<\/span> direct reply, but <span class='nobr'>a few<\/span> days ago <span class='nobr'>I\ngot<\/span> another bizarre message, this time from Oleg, the CTO (and apparently <span class='nobr'>a\nco<\/span>-founder), referring to some &#8220;Diana&#8221; that I've never heard of...<\/p>\n\n<div class='e1852 e1852x'>\n<span class='nobr'>I just<\/span> got <span class='nobr'>a message<\/span> from Diana, our customer relations manager, saying you are having problems with API support. <span class='nobr'>Let me know<\/span> if this is true and if <span class='nobr'>I can<\/span> help you with anything. <span class='nobr'>I know we<\/span> had <span class='nobr'>a few<\/span> bugs with the API, but they should have been fixed.\n<\/div>\n\n<p>... and the message goes on to bottom-quote my prior &#8220;it would be much\nmore professional...&#8221; note. <span class='nobr'>I just don<\/span>'t see how an understanding of the situation\ncould result in such <span class='nobr'>a generic,<\/span> blas\u00e9 message 2&frac12; weeks late.<\/p>\n\n<p>I replied to Oleg:<\/p>\n\n<div class='e1852'>\n\n   <p>Hi Oleg,\n   <br\/>My past history with folks at @500px.com is such that <span class='nobr'>I won't<\/span> take any\n   steps to proceed until <span class='nobr'>I get<\/span> <span class='nobr'>a clear<\/span> answer on the question <span class='nobr'>I posed<\/span> in the\n   message you quoted:<\/p>\n\n   <div class='q1852'><div class='qq1852'><p>It would be much more professional to say &#8220;sorry, we don't have time for\n   you, go away&#8221; if that's how you felt. If that's how you feel now, please\n   tell me and I'll walk away. <span class='nobr'>But if you<\/span> want <span class='nobr'>a Lightroom<\/span> plugin from me,\n   then answer every question quickly and correctly as if you give <span class='nobr'>a shit,<\/span> to\n   finally get the project (and people's bitching about <span class='nobr'>a lack<\/span> of <span class='nobr'>a plugin<\/span>)\n   off of your toto list.<\/p>\n\n   <p>Decide between these two options based on what is best for your company,\n   then let me now how you would like to proceed.<\/p>\n   <\/div><\/div>\n\n   <p>I don't care one way or the other, but <span class='nobr'>I won't<\/span> spend my energy on <span class='nobr'>a project<\/span>\n   for you if you don't care about it. 500px pretty much burnt the bridge with\n   me, but I'll give you one more chance to act like you care.<\/p>\n\n   <p>Let me know,\n   <br\/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Jeffrey<\/p>\n\n<\/div>\n\n<p>It's not exactly true that I don't care one way or the other; <span class='nobr'>a lot<\/span> of\nLightroom users have been clamoring for <span class='nobr'>a plugin,<\/span> and <span class='nobr'>I want<\/span> to support\nLightroom, so given my druthers I'd prefer to fill that need, but not at\nthe expense of my sanity and self respect, especially considering <a\nhref='\/blog\/2010-09-18\/1620'>the troubles<\/a> plugin\ndevelopment can bring.<\/p>\n\n<p>For the umpteenth time, someone at 500px.com had the opportunity to be\nclear, to be respectful, and to look out for the best interests of their\ncompany. <span class='nobr'>The reply<\/span> from Oleg, several days later (today), took the\ncake:<\/p>\n\n<div class='e1852 e1852x'>\n\n   <p>Jeffrey,<\/p>\n\n   <p>From the conversation history you sent me it looks like you were under the impression that we commissioned the 500px Lightroom plugin to you. <span class='w1852'><span class='nobr'>I can<\/span> assure you that there has not been any such arrangement.<\/span><\/p>\n\n   <p>We provide API access &#8220;as is&#8221;, and the first rollout had some bugs that were fixed over the course of the last month or so. <span class='nobr'>It is purely<\/span> the developers' initiative to write any apps using 500px API, and we do our best to support the developers who decide to work with the API.<\/p>\n\n   <p>If you feel that the level of support in inadequate, <span class='nobr'>I am sorry<\/span> about this, we are doing our best to improve it.\n   Although, if the problems with the API prevent you from going forward <span class='w1852'>and you feel you want to abandon the project,<\/span> this is entirely your decision and <span class='w1852'><span class='nobr'>I am<\/span> fine with it<\/span>.<\/p>\n\n   <p>Best regards,\n   <br\/>Oleg.<\/p>\n\n<\/div>\n\n<p>Arrrgh! <span class='nobr'>I can assure<\/span> you that there was no arrangement, too, Oleg,\nbecause <span class='nobr'>I have<\/span> never accepted commissions for plugin work (though I'm\napproached for it often).<\/p>\n\n<p>I sent Oleg a short note, and in what is perhaps <span class='nobr'>a first,<\/span> <span class='nobr'>I got a<\/span> reply from someone at 500px the same day:<\/p>\n\n\n<div class='e1852 e1852x'>\n\n  <p>Jeffrey,<\/p>\n  <p>I am sorry about the confusion, <span class='nobr'>I was not<\/span> aware that Evgeny reached out to you and asked you to develop <span class='nobr'>a plugin.<\/span>\n  <span class='w1852'>We currently do not have the capacity to support Lightroom plugin development properly<\/span>, <span class='nobr'>I hope you<\/span> understand.<\/p>\n\n  <p>All the best,\n  <br\/>Oleg.<\/p>\n\n<\/div>\n\n<p>And so there we are. <span class='nobr'>The CTO of<\/span> 500px simply doesn't care about <span class='nobr'>a\nLightroom<\/span> plugin. This is the same guy that <a\nhref='http:\/\/www.petapixel.com\/2011\/05\/30\/interview-with-oleg-gutsol-of-500px\/#comment-214521848'>promised\nhis users <span class='nobr'>a plugin<\/span> by the summer<\/a> three months ago. Well, he's still got time: the autumnal equinox isn't for\n<span class='nobr'>a few<\/span> more days.<\/p>\n\n\n<p>Abandoning Lightroom users may well be <span class='nobr'>a smart<\/span> business decision\n&mdash;I'm not privy to their demographics and business plans &mdash; but\nit's something that, if true, their Lightroom-using customers should be\naware of.<\/p>\n\n<p>More likely though, he just wanted to get rid of me, and was embarrassed\nby his first message. Their API, if it were to actually work as they\ndocument, would indeed allow for <span class='nobr'>a basic<\/span> upload plugin that would satisfy\nthe initial needs of most users. <span class='nobr'>As far as<\/span> <span class='nobr'>I know,<\/span> they <i>have<\/i> fixed\nthe bugs <span class='nobr'>I wrestled<\/span> with, but <span class='nobr'>I won't<\/span> bother finding out until <span class='nobr'>I know<\/span> they\ncan be both respectful and clueful. This is my hobby, and if they don't\nwant to lift <span class='nobr'>a finger<\/span> to work with me for their own benefit, <span class='nobr'>I certainly<\/span> won't.<\/p>\n\n<p>Until then, perhaps another developer with <span class='nobr'>a lower<\/span> threshold of self\nrespect will provide <span class='nobr'>a Lightroom<\/span> plugin. I've heard of at least one other\ndeveloper working on <span class='nobr'>a 500px<\/span> plugin (<a\nhref='http:\/\/anesti.org\/lightroom\/'>here<\/a>). <span class='nobr'>I wish him<\/span>, and all\nLightroom users, the best of luck.<\/p>\n\n<p><i><a href='\/blog\/2011-12-02\/1894' class='quiet'>Continued here...<\/a><\/i><\/p>\n\n\n","protected":false},"excerpt":{"rendered":"<p>This is a long post explaining -- venting -- why I have not released a Lightroom plugin for 500px.com. This post will not be interesting if you don't care about 500px.com.<\/p> <p style='margin-top:50px'>I've worked with a lot of companies during my life developing plugins for Adobe Lightroom. I've got 32 different plugins at the moment. With some companies like Flickr and Google and Facebook, my interaction is as an anonymous faceless third-party developer, but with most I have an ongoing personal interaction... for example, I work with Alex at Zenfolio, and with Dave and Andy at SmugMug. There's a long [...]","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7,13],"tags":[],"_links":{"self":[{"href":"https:\/\/regex.info\/blog\/wp-json\/wp\/v2\/posts\/1852"}],"collection":[{"href":"https:\/\/regex.info\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/regex.info\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/regex.info\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/regex.info\/blog\/wp-json\/wp\/v2\/comments?post=1852"}],"version-history":[{"count":0,"href":"https:\/\/regex.info\/blog\/wp-json\/wp\/v2\/posts\/1852\/revisions"}],"wp:attachment":[{"href":"https:\/\/regex.info\/blog\/wp-json\/wp\/v2\/media?parent=1852"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/regex.info\/blog\/wp-json\/wp\/v2\/categories?post=1852"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/regex.info\/blog\/wp-json\/wp\/v2\/tags?post=1852"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}