Tag Archives: NPM

NativeScript - State of Plugins - a solution

We currently have a massive number of broken plugins, hiding the few flowers in all the weeds as I discussed in the first State of Plugins post. These  flowers still need nutrients and maintenance efforts to keep them alive as we outlined in the post: costs of a plugin. We went into the long tail of support, and how this burns out authors, and how little (if any) money is actually donated to an author. How have you supported any of the plugins you've used? When authors leave the community;  the flowers they planted, almost always die and are replaced by even more weeds, which of course just propagates the issues… So we are currently at a point where only a few unpaid authors maintain virtually all the plugins.

We also discussed how the two plugin sites deal with all the weeds, and the side effects of both stances, and finally finished off with all the additional issues that are present in the plugin community. Overall, in summary, our community and plugins in general need some help, and we the community has to solve it...

All of these issues, is what pushed me to look for a better solution,  all of this information has been percolating around my brain for a while. Several solutions have been tried by different people (including myself) and unfortunately each has failed over the last couple years.

So lets cover the issues in brief and some solutions that we have brainstormed, discovered, or found other communities implementing as solutions...

Finding the good plugins in all the bad plugins.

There is basically three ways to do this. The first I have actually tried with my PNR (https://plugins.nativescript.rocks) site. I foresaw this issue years ago, which is why I added the ability to put comments and rank plugins. Unfortunately; the community has decided that doing this is too much work (and I don’t disagree – I don’t even do it! ). So very few plugins have actually received a rank or any comments. I also tried to automatically rank plugins, but if anyone has looked at the auto-generated ranks on any of the sites – I’ll be blunt, they are also worthless. So ranking via computer or via the community seems to be a completely failed effort.

The Verified Plugin program - this initially sounds like a awesome idea on its surface. Unfortunately, if you delve into the issues it brings; lets just say that in the grand scheme of things; of what it offers verses what it takes -- this is easily the WORST thing to ever happen to the NativeScript plugin community. have a whole blog post detailing the whys, which will be released at a later point in time...

The final way is to create a curated list of good plugins that are evaluated by people, so that they can be known to be working and/or in a good state. This requires people in the community to spend some time on this and spend more time testing the demos and maintaining this curated list of working plugins. Overall this seems like the bet solution; but it requires a lot of time and effort by someone(s) .

Working Plugins?

Next issue is now that you found a potential match; does it have a demo? Unfortunately a large number of plugins have bad meta-data and so they don’t even link to their git repo (even the NativeScript team has a few of these). Which means you have to google to try and find the original repo (if it even publicly exists) and then finally download and run the demo. So this step is also a pain, and can be time consuming in some cases, but assuming the author has a repo and a demo, you can try it out. If it doesn't , hopefully it has docs so you can either create the quick demo or integrate it into your app to see if it works.

And the issues keep piling on...

This brings up another issue; now that you have a demo that actually appears to run,  you still have to test all the functionality for the most part upfront to verify it is fairly bug free and it will work for your purposes.

Is the author trustworthy, can I trust their code? (How many of you audit any of the plugins?)

Is the plugin and its dependencies under a good/safe license? I've personally seen several plugins that were Apache / MIT licensed; that use GPL dependencies.

What happens if the plugin has a bug? Does the author fix it rapidly? Is the plugin even maintained? If you have the time to debug and create a PR, will it even be looked at, let alone merged and then pushed to npm?

Does the plugin author get any donations for a cup of coffee for all their hard work? Wait, that is my issue, and the answer is "nope, almost never". .

Wow, a whole load of interesting issues. Well, now that I have outlined some of the issues, I believe, all or most of them, are solvable with one community driven program.

I want to state upfront, I do know everyone initially is not going to like this proposed solution -- We saw the problem, and we sincerely care about plugins, and the community! We want to see the best for it. As such we are currently using our own time, money, and skills to try and solve this problem in a method, that we believe, the community can and will support. So in total transparency, if you have a better idea – I sincerely welcome you to propose and build it. The more actual solutions to all these issues, means our community has more wins!

Magic?

So what magic is this you speak of? Do we really have a wand we can wave and solve all these issues??? Believe it or not; yes!

I am very proud to announce a plugin authors program to solve all of this.

We call this program ProPlugins.

Sweet, all solved let’s go home… Oh wait, you want the details, don’t ya…

The Details

The idea behind ProPlugins is that it  is a curated list (solves: finding plugins) of highly maintained and top-quality plugins (knowing if a plugin will work), from top authors (trustworthy). Issues are resolved appropriately, PR’s are looked at in a timely fashion. Metadata in the plugins are correct (metadata issues) and link to the proper repos and even a link to download the most current demo. All plugins will be required to have  at the minimum, a NativeScript-Core demo (the demo issue). All plugins have documentation (the doc issue). All plugins are supported by all the authors on the ProPlugins team (the maintenance issue).

Phase ONE requirements are tough enough to move things forward; however, they are not as stringent as phase two and three as we have a whole outline of how to get from here to there and then to have the very best plugins any community can possibly have.

In other words; we as the top authors in the community are replanting our flowers in a new weed free garden, and then as the caring gardeners we are, taking care of all our plugins as the ProPlugins team.

So how does the community fit in? The other part of the solution is how to let the community help solve the issue… In the past the community hasn’t really helped much with maintenance of plugins (*3), it hasn’t helped much with actually handling plugin issues or answering questions on the repos. Nor has the community helped with rating plugins. So basically the community has been mostly absent… So why is this? Each of these items takes time, and most of the community has a job they do, then spend time with their family, and finally most enjoy doing other hobbies. So they don’t have the time to help with all these things, and many times assume someone else will help, in other words there's not much incentive . This is very common in the open source world, the number of stars a project gets verses the so few people that help. NativeScript has over 17,000 stars; but has only so far 100 contributors; and the majority of that 100 are paid Progress employees. So instead of requesting the community donate their time  in areas that it obviously has not been willing to help in for the last 4 years; we will change the narrative…

This is going to be a subscription program. I know what you are thinking, "are we nuts???" Please bare with me; while I explain why we choose this route and why you will actually really want this route...

The community helps by paying a small monthly subscription  to access all these maintained plugins. They don’t have to work on them, they don’t have to help with issues, or do anything they haven’t wanted to do for the last 4 years. So the community can continue as-is, but it is now going to help support itself a different way. This low monthly fee is then used to fund all the maintenance and enhancements on all the plugins in the ProPlugins program. You the community, will be  supporting all the authors of the plugins, making it sustainable open source. Your subscription will help support the maintenance of the actual plugins you use. So now this becomes a totally win-win situation! The plugins you use become higher quality; which then means you spend less time searching, fixing, and testing them. Second because the costs are spread out across the entire community your monthly fee is so small, you won’t even miss it. This co-operative helps everyone (including you) in the community out. A simple low cost on your part can = High Quality for everyone. Honestly how much better can it really be?

So the better question to ask is, what is your time worth? In this case, ProPlugins will save you massive amounts of time, energy, money and frustration. Instead, it gives you what you need on a silver platter worth millions(*1) for  less than the cost of a meal at a cheap fast food restaurant… Can you really afford to pass it up?

Being the plugin developers that have been in the community the longest; we hope  the community will want to go in this direction; since we believe this will fix virtually all of the issues that have plagued us for the last 4 years, and gives us all an incredibly bright future. But, to emphasis how committed we are to the community, let me give you a small example: When I started planning the ProPlugin transition, I personally had planned on moving pretty much all my plugins over to the ProPlugins. However, when I ran all the numbers, I found out that my NativeScript-Permissions plugin is used in a large number of plugins as a dependency. Because we don't want to force the community to do anything, it will continue to be supported on the public npm so that everyone can continue to use it without us breaking anything (and it already fully supports AndroidX!). Our heart really is for the community!

Who is behind the ProPlugins?

Multiple of the top 10 plugin developers have come on board for the initial release. In addition several others have committed to joining in the very near future and are working through the NS 6 issues in their plugins -- but were unable to join the start of phase 1 due to the very short window that we had to work in. We were aiming to release very close to NS 6’s release; and we still ended up launching a bit later than we wanted to.

So what is the cost?

We are starting it out at $9.99 per month for the first 500 subscribers; then it moves to 12.99, and finally at 1000 subscribers it goes to 15.99. We want to reward the first subscribers, that are willing to become a major part of the solution. In addition, as long as you keep your subscription active; your rate will stay the same as a thank you for joining when you did!

So what does this awesome subscription give you:

  • Access to a private gitlab repo where all support, development, issues and feature request will be handled.
  • Open source plugins (yes all the plugins are still open source)
  • Access to a private npm server (You can easily do npm i --save @proplugins/nativescript-somename ---- tns plugin add will be working shortly after the NativeScript team accepts a PR to fix a bug in their code. ).
  • Access to timely bug fixes and/or your ability to ask for features (not guaranteed to be implemented)
  • Access to a curated list of plugins, which we hope to grow over time with plugins that have been abandoned by their original authors. (We have several in mind already, and one already in the list.)
  • Access to easy to use search, quick links from the npm web server to issues and a direct demo downloads.
  • Access to a boat load of plugins from top authors, some of them never released before!
  • Plugins that are already tested and work in NativeScript 6
  • Many new plugins being added daily (we were in time crunch; trying to get close to NS6’s release date. So there are quite a few plugins that didn’t make the initial cut off date; that should show up shortly as we finish testing them all under NS 6)
  • Some Phase 2 plans, based on subscriptions:
    • NS-Angular and NS-Vue demos and instructions for those flavors for all plugins. We would like the plugins to be all inclusive.
    • Integration and demo testing in Preview/Playground
    • Integration with PNR, to search and filter only ProPlugins
    • Screenshots for all plugins
    • All Dependency licensing in plugins license file.

“So where do I go for this awesome deal?" I am glad you asked; You can join the cooperative at 

proplugins.org

In addition you can see all the plugins that already exist in the repo on our npm server at     https://npm.proplugins.org

We hope you are as enthusiastic about where we can take these plugins and the jump in quality that we can do with the entire community participating. We have an awesome road ahead of us, with all of your help.

Sincerely all of us at the ProPlugins Team

*1) According to the Comoco scale we have over a million  dollars in development costs that we have already poured into these plugins over the last 4 years. If you had to recreate every plugin in the ProPlugins Co-op, you would be out a lot of money. If you do have that type of money, we do accept donations and/or sponsors!

*2) If you are a plugin author that would like more information on how this project works, and how we plan to do compensation; please see our website.

*3) Community numbers for involvement in the top 40 plugins is actually rather poor. The numbers show such low participation on those 40, that in most cases it is actually non-existent for the rest of the plugins. This is very typical in all communities, not just NativeScript.