deepstreamIO / deepstream.io

deepstream.io server
https://deepstreamio.github.io
MIT License
7.14k stars 381 forks source link

Future of deepstream / Contributor Callout #1030

Closed yasserf closed 3 years ago

yasserf commented 4 years ago

This is meant to be a continuation of the conversation on #867, but since so much has changed I wanted to open up a new discussion.

Over the last six months since I quit my day to day job we have implemented ALOT of new concepts and cleanups in deepstream.io, including:

1) Adding MQTT, JSON and Protobuf endpoints 1a) allowing you to easily add any other protocol seamlessly 1b) allow all those protocols to actually talk to each other 2) Adding offline functionality to the JS client 3) Adding official plugin support for over 7 core extensions types AND the ability to create custom plugins 4) Creating a HTTP endpoint that allows you to easily just register your own HTTP calls and websockets into the server, and also use the awesome uws stack across the whole networking stack. (You can even cluster lots of servers on one machine now just having redis installed locally). 5) New website in gatsby and react that is automatically generated from markdown, minus a couple main files 6) New realtime-search provider 7) Changed license to MIT 8) Adding monitoring into the opensource core 9) Added new authentication types 10) Refactored everything to actually make it easier for people to contribute, I hope

And so much more.

However, all this work has not been easy and I have spent most of my professional time working on this in the second half of 2019, with alot of <3 and financial support from companies such as backboneplm that helped me get deepstream from where it left off in #867 to where it is today.

That being said, I'm finding it hard to maintain the large eco-system that compromises deepstream alone, and although there have been core community members ❤️that have contributed there is just ALOT of things to ensure are up and running which make it more like a drop in puddle.

As such I'm now looking to move all non-core aspects to contributors, including:

Alot of these projects are only ~100 lines of code and I feel like it's a great place for people to get their feet wet with opensource and very well scoped projects in node. I'm more than happy to add author tags into any documentation and point to a repo in your github/bitbucket account, as long as it falls under a community flag.

I'm also looking for people who are looking to build and maintain SDKs in different languages. This is definitely not that easy however it's a fun project that can take a few days (for a simple one).

You can even write connection-adaptors for deepstream to allow it to understand other protocols that already exist, similar to those found on ably.io (a great paas alternative 😁).

Writing a small front-end library is easy to maintain as a sole contributor and can be taken over easily if they step down. However writing a product that is meant to rival a company backed by google like firebase and keeping it opensource is not simple.

My gut feeling is that I feel this sort of technology can help most small to medium size companies get from a concept to production with realtime tech in zero time, if used as intended. My biased view is that it is superior to other node-based tech out there, since there are barely any other node based projects that allow you deploy a scalable data-sync platform with just a couple of docker images.

However, at the same time there are a tiny amount of contributions and I had to sacrifice the majority of my paycheck in order to give it the love these last few months (I haven't exactly reached that point in life where I have a safety net to be able to continue to do that).

Anyways this is the current thought process I'm going through. Since this is open source I figured it makes sense for me to be transparent and to allow the community to provide feedback, suggestions and hopefully a couple of people to volunteer to become core contributors to motivate me to keep this project going on the long term and avoid me from potentially burning out.

Thanks for the reading!

yasserf commented 4 years ago

It's worth emphasising that the issue I'm concerned around is more around the bus factor, for example if I find myself getting a job offer I can't refuse and have no spare time to work on this, or if I literally got run over by a bus.

Even if I got paid to work full time on deepstream, I would much rather split that across multiple contributors who work on it part-time so that we can guarantee the future of this project.

IvanCaceres commented 4 years ago

Hi @yasserf,

Thanks for continually working on the product and keeping it alive,

I've been following Deepstream's development for the last few years and have experience integrating it into applications, using most of it's features (auth, records, permissions).

I could absolutely help out with any tasks and especially any react/vue framework work.

Maarethyu commented 4 years ago

I've just discovered this huge project. I haven't really used it yet but it looks very promising, and as a Node.js/backend dev/devops, I would totally put effort in this if it needs to. I'll get back after I get familiar with deepstream to see what I can do to help.

Also, congrats for building this, such a shame that it doesn't get more attention!

yasserf commented 4 years ago

Hey, so update on this is that there has been very little traction on this project and issue even after the massive push this year, and I have already started working on other projects (both as a consultant and personally to expand my skill sets) so I'm going to only focus on critical fixes until I step down completely within 2020.

Before then I will move this all to an opensource organization and pass the torch onto anyone who would like the challenge, otherwise I will mark the project as deprecated and recommend the alternatives out there instead.

Thank you all for being part of this journey! I'm really sorry it didn't work out but I hope at the very least we all learnt some interesting new design paradigms.

jaime-ez commented 4 years ago

Hi Yasserf!

Deepstream is the best solution for realtime apps, way better than firebase. I've used in production in 2 projects that are working perfectly. Since I'm still using the v3 server and client, and I imagine that there are many users out there still using the older version (I plan to upgrade soon), it might be that there's still some time to wait and let us catch up with the new version, it brings a lot of new and powerfull features that need to sink in our minds in order to integrate them into our services, before thinking all the effort was in vain.

The npm trends for the new js client are growing and the older one is still used (as I said, probably many havent upgraded yet). And not having many issues might be a good sign of a mature service..?

Of course you need to "move on" but don't throw this away, keep it in sustained animation (an opensource org would be great) and I'm sure it will keep growing in time.

I'm not capable to contribute further at the moment but rest assure that there are many still using this amazing project!

yasserf commented 4 years ago

The org has been switched to deepstreamIO which is open source btw, and it’s all MIT. Happy to hear though! 😊😁

ScreamZ commented 4 years ago

I think deepstream main pro is that it's free, easy and simple to implements.

While cloud firestore is a bit expensive when having a custom chat app and where kuzzle is a bit big to just implement real-time usage

keep it going bro :)

yasserf commented 4 years ago

I have decided to fully step down from this project, minus supporting one client for them to switch to an alternative stack.

I have tried multiple initiatives to gauge the community and users and the results are between 10 and 15 which is pretty abysmal. Realistically having someone use this in production for long term has become more a question in morals.

As such I’m going to put a ‘DO NOT USE’ notice up on the actual website and a blog post explaining it. I would have loved to pass the torch on but there isn’t really anyone, which helped making this decision.

I’ll still be accepting Pull Requests and releasing them, but I won’t be responding to anything else.

Thanks again, last update from me on this issue.

layanto commented 4 years ago

Assuming you can share the information, out of interest, what is the alternative stack the client you are supporting is switching to?

yasserf commented 4 years ago

They are sticking to deepstream for now since it fits their use case perfectly with MQTT, authentication and so forth. If they do decide to switch it will most likely be towards using a MQTT server with a redis store for persistence. They have a seperate database and API layer so it isn't as deeply integrated into their stack.

Edit:

Also been asked by the community to reword 'do not use' and 'deprecated' in favour of 'unmaintained' so that people are aware it can be continuously used in their applications. It will just be harder to get support and bug fixes than some other projects out there.

jaime-ez commented 4 years ago

Glad to see the rewording to maintenance mode!

Honest question, besides firebase, what other options exist? Parse, kuzzle, do not have the full set of capabilities, in the end I get the feeling if I change stack I'll end up rewriting a half baked deepstream anyway.

I rahter stick with deepstream and collaborate whenever I find an issue.

Finally, Yasserf if you could share why you think deepstreamHub didn't get traction? I find it hard to believe it is a technical problem rather than a sales issue. Any comments would be great.

yasserf commented 4 years ago

I fully agree with your statement that you would end up building a half baked deepstream if you decide to build it yourself. Not because I doubt your skills, but because deepstream has a lifetime of five years and hundreds of thousands of pounds of investment. Sure it has bugs (and some glaring ones at that) but that’s because it does so much and we don’t have a community that uses all its aspects.

If we want deepstream to stand against other solutions and be maintained going forward I would suggest:

1) a Kotlin and swift SDK in order to fully enter the mobile space. Or the community funds a C/C++ developer (that’s actually good) to write one that can bind to a bunch of languages. Eitherways it’s not a small task and requires $. Keep in mind theres documentation, tutorials and all that as well.

2) Community noise. I have an alert setup for every time deepstream shows up in threads, webpages, tutorials, medium pieces, etc. The community is totally silent, which either states it’s playing dead or is dead. Eitherways the outcome is the same, the project gains zero traction and doesn’t go anywhere.

3) better website feedback, issues, pull requests, etc. People don’t know what deepstream does or is unless they use it. I feel the community could easily improve upon that that so we have more eyes on it. Tutorials on react, vue, angular, react native, gaming SDKs and so forth would be golden.

Actions really speak louder than words in this case and I would much rather respond to any sort of contribution than more discussions.

It would be great if people can stick to this issue being solely around contributions. If you have specific questions or discussions please raise new issues and link them. I might come back to them in days, weeks, months or never. Right now my goal with deepstream is to see how the project will be maintained over the next few months to decide if I want to still keep any say in it or retire it entirely.

Thanks 🙏

yasserf commented 4 years ago

https://github.com/deepstreamIO/deepstream.io/issues/1068

jaime-ez commented 4 years ago

Yasserf it might be good to set github topics on the deepstream server repo, in order to appear in relevant searches, like real time, rpc, websocket, pub/sub, etc...

chansdad commented 4 years ago

I was following deepstream for a while and think it is one of the best products after meteor framework. I had my eyes on deepstream for real time application development. I liked meteor couple of years ago when i first came across it for the fact that it made everything simple .particularly how it allowed with one simple command to build the apps for ios and android devices. Its been a while since iam developing or writing apps but i had a need to write one for my own projects and started to get back and see what is the current state of various frameworks and was rather disappointed at how deepstream has not got the visibility it deserves. So meteor core team started to go with Apollo which adds complexity when it comes to reactivity. While itv is a good idea , i think it is merely a glorified query runner service and one has to still build his or her own subscriptions etc . Rethink db changes it all .. pushing updates to clients .. also when meteor gained popularity it was due to a fully baked skeleton app framework it offered .. and blaze made things even more simple.. I still dont get why one has to go with react or native script or vue etc when you can build business apps easily with blaze. Well if there are are really good tutorials detailing building an app from scratch and getting it on app stores .. it sure will attract a lot of new developers. Also i think deepstream is pitched more as a tool or middleware and that also makes itt hard for any one to see how or where they can use deepstream. I always liked process oriented frameworks .. remember the days if struts (java) .. and then there was flow4jforeclipse which made building web apps easy but it never gained momentum .. these days with low code or no code development platforms are gaining popularity . I have been looking at any that is opensource and supports flow based app development . and the closest is total.js .which also lacks documentation. I want to use deepstream for my application .. it means i have to start from scratch .. there is no project template unlike others . There should be a view framework that should be recommended or adopted as a standard. Cli tools should be made available to easily build apps for mobile devices .. i want the meteor like functionality but without the headaches and dependencies of oplog tailing and livedata that meter publishes to clients .. i think deepstream with rethinkdb or deepstream with apollo will sure address that need . What is missing is that build tools .. starter templates... My new application involves receiving data from clients in a continuous stream each client application subscribed to its own channel.. .. and sending notifications based on rules acting on incoming data to client application. . Deepstream fits perfectly as my clients are not constrained devices and i dont have to worry about protocol overhead and go about setting up mqtt .. i will share my findings and start documenting my exerience with hope some one may benefit and this great piece of software gets the attention it deserves. My coding skills are rusty..and may reach out for assistance .. if it helps .. i am willing to set up a deepstream server for public use as well .. have a decent server that is under utilized ..

slachtar commented 4 years ago

I wonder, how to donate for the development of a deepstream mobile client? I think it's also a missing and necessary piece too.

On Mon, May 25, 2020, 06:27 chansdad notifications@github.com wrote:

I was following deepstream for a while and think it is one of the best products after meteor framework. I had my eyes on deepstream for real time application development. I liked meteor couple of years ago when i first came across it for the fact that it made everything simple .particularly how it allowed with one simple command to build the apps for ios and android devices. Its been a while since iam developing or writing apps but i had a need to write one for my own projects and started to get back and see what is the current state of various frameworks and was rather disappointed at how deepstream has not got the visibility it deserves. So meteor core team started to go with Apollo which adds complexity when it comes to reactivity. While itv is a good idea , i think it is merely a glorified query runner service and one has to still build his or her own subscriptions etc . Rethink db changes it all .. pushing updates to clients .. also when meteor gained popularity it was due to a fully baked skeleton app framework it offered .. and blaze made things even more simple.. I still dont get why one has to go with react or native script or vue etc when you can build business apps easily with blaze. Well if there are are really good tutorials detailing building an app from scratch and getting it on app stores .. it sure will attract a lot of new developers. Also i think deepstream is pitched more as a tool or middleware and that also makes itt hard for any one to see how or where they can use deepstream. I always liked process oriented frameworks .. remember the days if struts (java) .. and then there was flow4jforeclipse which made building web apps easy but it never gained momentum .. these days with low code or no code development platforms are gaining popularity . I have been looking at any that is opensource and supports flow based app development . and the closest is total.js .which also lacks documentation. I want to use deepstream for my application .. it means i have to start from scratch .. there is no project template unlike others . There should be a view framework that should be recommended or adopted as a standard. Cli tools should be made available to easily build apps for mobile devices .. i want the meteor like functionality but without the headaches and dependencies of oplog tailing and livedata that meter publishes to clients .. i think deepstream with rethinkdb or deepstream with apollo will sure address that need . What is missing is that build tools .. starter templates... My new application involves receiving data from clients in a continuous stream each client application subscribed to its own channel.. .. and sending notifications based on rules acting on incoming data to client application. . Deepstream fits perfectly as my clients are not constrained devices and i dont have to worry about protocol overhead and go about setting up mqtt .. i will share my findings and start documenting my exerience with hope some one may benefit and this great piece of software gets the attention it deserves. My coding skills are rusty..and may reach out for assistance .. if it helps .. i am willing to set up a deepstream server for public use as well .. have a decent server that is under utilized ..

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/deepstreamIO/deepstream.io/issues/1030#issuecomment-633383220, or unsubscribe https://github.com/notifications/unsubscribe-auth/AATKH2VIEYKC3AYMBD42MLTRTH6V3ANCNFSM4JLQVSSQ .

yasserf commented 4 years ago

After the step down blog I have had a really friendly and interesting company reach out willing to fund me to build out SDKs for deepstream. I initially was pretty happy to start but have since turned the offer down.

The reason I turned it down is because: 1) I got 30 responses (some duplicates) of people using deepstream in the last few months. 2) Out of those thirty, 60% are using version 5. 3) Out of those 60%, 6 have enabled telemetry.

Thats 6 people who have allowed telemetry across ALL users. Not just the 30 users I'm aware of.

As such, the logical conclusions are either: 1) The userbase is tiny. 2) The userbase is larger, but unaware that the project is in crisis mode (which means they haven't seen the website in months). 3) The userbase is larger and are aware but don't want feel the need to take action, which is completely fine as well.

I have decided to step down entirely entirely from this project, including all github issues and otherwise, in October. The reason I'm adding some months is incase someone raises an issue on migration or critical bug. The only way this decision will be turned around is if number 2 or 3 in the points above are true and action is taken. This has no longer become an issue of sponsorship or funding, it's literally that maintaining an opensource project of this size needs users in order to be relevant. Having 30 opensource users on a 5 year project that had hundreds of thousands of pounds sunk into is a far definition of success.

As for the current contributors who are sitting by and watching with a concerned expression, please remember this is now completely opensource, and as such you can spend some of your time writing a medium post, tweeting or whatever else comes to mind that could effect those three points above.

Thanks.

speedysera commented 4 years ago

hello! noticed I'm too late to the party, but if this is going to be an open-source project, how do we go about contributing to it?

yasserf commented 4 years ago

hello! I mean it's been open source since it started in 2015, we just pulled out clustering and put it back in.

Depends on what you need to to contribute really. You can either add features to it for fun (not exactly recommended since it just adds more complexity) or you can look at the git issues that are tagged contribution friendly to get you started.

Generally best contribution methods are: 1) Writing a client. It's a huge task so means you gotta be pretty committed. 2) Writing guides. This can be any size you want and is usually the most fun. 3) Updating documentation. This is pretty mundane but can take a few minutes. 4) Fixing any known bugs*

I personally would say being vocal about using deepstream by either writing a small guide, tutorial or even an odd tweet here or there would have the biggest umph factor.

Hope that helps

speedysera commented 4 years ago

Thank you for these tips, I'll do my best.

As a side note, I think there was also some confusion about discontinuing this project altogether, so some of my colleagues were thinking of just forking the project in case it happens, which is a shame.. So just to clear up everything, the project will still live on right? :) I think this will also help clarify for interested contributors.

slachtar commented 4 years ago

Hello, is there a way to sponsor a contributor to develop a native mobile client? Could we for example post a project (develop a mobile client for deepstream) on one of the freelancers platforms and assign it to a contributor to work on it? Are there other alternatives, like for example adding a sponsor button to DS repo ( https://docs.github.com/en/github/administering-a-repository/displaying-a-sponsor-button-in-your-repository )?

On Tue, Jul 7, 2020 at 10:45 AM speedysera notifications@github.com wrote:

Thank you for these tips, I'll do my best.

As a side note, I think there was also some confusion about discontinuing this project altogether, so some of my colleagues were thinking of just forking the project in case it happens, which is a shame.. So just to clear up everything, the project will still live on right? :) I think this will also help clarify for interested contributors.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/deepstreamIO/deepstream.io/issues/1030#issuecomment-654734343, or unsubscribe https://github.com/notifications/unsubscribe-auth/AATKH2UH6AEQ2YF37RJGOKLR2LVE7ANCNFSM4JLQVSSQ .

-- Slah Lachtar Tel. (+216) 98 221 575

yasserf commented 4 years ago

@speedysera I'm 100% for accepting PRs and bugfixes as long as they align with the project goals. I'm wary of people pulling projects into completely different directions to fit their exact usecases, but as long as it improves the core awesome. The structure is 90% modular so you can pretty much swap in and out any part of the server if you do have a more specific requirement. Literally, any part other than config parsing.

The thing is I'm no longer dedicating personal time for adding new features or clients as I put in a few years already and I don't currently use it in my projects (as my current projects are more webapp heavy and barely touch backend services.

The notice is there to inform people that it isn't being actively maintained in the sense of day to week life, and if theres a bug you might need to get your hands dirty (or at least raise a PR).

@slachtar I can't put a sponsor button up due to legal issues (the company behind it still exists and I'm definitely not going to spend my time declaring german taxes). I'm also not going to coordinate any work with a paid contractor to build a client. We sunk thousands of pounds into that during deepstreamhub and the result was, well, you can see how the non JS sdks look (other than the ios wrapper by @akramhussein, the job itself was extremely ambitious and it was by far the best experience I had working with someone outside of a core team).

yasserf commented 3 years ago

hello,

Been a while, hope everyone is okay given the current global pandemic!

I have mostly stepped down minus a few bug fixes since my announcement and other than the odd google form being filled out every now and then there hasn't been much adoption either.

The company deepstreamHub has officially shut down a while ago, which means the project intellectual property (name, brand, logo) are tied to that entity and since it isn't exactly a project with a wide enough user base (compared to rethinkdb for example) the IP hasn't been released to/purchased by an OS escrow such as CNCF, the Linux foundation, Apache or any other.

Given the very poor adoption of deepstream doing a boot-strapped rebrand/forking exercise is probably not the best use of my (or any other contributors) time. Plus we would end up losing all the deepstream traffic + stars which would put it in an even weaker state.

So if anyone is using this in production, and is willing to finance/co-finance a rebranding exercise please let me know, my email is on my profile. Otherwise, it's been a pleasure everyone, and I wish you all the best of luck with your current and future endeavours!

jaime-ez commented 3 years ago

Hi everyone, hope you're doing fine during this COVID times.

Thanks to @yasserf for keeping the project alive, and allowing me to keep on maintining it. Since at least some of us use it in production, it's best if we keep on improving on this repo rather than have multiple disconnected forks.

I'll be focused on bug reports and fixes, make the corresponding releases and dependencies updates. I hope more people can contribute to bug fixes when they arise and make/propose new features with a concrete pull request that shows some working code or prototype.

Cheers!

MohamedLamineAllal commented 12 months ago

I wonder what is the state in 2023. I was an adopter of this project around 2019, where the best other alternative was socket.io. And deepstream was more interesting and promising. Years have passed. At times i even forget the name. And take some minutes to get it right. And it doesn't show pretty well on google.

I suggest that we raise up the marketing effort. That's one critical reason why the project didn't take the traction it should had.

jaime-ez commented 12 months ago

Hi, glad to see some interest! All great and valid points, but if good intentions don't become pull requests nothing changes.

If you can start by making the website more attractive go ahead, I'll be happy to review PRs, just keep using docusaurus.

Best