Why HTTP.jl is not in Julia Core?

Hello Julia community,

I have been using Julia for some time now and have found it to be an excellent language for various applications. However, I have noticed that HTTP.jl is not integrated into the Julia core, unlike many other programming languages that have built-in HTTP functionalities.

I believe that having HTTP functionality as part of the core could be a significant advantage for Julia. It would make it more convenient for developers to work with web-related tasks without the need to install additional packages.

I am curious about the reasons behind the decision not to include HTTP.jl in the core and whether there are any plans or discussions about integrating it in the future. As a user, I feel that having core support for HTTP would contribute to a smoother and more seamless experience, especially for newcomers to the language.

Furthermore, I wonder if there are any specific challenges or concerns that prevent the main developers from assisting in the development of HTTP.jl and integrating it into Julia’s core. Are there certain technical or design considerations that need to be addressed before such integration can take place?

I genuinely believe that collaboration between the main developers and package maintainers could lead to an ideal HTTP package that aligns with the overall goals of Julia. I am interested in understanding the development process and any community efforts that could support such integration.

Hello @DeevsDeevs and welcome to Julia Discourse,

Julia has built-in HTTP functionality in its standard library via Downloads:
https://docs.julialang.org/en/v1/stdlib/Downloads/

Now, I understand why HTTP.jl seems attractive (I am also using it) - but taking a community package and integrating it with the core language might now work for various reasons (a fast one I can think of is to not confine the bug fixes and the implementation of the future feature to the pace of Julia).

There was no such decision as to not include HTTP.jl in the core as this would be out of discussion anyway (in the same way, there is no scrutiny of community packages with the goal of including something in the core language).

I would formulate it more like “the absence of any HTTP.jl-related decisions” instead of “a decision not to include HTTP.jl”.

I can think of some packages that are closer to the language itself (like PrecompileTools.jl and JuliaSyntax.jl - but these are exceptional cases).

Given the Downloads existence and the language-related workload, I think it is understandable why the main developers wouldn’t actively participate in the development of HTTP.jl.

2 Likes

We’re actually trying to pull as many libraries out of “Julia core” as possible, particularly out of the main JuliaLang/julia repository. For the most part having a package fully integrated into Julia slows down the package’s development. The latest one to leave is GitHub - JuliaData/DelimitedFiles.jl: A package for reading and writing files with delimited values (Originally a Julia stdlib) .

In the case of HTTP.jl being outside of Julia means that it iterate faster and make some independent decisions. One important example is using OpenSSL rather than mbedTLS.

What I suppose you really want is for the package to be installed by default.

In summary, having HTTP.jl within “core” Julia will slow down it development and prevent it from making independent design choices. Meanwhile, installing the package is not very difficult.

What I am confused about is what kind of difficulties are you encountering by not having HTTP.jl installed by default? What kind of difficulties are encountering that make it difficult to install HTTP.jl? What advantages do you think having HTTP.jl in “core” bring? What problems would this solve?

9 Likes

Perhaps I was too categorical that HTTP is required in core. The question is rather that a package so important for the language should conform to the core standards, as well as be supported by the main developers.
Since there are ambiguous solutions there now, and the package itself is not in the best condition.

This is highly subjective. Many people (like me) use Julia for numerical computing and a HTTP client/server is definitely not something that is important in this case. You can say the same thing about people using Julia for web stuff; Why does Julia have linear algebra support out of the box? This is mostly for historical reasons I would say. The linear algebra functionality would most likely have evolved faster if it was not included as a standard library. Note also that even though LinearAlgebra is a standard library you have to reach for packages for many tasks. In some cases because packages do things better, and in some cases because the functionality just doesn’t exist in LinearAlgebra.

If you look at the contributors on JuliaLang/julia and the contributors on JuliaWeb/HTTP.jl you definitely see an overlap. Note though, that the skillset required to contribute to the Julia compiler and the skillset required to contribute to an HTTP client/server library do not necessarily overlap, so you can’t expect the same people to be in charge for both projects.

If you have issues with HTTP.jl I suggest you open an issue, the developers are very responsive in my experience.

12 Likes