I've had a lot of bad experiences with companies over the years; but this one takes the cake (The cake is a lie!) for me, in how not to treat a customer (let alone a developer in your ecosystem).
For those who don't know who I am, I have written somewhere around a 100 plugins both open source and many for different clients. Primarily for the cross platform framework NativeScript. So I have plugins from making Unity run and communicate with NativeScript to even making ColdFusion be able to drive an NativeScript app. On the Hardware side, everything from mobile printers, credit card readers and just a week or so ago the cool SocketMobile barcode scanner. All of them work great with NativeScript. So in a nutshell, I play with lots of hardware and software and write a lot of code in a lot of industries, including optimizing business practices...
As such I have a number of phones, one of them is the Samsung Galaxy, which supports the GearVR, so as such I have been a Oculus developer for multiple years. I've been working on a couple ideas; and even created a couple concept Unreal apps on my GearVR devices.
So as many of you might not be aware of getting a Oculus Quest is a an experience in frustration, they are sold out everywhere (unless you want to be scalped and pay twice as much).
So, I thought I scored last week. I read an article that Oculus finally had some stock again. Connected to their site; found that they were already out of stock on the 64 gig version, so decided because I have no idea when they will be in stock again, I'd spring for the larger more expensive version... So placed my order, had an order number, everything seemed to be great...
Then the pain begins....
Two days later around midnight, I get this message:
I'm like what the HELL, I've been waiting forever and they just CANCELLED my order, no contact, no nothing; just lets cancel it... (Serious question, Oculus, why don't you put in this message why it was cancelled, since the person cancelling it knows.)
Make it stop...
Ugh, of course, I went immediate to their site and guess what:
Yep, all sold out again.. Shoot, well maybe they can undo the cancellation; and we can figure out why they would cancel a order and fix whatever mistake was made. Clicked the support link and of course it brings you to the generic support site (Serious question, Why doesn't the email link put you on the proper url?). Spend a few minutes finding the right form to fill out and send them a question asking the simple easy question of "Can you tell me why my order XXX was cancelled?"
Lets apply the thumb screws...
The automated system sent and email response and stated, it could be up to two business days; but they did respond in one! Very late the next day I get a message from CS saying thanks for contacting us... But man my heart dropped.
do not create any new orders (Not than I can, its out of stock already!)
WE ARE UNABLE TO RE-INSTATE IT.
At this point, I realize, I am screwed, I can't reorder even if I wanted to; and that they won't re-instate the order. They officially jumped from well this experience so far just sucks, wasting my time... to Oculus customer service/order system really sucks. WHY THE HELL DO YOU CANCEL A ORDER, IF YOU CAN'T RE-INSTATE IT? Seriously bad customer interaction at this point... If their is a order issue, and you can't re-instate it, then suspend/pause the order and deal with the issue, don't just CANCEL the order leaving the customer with NO recourse...
Electric shock therapy is best...
And to top it off; lets see why the cancelled it (this message came the next day)
- If I'm in the military and serving anywhere outside of the United States and decide to buy a US model, I can't... - If I'm a expat living anywhere else in the world; apparently we can't either. - If I'm uncertain where I'm going to be in the near future (like was in college, now at home), and decide that I want to make sure all my mail is handled and sent to where I am currently, no matter when this ships and arrives... I can't... - Worried about spouse abuse and sending all mail through a third party to eliminate the ability for them to track me via my mail. I can't....
Really, Oculus! You f**kin cancelled my order because I ordered a SINGLE device, am a known developer in your developer program for several years and wanted to ship it to a place that can re-ship it to where I'm actually located right now. Your going to cancel the order, leaving me no recourse...
Maybe Bleach will work...
Then state I can order it this way from any of your support partners, seriously? You say we can't do this; but you can get around us, this way. Here's a link to make it much simpler!
Honestly, management needs to make some heads roll, that has to be the stupidest policy I've ever heard of...
But for those who typically use a Reshipper/concierge for your mail; you need to use a friend (which I would have done had I known that up front, now it is too late!)...
Now most of you are not plugin developers; and as such do not understand what costs go into creating or maintaining an open source plugin. Normally I wouldn’t even think to post something like this; and I don't want this to be seen as "whoa is me". But a statement from someone at Progress; made me realize that many others are probably also be under the mistaken idea of all the costs of a plugin and so I now feel I should address this...
So here is the
summary of the statement made to me in a conversation:
“Plugins are either paid for mostly by companies, clients, or those that are free are still excellent advertising for your services. So releasing a plugin is a win/win situation.”
The funny thing is before I started doing NativeScript plugins; I am sure I thought the exact same thing. So, I can’t fault anyone for thinking this! It is very easy to think plugins and open source work is created by “mostly” companies, as it makes logical sense – all the press Microsoft, Google, Facebook and Amazon generate from their open source work. This can also be especially true, if you are doing open source work and being paid by a company for your work (like the NativeScript team, and the many teams at Google, Microsoft, etc that are producing open source work). So, I can honestly see how this is the prevalent view.
a nutshell there are three separate claims here we will discuss:
are mostly paid for.
that aren’t paid for; are good advertising
them is a win/win situation.
are mostly paid for.
First of all, being fairly in tune with the plugin community; to my knowledge the majority of all the plugins in the NativeScript community are actually done as a mix of paid and unpaid work and those that were paid, are very very rarely still supported by the company who initially funded or released it. So even if a company actually sponsored the plugin, there is no followup money to continue maintaining or enhancing it. Meaning the author is almost always again donating their time to make this plugin work and/or do maintenance on it!
Since I really don't like talking in hypotheticals; we will use my plugins as an example. 21 of my 25 open source plugins were done completely on my own dime. Meaning, no actual clients paid me for any of that work. That includes some of my most popular plugins like NativeScript-Permissions and NativeScript-Sqlite (*3).
A lot of people have assumed that the authors of these plugins are paid by a company to maintain them. I may list Master Technology or nStudio on my plugins documentation to try and advertise my services, since I do own/co-own those companies. But I do not see a dime of money from anybody (nor even from my own companies) directly for working on any of my own plugins. Pretty much all work on all my open source plugins is in on my own totally unpaid time. These were all done either to help one of my own personal projects, for the technical challenge, or to help the community. Occasionally, I might actually fix a bug or add a feature that can be directly attributed to a client needing to use the plugin, which then it might be paid for. But that is not as common as many might think. (Lets just say in the 4 years I've done this, I've only had a handful of requests.)
For a truly complete picture of at least my plugins; 4 of my 25 plugins (mainly smaller plugins), actually had some real paid parts to them. Yay! Again, not normally enough to actually pay for the entire open source development of the plugin. But enough to pay for some or several of the extra features in them to meet that clients specific needs. So yes, there can be some money in it. But in most cases, it is still not even enough to typically pay for just the time that went into creating that plugin in the first place, let alone any of the time to support it or maintain it.
In addition as one of the few developers that has actual commercial plugins, I can also speak on this side of the coin. Even the money made on my commercial plugins has not actually paid for the actual development costs of those commercial plugins. In fact there used to be another developer with a commercial plugin -- he recently left the NativeScript market. There just hasn’t been enough purchases. And finally, I do have a lot more private/unreleased plugins that were in a several of the cases mostly (or even in a some cases, fully) funded by clients. In this aspect; there could have been good money involved with some of these. (*1)
So based on my own personal experiences, and many discussions with others in the community; I would have to say there isn’t nearly as much money going around to deal with making them -- let alone any money for support, bug fixing and/or documentation. One of the most famous examples of this issue. The OpenSSL library; it underpins the entire secure parts of the internet. HTTPS is provided by OpenSSL; so browsers, servers, your phones all have OpenSSL libraries (*2) in them. The team that was maintaining this highly complex software, was only getting about $2,000 a YEAR in donations; despite many many many companies using it in their hardware and software that they sold for massive profits. This matches my experience; both my donation Paypal and my attempt at a Patreon accounts have seen so little money, that I don’t even think it is enough to even get a coffee even once a month.
This is called the long tail of support: the support side still needs to happen; but no funding occurs for all the additional work that will easily exceed the initial work on the plugin over the life of the plugin.
Claim: Plugins that aren’t paid for, are good advertising (TLDR: mostly false)
Some people believe that I get paid in Advertising. That makes some logical sense, and yes I do to some extent. Since I have several of the top plugins, I won't totally dismiss this as 100% false. Let us dissect this logically. I have a pretty good grasp of the reality of this -- with my 25 open source plugins in the eco-system, and being in it since day one. That seems like a potentially large amount of advertising, I could be getting. This statement actually was very true when NS was first started; each plugin released had a huge huge amount of ability to be seen. Unfortunately, their is now well over one thousand plugins. That means even with all my plugins together – I only have approximately 2.5% of the advertising market (+/- a tad depending on popularity) and that is shrinking daily. So even the advertising I can do with them; really is simply drowned out by the other 97.5% of the plugins. Having popular plugins, or long standing well known plugins does help increase that percentage; but just the sheer volume of plugins pretty much negates a plugins ability to do much advertising. Again, having a well supported and widely used plugin; helps increase this percentage a lot -- but anyone putting a plugin into the community now -- well your new plugin is just 1 in over a 1000...
With the amount of time it takes to actually create a plugin and then maintain it -- It is actually considerably cheaper for me to spend that time just doing additional contract programming; and then be a sponsor at a conference (which can be a tax write off for smaller companies) – so that my company is seen everywhere at it. A conference can now drum up considerably more business. That company is seen with only 5 or 10 other sponsors, and might even be seen on many of the videos; tweets, etc. All the way around good press, and typically gives the company the ability to talk one on one with many potential clients and hand out even more advertising and share contact information in person. Or write blog posts like this one, that are hopefully shared everywhere. (Hi, I do contract work :-D!!!) Or just be very helpful in the community so that people know why you are considered one of the top developers in the community and so you get contacted because of that. There are several ways in the NS community to stand out; and almost all of them are considerably cheaper than writing a plugin.
Unfortunately, their is one big GOTCHA people don't realize. If the plugin is broken, it actually turns into a significant liability and so it is negative advertising! Which now means that plugin now actually turns from help into a source of long term money and time drain; as I try to make sure my free “advertisement” isn’t now a liability… Nothing inspires a potential client, more than trying your "free" plugins and it crashing. Yes, that will totally inspire them to try your paid services.
Just for those who haven't been around since the beginning of NativeScript time; there have been over 5 different sets of breaking changes to plugins over just 4 years. Each time a breaking change occurred; some of the plugins had to be completely rewritten or heavily modified to make work again. Others, fortunately had much more minor changes or if you are really lucky; no changes. But any way you cut it; all the plugins you released had to be re-tested, debugged, and upgraded to the next version of the framework. So writing plugins, this isn't a write once, and it can just sit and work forever, like plugins in many of the other communities. This is why plugins from NS 1, NS 2, NS 3, NS 4 don't work in NS 5, and of course our newest breaking changes are occurring in the brand new NativeScript 6 release. So watch a lot of plugins break again...
Claim: Its Win/Win (TLDR: LOL, So very false…)
Well you can probably guess based on the first two claims at how this goes -- since those were both false. But I have probably the one of best story to show you how false this claim is. This is a 100% true story, and I am attempting to minimize it to the best of my ability because I am not trying to make the parties look bad. I think this situation really points out how terribly lopsided this "win/win" idea really is or can be. I can only speak to my story; but I have heard about another one in our community that is likewise just as "great".
So first lets take my awesome top rated NativeScript-Sqlite open source plugin, it was released for free, no strings attached, and developed by me for free, nobody paid me for any of the open source part of it(*3). According to the COMOCO scale; it is worth about $150,000 in development costs. So far, nothing wrong, this was my goal for it to be something useful in the community. And I am very happy it is a useful plugin for everyone to use. This is open source at its finest!
there is this small company called Kinvey, which Progress bought for
~49 million dollars a couple years ago. Kinvey is a HIPAA
compliant Database as a service; primarily focused on mobiles. They
charge very large sums of money to companies for every byte of
traffic / data stored. Product is well written, and very secure
-- so overall companies like paying the money for the piece of mind
it gives them. Still Nothing wrong here, either. Good product, and
excellent revenue stream for Progress. They support several
different mobile platforms, including NativeScript.
anybody want to take a guess where I'm going with this? So
when they developed their plugin for the NativeScript platform, they
used one of those totally
awesome open source plugins. Any guesses to which one?
Ding. Ding. Ding. Yes, you
are correct – my
far, nothing really bad,
Now I want you to really think about this. Progress pays their programmers to build NativeScript, they also pay their programmers to create and maintain the Kinvey services and plugin (so the Progress developers all get paid). Progress also paid 49 million for Kinvey, so definitely the creators of that technology got paid. Progress also now gets paid massive amounts of money for every single byte of data stored that the app uses which has this Kinvey plugin in it. (So hopefully they are making all that money back!). So far, let me be 100% clear – their is nothing is wrong with these people being paid, in fact theyall deserve to be paid for all their work. So now every single NativeScript app that uses Kinvey has my plugin in it for all the offline features...
Everybody is happy right?
Well, not so much. First, I have never even seen a single penny of revenue from Progress for this part of my awesome "win". Oh well, that is the breaks of a well designed open source plugin, right? It is being useful, its entire purpose in life. Woo Hoo, Yay! Ok, not so much -- I'll admit it is a bit annoying, they are making millions off of some of my work, and I don’t even see a single penny. And, I do realize it is only a small (but critical) part of the NativeScript side of the project, but it is more the principle that bothers me. This story is such a common story in our industry (think OpenSSL) – I am in very good company of people whose excellent hard work is totally unpaid for and/or underfunded; but the company using it makes crazy boat loads from it. So, I'll just let it be – and we can count this as a “oh well”, and life can go on...
Oh, I bet you thought I was done! Ahahahahahaha....
Let’s not stop yet, it gets even worse! So, I obviously didn't "win" on the first point (i.e. direct money). So, what in the world could be worse? Well what about that awesome advertising/recognition that is the second point we discussed above. Anyone want to take a guess? Lazy person, I bet you clicked the link. 🙂
Ok, I'll be nice and embed a picture here of the link...
Because my plugin is a declared NPM Dependency, I also don't even get any recognition either. Nor does anyone see ANY of my documentation, my name or any of my advertising for any of my services. So all these companies that pay Kinvey hundred's of thousands of dollars, who would be actually the perfect targets for me to do contract work for -- they don't even know I exist! Kinvey, has my plugin so integrated, nobody even knows it even uses my code. I am totally invisible, even though my plugin is the offline part of their NativeScript plugin. So, now we are at no money and no advertising/recognition, on something that is used to easily make millions for Kinvey.
Well, you know what; you won't believe it -- but the story continues to gets even WORSE! But we will actually stop here; my goal here isn't to make Progress and/or Kinvey look bad! My goal with this example is to actually show how much of an awesome "win/win" situation this really is for a real open source NativeScript plugin author... The plugin was 100% funded by me, is worth about $150,000 in development costs; and it is being used in apps, which was my purpose in releasing it. But I honestly can’t think of a case anyone can make where this can really be considered an actual “win/win” situation.
So in summary; these are three separate claims here:
Plugins are mostly paid for. (False)
Very few of my released plugins are even partially paid for, let alone fully paid for. And none of them have had funding for the long tail of support.
Plugins that aren’t paid for; are good advertising (False)
Advertising from the plugin is such a small percentage of the entire market; it is more cost effective to do other forms of advertising. In addition do to all the down sides of plugins long tail of support, it will very easily become a liability or negative advertising and/or a money/time sink.
Releasing them is mostly a win/win situation. (False)
Win/Win it is not (See story above). In addition to the long tail of support; in our community, we rarely see much support or PR’s for the actual issues. The costs for the long tail of support can greatly out weight any potential benefit from the first two items.
*1 – Unreleased because the long tail of support that I mentioned, it is crazy bad in all reality and as I don’t want any bad advertising. At this moment, I am unwilling to release more “free” plugins that just require more free maintenance work and support. I have a hard enough time keeping up with my existing plugins. At some point in the future; they might get released if I can figure out ways to mitigate the costs...
*2 – There are now a couple of forks of OpenSSL that are used in some products, so OpenSSL is not in everything now; it used to be. In addition, because of a nasty vulnerability in OpenSSL a couple years ago; several of the bigger internet companies figured out that they needed to do a better job and they stepped up and started funding the OpenSSL foundation. So this is to my knowledge funding is no longer an issue for the OpenSSL foundation.
*3 – There is one of the commercial add-ons for SQLite that has been partially funded by a client. But the open source side; was not funded by anyone but me.
All company names and trademarks are owned by their respective companies.
I get more than one message a week requesting help with one of my many open source plugins or projects. I would really love to help you; but this is not something that is sustainable and completely unfair to my family.
Not only did you get the plugin and/or project for free; you already have the source code, documentation, and probably even a full demo that shows most -- if not all the functionality of the project. You should have everything you need to find the answer to the question yourself.
Pretty much all my income generated is currently from my doing contract development or consulting related work. So any "free" support work that interrupts paid work; really is a bad thing for my family. If you are being paid to build your app; than you can see how this even more of an issue.
If you really you think you found a bug; then by all means report it to the proper repo (https://github.com/NathanaelA) and the support will be appropriately dolled out. I do take bugs seriously; but again open source plugins are never as high of a priority as paid work. The bugs will eventually get fixed; but it might take several weeks to find the time to work on it. In the meantime I do accept pull requests. I am also much more likely to accept your PR fairly quickly and fix anything that I find broken in it; than reject it. 😀
Finally, I am not opposed to supporting you; so If you really want my support; I do offer paid support https://nativescript.tools/product/11
Now back to the regularly scheduled technical blog posts. 😉
Hi, thanks for stopping by and hopefully this blog post will answer the question; NativeScript: "Why Patreon?"
I think it goes without saying that I have been a valuable participant in the Nativescript community since NativeScript was first released. However, for those who don't know who I am, here is a really quick summary. I wrote the book on NativeScript. I currently hold the record for the most developed NativeScript plugins and plugin assists. I created and maintain the community NativeScript web site including the cool plugins library at Nativescript.rocks. In addition I have dozens of in-depth posts regarding NativeScript on my blog as well as innumerable support posts on Google Groups, Slack, and I have one of the highest NativeScript support ratings on StackOverflow. I can continue to go on, but I think from this you get a pretty good picture of what I've contributed.
And here is a small trimmed down list of things I would like to pursue in the future for the NS community.
- How to use Android Extend's properly
- How to do Extend'd events properly in Android JS
- iOS and Android Gotcha's
- Building a AAR from a JAR and/or Source code (Android)
- Building a Full interface plugin in Android/ios (Using a maven/cocoapod)
- Techniques to optimizing your code
- Angular 2 and using normal processing or interface NativeScript plugins
- iOS & Android Multithreading
- Shrink the size of deployed APK/IPA size (post-hook tool)
- iOS WKWebView & Safari View Controller
- Android Camera control 2
- PDF control
- Fluent Reports (data driven JS reporting engine)
- Encrypted Key Store access & native encryption routines
- Convert more/all of the Node modules
- Debugging, Design, and Performance tools
- LiveEdit for iOS & better TypeScript support (TSLint)
- Replacing "Observable/ObservableArray/Promises" in NativeScript with RxJS
- Deployed remote updating (i.e. download updates to your app from your server)
- Mobile friendly & Mobile app w/ runnable samples
- Pictures/Animations of interface plugins
- Display docs
What many of you may not know is that I am a totally self employed family man. That's right, I don't have a 9-5 regular paying gig. I'm a husband and father to several kids, with another due in Aug. So, I am at a point where I need to focus in one direction or the other. I've spent a lot of time on the community and I have really enjoyed it. As you can see I have so many great ideas for so many more NativeScript blogs, tools and plugins. But, I also need to take care of my family, so I need to pay the bills. This is where you can come in and help! You can choose to help me build many more free resources in the NativeScript community. By pledging to my Patreon fund. You can show that you appreciate all open source plugins, knowledge, web sites, and finally the support that I bring to our community.
The goals I have currently setup are:
- $100 - A exclusive blog post each month
- $500 - Several exclusive blog posts each month
- $1,000 - A plugin each month, exclusive to patreon's for at least 3 months.
- $2,500 - I'll work on a free book for the community, 3 months exclusive for patreon's
- $4,000 - A complicated plugin/tool for the community, or several simpler plugins per month. (Again exclusive for patreon's for at least 3 months)
Each of these goals will be using your suggestions and/or from my list and voted on by you patreon's; so you can direct the direction and potentially get answers and/or plugins to fill the need you have or see.
This does not mean that if I don't get the funding that I'm leaving. I love NativeScript! We have an awesome community; so I'm sticking around. Rather it just means I will have to refocus the majority of my time on other stuff like generating contracts, making commercial plugins, services, and things like paid training.
I have been been working on transitioning to primarily commercial -- however, I decided to try a grand experiment. I am going to let you as the NativeScript community choose where you would like me to focus my time and efforts...