Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Is the Project dead? #1251

Open
ms123s opened this issue Dec 13, 2021 · 17 comments
Open

Is the Project dead? #1251

ms123s opened this issue Dec 13, 2021 · 17 comments

Comments

@ms123s
Copy link

ms123s commented Dec 13, 2021

13 months no change?

@calebpower
Copy link

I think that @perwendel went off to go do other things, mentioning as much in #1155. We shot off an email to see if he had found a maintainer but never heard back. It's my hope that he either finds one, or that one of the 1.5k thousand forks this thing has is being maintained for security patches at the very least... otherwise we're stuck with either maintaining a project in-house or migrating frameworks.

@HeikoBornholdt
Copy link

HeikoBornholdt commented Jan 12, 2022

The developer gave an update on Twitter a few months ago. He plans to revive the project soon.

https://twitter.com/sparkjava/status/1433414111069626371

@lepe
Copy link

lepe commented Jul 7, 2022

Meanwhile, I'm merging most of the PR into this fork: intellisrc/spark/. Many people have spent a lot of time fixing issues and we (consumers) want to see those patches applied. I'm not planning in resolving the issues myself, but I want to give those patches some light in this project. Unfortunately some of those PR won't merge easily (or break something), so I won't be able to merge them all. You can see the status of those merges here : https://github.com/Intellisrc/spark/blob/master/PR-STATUS.md
I hope @perwendel can have the time and resources to continue with this amazing project.

@perwendel
Copy link
Owner

@lepe
I'm very grateful for all the fixes and patches people have done. I wasn't aware of the fork and will have a look at it.
Hopefully we will be able to get most of it into the main project!

@lepe
Copy link

lepe commented Jul 26, 2022

@perwendel I'm using Spark in my library: intellisrc/icl in the web module. The library is focused mainly in groovy but can be used in java or kotlin. Although the way of using Spark is different.

I would be happy to help merging some of those PRs if you don't have the time at the moment (If you want, you can authorized them and assign them to me). Or... feel free as well to merge my changes (probably except pom.xml and build related files, as I'm not using travis and I'm publishing through sonaytpe). I have used my version in a few projects now and so far I have found no issues.

Another fork you should take a look at is: Clivern/Flare:

Flare v3 will have some enhancements to Spark v2. Here is some notes for the upcoming changes:

It will have most of the bug fixes, we were waiting for.
It will support modern LTS Java versions (Java 8, Java 11, Java 17).
Migration from spark into flare will be minimal. Just a matter of changing import paths from spark to flare and rename classes to have Flare rather than Spark.
Flare v4 upward will have a breaking changes, new features ... etc.

@buckelieg
Copy link

Any updates on this?

@lepe
Copy link

lepe commented Apr 24, 2023

As of now, I haven't received any updates from @perwendel. However, I plan to address some security warnings by updating dependencies this week. I also have plans to integrate HTTP/3 support and upgrade the code to Java 11, but due to my current busy schedule, I'm waiting for a more suitable time to start working on these updates. It's possible that I'll be able to implement these changes within the next 2-3 months.

By the way, is there a particular issue that you need help with? Whether it's a bug that needs fixing, a feature request, or a PR that needs merging, I'd be happy to assist you in any way that I can.

@buckelieg
Copy link

buckelieg commented Apr 27, 2023

As of now, I haven't received any updates from @perwendel. However, I plan to address some security warnings by updating dependencies this week. I also have plans to integrate HTTP/3 support and upgrade the code to Java 11, but due to my current busy schedule, I'm waiting for a more suitable time to start working on these updates. It's possible that I'll be able to implement these changes within the next 2-3 months.

By the way, is there a particular issue that you need help with? Whether it's a bug that needs fixing, a feature request, or a PR that needs merging, I'd be happy to assist you in any way that I can.

@lepe Thank you for your proposal.
In particular I need this PR to be merged. I wish I would know how to merge any PR to my local fork of this repo to not to disturb anyone.
And eventually such a great framework with a huge number of stars lies dormant in oblivion...

@buckelieg
Copy link

Hi, @lepe! I just wonder if it is possible to implement new features straight to your repo? I think this issue needs to be implemented somehow. Is there any opportunity to do this? Thank you!

@lepe
Copy link

lepe commented Jun 19, 2023

@buckelieg : Yes, I think I can add that feature. I don't think it might take time. I have been preparing the next release but I got stuck trying to implement / merge the Server Sent Events feature. It seems to break WebSockets (as their implementation is very close, it seems to me that the code conflicts). I have updated Jetty and Java version as well but I also had an issue with the testing web client that now fails to connect to HTTP/2 when using SSL. Bottom line: I will implement the multiple static file locations feature and try to fix the client issue in the tests. Unfortunately, I would have to postpone the "Server Sent Events" feature for another time.

@tipsy
Copy link
Contributor

tipsy commented Jun 19, 2023

@lepe SSE should be very different from WebSockets. You can use a single GET endpoint, put the request in async mode, and put events on the outputstream.

@lepe
Copy link

lepe commented Jun 29, 2023

@buckelieg good news:

I have released 2.9.4-unofficial-5 which include:

Improvements:

Bug fixes:

NOTE: release 5 won't work with Java 8 anymore.

@tipsy I have never used SSE and I don't know the details for its implementation. I merged the PM#380, which seems to me, very close to WebSockets, but it broke the WebSocket implementation. As my code is already different from the original code, there is a chance that I did a mistake during the manual merge. If you have time, can you try to merge it into the release 5 of my fork? If you make it work, I can include it in release 6.

NOTE: At the moment there is no fully-working implementation for HTTP/3 in Jetty. If you need HTTP/3, please take a look into Kwik and Flupke projects.

@tipsy
Copy link
Contributor

tipsy commented Jun 29, 2023

@lepe I have left this project, but I have implemented SSE before. I'm not sure how much I remember of Spark, but basically you need a Route (the (Request, Response) -> String interface). Inside of your route you'll want to set som headers:

httpServletResponse.apply {
    status = 200
    characterEncoding = "UTF-8"
    contentType = "text/event-stream"
    addHeader(Header.CONNECTION, "close")
    addHeader(Header.CACHE_CONTROL, "no-cache")
    addHeader(Header.X_ACCEL_BUFFERING, "no")
    flushBuffer()
}

Then you'll want to HttpServletRequest#startAsync, and create an emitter to send messages on the HttpServletResponse.

The classes you might want are:

  • SseClient (the public API for the user)
  • SseRoute (the Route with the settings above)
  • SseEmitter (responsible for sending responses)

When the user calls Spark.sse(sseClient), you attach the SseRoute with the SseClient. The SseClient calls the SseEmitter when the user wants to send data.

The code you have merge is a lot more complex than it needs to be, a SSE is basically just a fancy GET request :)

@buckelieg
Copy link

@lepe that is JUST amazing!
BTW, didn't you think, that your fork to become separate project? I mean that this one stays more and mode obsolete without these changes.. may be it it reasonable to modify its name, cut other servers support (e.g. tomcat) and concentrate on Jetty, but introduce some specific features that won't ever been introduced with multiple servers support? Like user session management etc.? I understand that this proposal looks wierd, but it seems that there are no chances for this one to become awakened anymore...

@lepe
Copy link

lepe commented Jul 21, 2023

Hey @buckelieg, I really appreciate your comment and support!

I've already got another library that's taking up most of my free coding time. So, it's kinda tough for me to commit enough hours to maintain my fork as a separate project.

Honestly, as @perwendel has shown some interest in keeping Spark alive, I don't want to fully take over Spark either. The current Spark community isn't huge, and I'm worried it's shrinking because things have gone stale for a while. I'd rather not rename the project and risk splitting the community even more.

Ideally, if @perwendel could merge my fork, I could keep helping out with patches. But I don't see that happening anytime soon.

Lately, I've been thinking about stopping maintaining my fork. My library doesn't depend on Spark anymore (it used to depend on a small part of it). I've integrated Jetty directly, which has allowed me to implement new features easily (like SSE).

Keeping Spark alive takes time, and I don't personally gain much from it. But I do understand how crucial it is for users to have security patches, bugs fixed and important features implemented.

If we can gather a team of around 5 contributors (including myself), I'd be totally up for turning my fork into a whole new project focused solely on Jetty. As you said, we could bring in some awesome new features.

Alternatively, you could help me in making my web module @ gitlab @ github more user friendly and feature rich.

So, what do you think?

@ThraaxSession
Copy link

Sad how projects die which had big potential.

@baubakg
Copy link

baubakg commented May 11, 2024

Hi I am a big fan of this project, and use it in an open source project I maintain. It would be a pity i this project is not maintained. If needed I can also help.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

9 participants