-
-
Notifications
You must be signed in to change notification settings - Fork 5.5k
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
Return basic statistical functionality to Base #27374
Comments
I note that
This, 100%. I will fight the "npm-ification" of Julia as long as I'm a participating member of the community. Having things ready to go out of the box was a huge selling point for me. Moving large chunks of "basic" functionality out of Base to other packages (especially third-party packages; I'm willing to consider stdlib packages like |
FWIW I agree. Is there an official decision of where precisely the line is drawn between Base, stdlib and third-party packages? I think this is a crucial definition that can totally affect the character and feel of a language, from Julia-the-language to Julia-the-platform. With the current strategy, the development of Julia-the-language is fast and nimble, but at the potential cost of a fragile/fragmented Julia-the-platform, as nicely pointed out above. |
How about matrix multiplication? Or solving a linear system? These are things a layperson understand even better than
I thought the plan was that |
Matrix multiplication is in stdlib, which is "close enough to Base" right now, I guess. I'm still not really sold on "small base, large stdlib" but as long as the functionality is being distributed and made available via a standard Julia install, I guess it's better than going third-party.
That would perhaps change things somewhat, but currently, it's not that way, and in order to use |
Yes, the plan is to move |
@StefanKarpinski until that's done, can we please keep |
No, because we can't move things out of Base later but we can move things into |
so until then the burden falls on the library developers to change where they source their functions from? That seems ... wrong, somehow. This wasn't an issue for |
Why do these need to be removed from Base at all? |
We already had this discussion and came to a pretty clear consensus at the time, I'm not inclined to rehash the whole thing. |
Seems like there's fairly broad support now for undoing it. |
PR open to revert the change. #27375 |
+1 for "moving these functions into a new stdlib/Statistics module which would ship with Julia" now. |
Here's what I would suggest:
|
Yes, I'm 100% on board with that. Can you make a PR? |
Yep, can do. |
So before, the story was "trust me, |
...they're basically the same thing though, so it would be weird to split them |
I agree with @ararslan here. It's either both or none. |
From a developer/maintainer it is just a mess to have code all over the place due to lay-man definitions (which really is more field-based than anything). The original |
Are we still going to try to do something here, with the beta tagged? This issue is still on the milestone, so perhaps it is ok to try make this change. I am personally ok with |
Since they're already removed from Base, it would be non-breaking to put them back, regardless of the name, which means it can happen any time. That said, if we're going to do this, I think we should try to do it for 0.7. I haven't moved forward with this change as there doesn't appear to be broad agreement over the names |
What's the issue in having a dependency? Especially one that is just math constants (extremely light)? If you were to have it in |
This is a bit disingenuous. It's true that it's not in Base, but it is in stdlib, which does not require any additional packages to be installed in order to use it. This is in contrast to |
Are you suggesting that this doesn't happen? Because this is precisely why the original issue was opened.
Not in LightGraphs' case. |
@sbromberger I think it would be good to mention or at least refer to your personal reasons for not wanting external repositories, in order to provide the full background to folks reading this. Also, for other discussion in this thread, it doesn't help bringing up examples of other stuff and comparing if feature x is more widely used than @ararslan I do agree we should do it for 0.7 and |
Sorry, @ViralBShah. I'm all talked out about the larger issue – most of the core team is probably sick of hearing from me by now – and we've worked around this one by removing our use of Two things I'd like to put out there for consideration:
I didn't intend to do this, and I apologize if I did. Thanks for the opportunity to weigh in, and I apologize both for not directly answering your question, and for the length of my (non-)response. |
I'd like to second Viral's point that it doesn't help to point to other things in Base like eulergamma. It's quite likely a bunch of other stuff should be removed too! When the I'll also point out that my original proposal was to move the functions to a stdlib package. In light of @sbromberger 's situation we should reconsider that --- we didn't think stdlib vs. external StatsBase was such a big difference, but apparently in some environments it is. I like the point about separating data structures and functions; julia's design makes that especially easy and natural (though apparently some people call it type piracy :) ). |
You are right, I see the flaw in my example. Of course I didn't state it as the "absolute argument against the change", but only to get a point across. |
To note, several parties have long had in mind an overhaul of the sparse data structures. That those data structures have not changed in the last three years reflects lack of developer bandwidth rather than lack of utility in being able to rapidly iterate when developer bandwidth exists :). Best! |
There is quite a bit of sparse matrix experimentation outside of Base that people have done, and having something in Base has also deterred others from trying alternate ideas (because it would be so difficult to get anyone to consider using them). But I don't want to make this about sparse matrices. :-) |
Resolved by #27834 |
not a tutorial goes by that Can we please, please, please get these three functions in base? |
What would it take to get these three back into base? |
The conclusion here was to put these in the standard library |
what would it take to change these so very common functions back to |
I think the answer is more along the willpower and making a compelling case enough to convince the core team to revert the decision. That would probably be the biggest force needed relative to the technical aspect. I am sided with the latest determination of moving those to the stdlib. To revisit the decision, I would say it would require a documented stable pattern of issues for it (e.g., soft-scope decision). |
I don't think I've seen a compelling argument to move these functions from On the other hand, I think it'd be a better use of developer time/effort to work on allowing stdlibs to upgrade separately from the rest of Base release process. Then we can work on consolidating functionality from StatsBase.jl and other "core" statistics packages to the |
Hi Jacob,
Thank you for all your contributions to Julia.
re "This is standard in every language I'm aware of out there (adding
imports for non-core functionality you're using)." : this begs the question
of what should be considered core functionality. For a numerically
oriented language like Julia, there is a sound argument that mean(),
median(), and std() should be considered core. The designers of R and
matlab did treat their analogous functions in that way.
Also, while I'm not usually a big fan of argument from authority, I do
think a request by Alan Edelman should be given particular weight. As a
co-founder of the language, he is in a special position to understand what
ought to be considered core in Julia.
regards,
Keith
…On Wed, Jul 21, 2021 at 1:41 PM Jacob Quinn ***@***.***> wrote:
I don't think I've seen a compelling argument to move these functions from
Statistics stdlib back to Base. For users, it's literally typing using
Statistics and then using the functions. This is standard in every
language I'm aware of out there (adding imports for non-core functionality
you're using).
On the other hand, I think it'd be a better use of developer time/effort
to work on allowing stdlibs to upgrade separately from the rest of Base
release process. Then we can work on consolidating functionality from
StatsBase.jl and other "core" statistics packages to the Statistics
stdlib and provide even more useful stats functionality in a very
easy/stable/"blessed" way to users.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
<#27374 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAJX646GEIHM3WGT2XSYS3TTY4BDVANCNFSM4FC4XJCA>
.
|
My argument is based primarily on around 35 years of teaching students. While functions could My argument is that students learn these three sometimes before they even learn the word "statistics" (I'm also not a big fan of argument from authority -- but perhaps argument from extensive consumer experience |
We could always re-triage this... |
keep me posted, just got another round of complaints from students especially for |
I'm neutral on this, but I think the current status is "not planned" rather than "completed" |
It seems incredibly unfortunate to me, and indeed almost actively user-hostile, to remove basic functionality such as
std
from Base. @sbromberger summarized it well in Slack: "if the function is generally understood by a layperson, it should not be removed." You don't have to be a statistics expert to understand what a standard deviation is. The collection of basic statistics functionality in Base in previous versions of Julia was fairly lean and I think struck the perfect balance of "here are the basics, now load a package if you want to get more advanced." Indeed, in therelease-0.6
branch,base/statistics.jl
is a couple hundred lines of code, including whitespace and extensive documentation. Who was it hurting to have in Base?The text was updated successfully, but these errors were encountered: