-
Notifications
You must be signed in to change notification settings - Fork 1
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
Webstack overhaul #16
Comments
Not too much to add on the technical side from me – this looks like a great plan and I'm excited to see this stuff really moving forward! Looking at Go for inspiration is a great idea. I suggest also taking a look or two at Clojure's designs, interfaces and lessons learned – obviously the language and approach is virtually opposite from Go's and it may be useful to have another perspective when finding a middle ground for Julia. I don't think you've mentioned the higher-level components like more framework-y packages, middleware, routing etc. Obviously you may not be as interested in those parts if you're not building a big website, and instead just want to build the foundation. Arguably that stuff is orthogonal anyway; eventually it'd be great to have an established, sensible default framework as a package on top of HTTP.jl and people can play with other approaches in their own packages. |
Great thoughts Mike. Could you point me to some files/docs on Clojure web design? I'd certainly be interested in reading. Yeah, as far as higher-level components, I definitely want to avoid putting too much in HTTP.jl and really make it more of a foundation for the webstack. I have a prototype package that does endpoint mapping based on HTTP, but I'm not sure if it'll be something to promote over Mux.jl or anything. I plan on focusing my efforts on HTTP.jl before pushing more on it. |
This all sounds great!
…On 19 Dec 2016 4:05 pm, "Jacob Quinn" ***@***.***> wrote:
Great thoughts Mike. Could you point me to some files/docs on Clojure web
design? I'd certainly be interested in reading.
Yeah, as far as higher-level components, I definitely want to avoid
putting too much in HTTP.jl and really make it more of a foundation for the
webstack. I have a prototype package that does endpoint mapping based on
HTTP, but I'm not sure if it'll be something to promote over Mux.jl or
anything. I plan on focusing my efforts on HTTP.jl before pushing more on
it.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
<#16 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AAqRm7c1ie5Dr5LRXG9ciuSGLIafkCTJks5rJqtagaJpZM4LQ0iP>
.
|
I like what you're doing. One of my reasons to learn a new language (more than just the basics) is Java's lack of a basic HttpServer. Even the smallest ones around were several dozen megabytes large and required a bunch of documentation to get started. |
Good plan! I would like to point out @sorpaas's https://github.com/sorpaas/HTTP2.jl which was built during GSoC. It would be SO NICE to have a reliable HTTP2 implementation. |
Things may have changed, but AFAIK the state of the art is http-kit and clj-http for the raw HTTP client. From what I can tell they're using channels now so it won't be completely far from the Go interfaces. It'd be worth taking a look at ring which starts to get a little higher-level and then there's compojure which does routing and stuff on top of that. Compojure went through a couple of interations and I think they had some interesting design discussions – unfortunately I'm missing any links but it sounds like that side will be less relevant to you anyway. |
Julia as a language looks lovely and a working webstack with maybe even something Sinatra-like would go a long way toward exciting the Java/PHP crowds, not to mention the Ruby and Python fans looking for a more performant alternative. |
@luminarious: Please see http://julialang.org/community/standards/ regarding sexualization of the term "Julia". |
@StefanKarpinski Amended, the metaphor got away from me. |
Hey anyone who happens to still read things around here :)
I'm opening this issue to discuss some of my recent efforts in a new (still unregistered) package HTTP.jl.
The julia webstack has long been the neglected child of the julia ecosystem, hobbling along with just enough attention to still be considered useable packages, but not much else. To be fair, the webstack originally started out as a HackerSchool project that thankfully provided basic functionality, but which unfortunately has atrophied as the original authors have moved on to bigger and better things. We found an unlikely hero in @malmaud when he stepped up and fixed some glaring usability issues with Requests.jl, as well as creating the MbedTLS.jl package to fill the glaring TLS need, but otherwise, the webstack as a whole has received very little attention over the last 3-4 years.
I have some personal and professional interests around building web services in Julia, but which require a solid stack. As I researched and dug into our webstack code, I originally was just aiming to make some improvements to HttpServer, but the more I looked around, the more I realized a complete overhaul was needed. In particular, most of the webstack code used outdated idioms from 3-4 years ago and was failing to utilize some of the great new languages features that have been released recently. There were also glaring issues of rampant code duplication due to the micro-separation of functionality between HttpCommon, HttpParser, URIParser, Requests, HttpServer; as well as a broad lack of testing in most areas.
The approach I've taken to the webstack overhaul has involved:
State of progress:
I'd like to welcome anyone and everyone to provide feedback to the discussion here about what they think and ideas for moving the webstack forward. Also feel free to take HTTP.jl for a spin, it should be fairly functional already. I'd of course welcome all feedback and help designing, implementing, and testing the package from as many people as possible. Happy to open up a JuliaWeb gitter if we want a more fast-paced place to discuss if there's interest, otherwise, we can use github issues and the Julia discourse forum to discuss.
The text was updated successfully, but these errors were encountered: