Unity Asset Store and its comparison to open source communities
This is originally a post I wrote on dev.to. See the original post here.
I’ve had my fair share of development experience with both native iOS and React Native development for the last couple of years. What immensely helps with the development process is the existence of centralized package managers (CPM from now on) like npm and CocoaPods, and the open source communities that mainly revolve around them.
Unity3D is the most widely used game engine out there and it also has a package store called Unity Asset Store (UAS from now on), from which you can pick and use third party packages. Even though it is much more inferior to most CPM’s in terms of features (e.g. UAS does not have support for lock files or a CLI), it still gets the job done.
The main difference between UAS and other CPM’s, in my opinion, is that UAS lets and actually encourages paid packages, whereas the others do not. Of course there are libraries in other CPM’s that require a license to be purchased but they are in the few and CPM’s usually have no built-in support for paid packages.
From my experience so far, I would like to explain and reflect on what kind of a difference this makes for the creator, the individual developer, and the community as a whole.
For the creator
Getting paid for the efforts you put in a package is a great incentive for creators to put stuff out to UAS. I’m pretty sure there are people making a living (or at least a portion of it) out of the packages they sell. It also gives the creators the feeling of responsibility, so they are more inclined to help out whenever someone has some trouble or a question about the package they’ve bought. I’ve personally never had a creator not respond to my inquiries about the packages I’ve bought, within a day.
For the community as a whole
What’s great about open source communities is that when there is a need for a library, there’s almost always someone who addresses it. When people use these open source libraries, they can let the maintainer know about any issues the library may have, discuss it with other developers, or send pull requests to resolve the issues themselves. Every repository hosting service (e.g. GitHub and GitLab) has built-in support for this organic feedback mechanism, which is the essence of open source communities.
UAS does not have this organic feedback mechanism. What there is is a comment section where you can comment on the package you’ve bought, and a forum thread about the package where people can discuss and ask stuff to the creator. But there is no way for you to participate in the development process of the library yourself since the paid libraries are closed source and you get the important part of them as a .dll file. Your best bet is to let the creator know about the features you could use or the bugs the library has, and wait for him/her to handle them. Also, there is a higher chance that the creator does not have the time, the will, and/or the proficiency to solve the problem you are having, as compared to an open source project.
This results in a fewer number of high quality libraries for Unity, which I think is a problem. It’s not terrible, but could be much better with a more active community that could work together.
For the individual developer
We always want stuff for free when we can have them. Knowing this, creators on UAS almost always have two versions of their packages: one is a free version that has the subset of the features the package has to offer, and the other is a paid version with all the features. This way, you get to use the basic functionalities and see if the paid package is worth it by trying it out. Then, you can purchase the package and use it in your projects. If you have the money.
I’ve personally never had any financial trouble purchasing packages since the company I work for pays for them. However, I have no doubt that this is a burden to indie developers who just don’t have the finances for them or are just getting started with a new project. The packages are usually not expensive (though they may be, if you are living in a country where the exchange rate is insane), but they add up. I know that this topic is a much deeper one, which can potentially lead to a heated discussion of capitalism vs. communism, so I’m not making any claims, just laying out the facts.
Whether UAS should be more like other CPM’s has been a thought in my head ever since I started working with Unity3D. I still don’t have an answer and not convinced that one model is superior to the other, though I’m more inclined to the idea of an open source community. I would like to know other developers’ opinions on this before making any bold claims.