sschmid / Entitas

Entitas is a super fast Entity Component System (ECS) Framework specifically made for C# and Unity
MIT License
7.09k stars 1.11k forks source link

Entitas Announcement #587

Closed sschmid closed 6 years ago

sschmid commented 6 years ago

Hello everyone!

About 8 months ago I published Entitas on the Unity Asset Store (see "Entitas on the Unity Asset Store" #413).

Earlier this week I announced "ENTITAS 1.0 🎉" #578

Thanks to everyone who went this road along with me and for sticking around and giving great feedback!

These are the two options you have right now to get started with Entitas:

Entitas GitHub Asset Store
All Entitas Features ✅ ✅
Unity Code Generator ✅ ✅
Unity Integration ✅ ✅
Visual Debugging ✅ ✅
Standalone Code Generator ✅
Entitas.Roslyn Plugin ✅
free + open source $90

Within the next 2 weeks you can still Entitas at a discount price of $45 until it will be offered at its original price of $90 again.

Check out this video tutorial to get started with Entitas https://www.youtube.com/watch?v=L-18XRTarOM

Happy coding :)

djfountain commented 6 years ago

Since launching on the asset store you have removed the functioning Standalone Code Generator from the open source version. I get that you want to make money out of a portion of your work, but even as someone that buys the asset store version, I can't see to find the source for the code generator to make my own routines.

Furthermore you cannot describe the github version as open source because you have been deleting functional entitas code and moving it to the closed source desperate devs project, replacing the code with pre-compiled dlls. The whole point of open-source is that I want to own, understand and modify the code. You have invalidated all of these factors.

I have paid for the asset store version to support you but will continue to use a much older one which doesn't have these issues. I wont be singing your praises as I have been or using your code in future projects if the project continues this downward turn.

sschmid commented 6 years ago

Hi, thanks for your feedback and for supporting the development. Entitas has been fully open source for almost 4 years. Entitas will remain open source like I repeatedly guaranteed. I might need to update some wording to clarify that Entitas itself is open source but not other products that are shipped with Entitas. I recently started to extract unrelated code from Entitas as announced here: #512

Entitas used some of those tools by some extend and they were all in the Entitas namespace. But actually, .NoneOf() them have anything to do with Entitas. It's the other way around: Entitas was built on top of those tools. Starting with Entitas 0.46.0 and as announced in #508 I extracted all those tools into separate standalone projects. That's great because now I see and treat them a standalone projects. As a consequence I have to increase the focus on a public API that makes sense for all kinds of scenarios and therefore the API awesomeness and the reusability is increased. It also enables me and others to create new kinds of projects that use the same fundamental tools without the need to depend on Entitas completely. The Entitas repository will be even more about ECS than ever without distractions on other tools as they're all considered external dependencies.

You are right, those parts are not open source anymore. This shouldn't affect working with Entitas at all, because all Entitas related code is and will be open source. I extracted Unity Editor, Networking and Code Generation related code which is fine in my opinion. If you want or need access to all of the sources from all used dependencies you can contact me. The addon / plugin-based architecture of the Entitas project still allows a great deal of customization and the code generator is flexible for all kinds of projects and scenarios by design. If you want to extend the code generator behaviour to fit your needs I suggest taking a look here: https://github.com/sschmid/Entitas-CSharp/tree/develop/Addons/Entitas.CodeGeneration.Plugins/Entitas.CodeGeneration.Plugins

djfountain commented 6 years ago

The mindset of someone who specifically chooses open-source software is that they want to understand, debug and modify it, they also want it to be future proof for different platforms ect. They want to own it. Furthermore, why would I start a big project which relies on a code-generator that is closed-source, it's just not reliable.

The main issue with all of this is trust. We are kind of forced to trust Unity to maintain support for platforms / be bug free. However someone like me, staking their business on YOUR software shouldn't need to invest that same trust in an individual. Sure, I can trust your passion, intellect and dedication, but I'm not staking my livelihood on it. I would however pay you for the source code, so if anything goes wrong AND you disappear, I can still fix it / recompile myself. I've been burnt before, something similar to this happened with some software I used on the game Lumino City. I could have fixed it if I had the source. After that I made a concerted effort to pick better software when I made the next couple of games at "State of Play". I was planning on using Entitas for my next.

There are also a few times when I have wanted to delve deeper and see how things work inside the deperatedevs libraries and I had previously modified the old code generator to make flatbuffer code to save and load my contexts to a file. I did this my modifying the executable at some point. If I could do what I wanted to do with Entitas then I wouldn't be writing here.

I know you have spun a narrative about how these tools "were never part of Entitas"... but lets be honest, you cannot deny: Last year Entitas was a whole open-source framework, with an open-source code generator. This year Entitas is partly open-source, with a closed-source generator which i can write plugins for.

Maybe I am the anomaly here, and if you think that you still have a customer-base after people like me have gone then I wish you all the best, but I think you are making a big mistake. Written-text has a way of coming across different to the reader, I want you to know that I really like the software and I wish you all the best in your new venture to make it better. I just wanted to warn you about how the most recent changes have come across. I would use your code and I would pay you for it, but I just can't now. I'll be using an old version of Entitas which is still open-source

Thanks for listening!

FNGgames commented 6 years ago

I would just like to add that I think @djfountain's points are fair, but for my part, I think Simon has been very open about his plans all along and has made announcements and listened to our feedback for every major step. I understand the "not part of entitas" position because this came up in discussion many times - logically the unity specific, networking and other tools should not have been part of the Entitas top-level namespace and were only there because the architecture had not matured along with the feature development early on.

I think specifically the code generator is the problem, not the other tools. Its undeniably an essential part of entitas - it would be good if at least the reflection generator was included as source code (i can't remember off-hand whether it still is).

sschmid commented 6 years ago

To eliminate any misunderstandings: all of the Entitas Code Generation Plugins are open source. You can read the code, modify it or create your own ones. https://github.com/sschmid/Entitas-CSharp/tree/develop/Addons/Entitas.CodeGeneration.Plugins/Entitas.CodeGeneration.Plugins

Jenny is not open source but that's not a problem I'd say, because jenny itself doesn't do anything other than loading and running the plugins. The plugins are the important part and they are open source.

Fyi, I removed Jenny CLI from the GitHub release to reduce confusion, because a lot of people thought they have to use it even with the built in plugins. If you don't have the roslyn plugins you don't need Jenny CLI, you should actually prefer the Unity generate button in this case. That's why I removed it.

I was thinking to open source the roslyn plugins too, but that would result in too much support, because making this work was actually a freaking nightmare. I cannot support that. The last few months I made it work x-platform and you can get the result on the Asset Store, I think that's a fair deal.

yhslai commented 6 years ago

I fully understand that Roslyn is not open-source cause it's more like icing on the cake, but I couldn't say so for Jenny. Without Jenny we can't run code generator and it kills an essential feature of Entitas.

KumoKairo commented 6 years ago

because jenny itself doesn't do anything other than loading and running the plugins.

It's like saying that Feature is not an essential part of Entitas because the only thing it does is just calling Execute (Initialize etc.) methods on Systems.

because making this work was actually a freaking nightmare.

This is where the opensource community comes into play. It's opensource so people can contribute and lift some burden from the main owner of the framework/library. Making these things closed won't even allow other people give you a helping hand.

djfountain commented 6 years ago

Making these things closed won't even allow other people give you a helping hand.

There is stuff that I have added which I would genuinely consider adding. I looked into merging my changes with the current version and that's when I realised that a bunch of stuff was stripped out into closed-off DLLs. I'm not comfortable using them in my product let-alone contributing.

I was able to pull apart all of entitas and have it just sitting in my project folder as .cs files. The only exception is the codegenerator attributes dll which needs to be the same as the code generator one. For all other purposes this is loads better since I can see exactly what is going on and I can much more easily make changes. Why have you packaged Entitas up as it is with loads of dlls in separate solutions?

sschmid commented 6 years ago

@KumoKairo This is true, but I think we're drifting in a wrong direction.

I can't fully understand the problem. Yes, Entitas relies on code generation quite heavily but if I would have chosen any other existing closed code generator, there wouldn't be a discussion.

And to repeat: The data providers and code generators are all open source + Jenny can be customized and extended pretty easily. Jenny (among other pieces of code) turned into standalone projects and were extracted from the main code base which is a natural and in my opinion healthy process. Entitas is an open source ECS framework. It's not an open source Networking or Code Generation project.

KumoKairo commented 6 years ago

@sschmid Why is it open source? What are your goals of making it an open github repo?

KumoKairo commented 6 years ago

Why have you packaged Entitas up as it is with loads of dlls in separate solutions?

It was first introduced to allow future implementation of Entitas Kits.

sschmid commented 6 years ago

What are your goals of making it an open github repo?

Learning, growing, exchange, sharing and disussing game architecture and ECS, getting input and ideas from other people to make a better product and giving back sth to the community.

KumoKairo commented 6 years ago

Then you clearly miss quite a few of those points. Take sharing, exchanging, getting input and ideas (literally everyone here says that built-in generator should be opensource). I don't say it's bad, you will clearly get somewhere with this, but I personally don't like where this is going (and judging by the comments I'm really not the only one).

sschmid commented 6 years ago

Those are different things. Exchanging ideas and code about ECS is different from what people want me to build and share for free.

Entitas is an open source ECS framework

When I open source Jenny the discussion will continue, because Jenny relies on closed source like networking, logging, assembly management, etc. Jenny itself only contains the interface like ICodeGenerator and a class that calls each plugin one by one. Not much lost there. None of the code I extracted has anything to do with ECS. Please let's shift the focus back to ECS and accept that the used "3rd party" dependencies are not open source.

To avoid future confusion: Entitas and the code generation plugins are open source. Any non ECS related dependencies are not.

sschmid commented 6 years ago

If anyone needs or wants full source access to the dependencies, please contact me and we can find a way.

sschmid commented 6 years ago

Will close now, the initial topic of this issue is now outdated.

Feel free to keep commenting if there are any further questions.

MrMonotone commented 6 years ago

I would like to use this in a project that does not use Unity. However it seems like it was easier to do this before. I found the Pure Entitas Project. However, it does not seem to be updated. Is this project not going to be supporting that use case? Does this mean that I can no longer use the code generator in my Pure C# project? As someone who is out of the loop, this is very confusing to me.

sschmid commented 6 years ago

@MrMonotone Entitas can still be used in pure c# projects. The workflow is even easier than before, because you don't need a separate code generation project anymore. Run jenny new Entitas.properties to create a new properties file. Open it and fill out the blanks. After that run jenny auto-import -s which will setup everything for you. From then on you can use the suggested workflow with jenny server as you might have seen in the tutorial videos.

Only the Asset Store version contains the standalone code generator (Jenny) to support cutomizations and the roslyn plugins. The Unity Asset Store is the only distribution channel for Entitas, but once you've downloaded it, you don't need Unity anymore.

Hope that helps!