Does 0.7 support REQUIRE?

I did in fact look at JuliaPro a few months ago, but I just found it too much – I just want to open a terminal, type julia and be done. In 0.6.x the way to manage packages was simple, elegant and required the least amount of hassle. I do get that development breaks stuff and that developer need a fine grained control, but I am not a developer and I do not care. I do not want to develop julia, I just want to use it. Managing it is a chore I accept, but I like small chores.

I think we’re at an awkward point for that, because the update from 0.6 to 0.7 and eventually 1.0 changed a lot of thing. Package developers and maintainers are scrambling, with different levels of success, to patch and update their packages and a lot of things are not working smoothly in 0.7. So, I understand your pain, but that phase should pass and your wish to just download and use should happen. I’m also a “pure user”, although I might have more interest than you in developing, but I believe everybody wants to get to the point you want. This is, in essence, a business and the creators do want to benefit from all their work. And they realize a seamless user experience for new users is very important.

Add the packages you want with Pkg.add("..."). Support for REQUIRE as in .julia/v0.x does not exit.

It needs to be clearer somehow that people should not be modifying the Manifest file.

Do not get me wrong, if there is a different way of getting what I want I am happy to learn it – what I find a bit off-putting is that I see a highly complex, fine grained, powerful and yet complicated and incomprehensible new approach that does every thing under the sun but does not give me a simple straightforward line ‘if you do not care and just want your packages do X’. At the risk of mentioning the competition, in R I just have one version, and one straightforward way to install packages with their dependencies. Is this great for developers? I would not know. Possibly not. But it is straightforward.

It is literally what one did in 0.6 so not sure what the problem is.

You only need to add packages once. Once they are installed doing Pkg.update() will still track your packages and update all to a more recent version, if available.

If you want to use the REQUIRE file you already have just do

using Pkg
for p in readlines(homedir()*"/.julia/v0.7/REQUIRE")
    Pkg.add(p)
end

But then you should just add any other package you want through the terminal, not through the REQUIRE file.

This is not what I did. As I said above, I had ~/.julia/v0.6/REQUIRE specifying what to add and keep up to date, and all I used to do was Pkg.update() which would read REQUIRE, keep stuff up to date and add stuff that I added to the REQUIRE list.

Every package that you once Pkg.added will be updated when you do Pkg.update(), the only change you have to make on your “workflow” is, instead of adding new packages to the REQUIRE list, you should now open a julia session and Pkg.add that pkg.

Having to use the package manager at all to add packages and calling Pkg.add an

seems excessive at best.

X = Pkg.add.

It is the same in julia, it is Pkg.add

You can pretty easily get back your previous behavior though, put

import Pkg

function Pkg_update()
    pkgs = readlines(joinpath(homedir(), ".julia", "REQUIRE"))
    Pkg.add(pkgs)
    Pkg.update(pkgs)
end

into ~/.julia/config/startup.jl and then move the REQUIRE file to ~/.julia.

Use Pkg_update().

1 Like

Kristoffer, you seem to assume that I invented the use of REQUIRE. That is not so. That was whatever way to specify what packages I required howevermuch time ago I installed julia for the first time, and that was that. This approach worked without me having to do anything aside from creating a new v0.x directory with REQUIRE in it at any 0.x change, and it has always worked flawlessly invoking Pkg.update(). So, until 0.7 I had to put 0 though and 20 second of bash in getting what I needed in a way that was consistent, standard, and imposed upon me by whatever doc and method created whenever in the past stating ‘this is how you install and keep up to date any packages you might want in julia’. I did not make this rule, I just followed it, and it worked until 0.6.4.

So I am perfectly happy to say that breaking this convention has forced me to wade in the incomprehensible logic of ‘Pkg is designed around “environments”: independent sets of packages that can be local to an individual project or shared and selected by name’. Who on Earth… I am not planning to play with the damn thing, but to do work with it. One install, one version, one set of up to date packages. End of. REQUIRE provided one simple, logical and consistent way to achieve that. REQUIRE is not supported anymore? I can live with it, though, pray, how do I get the same functionality, ideally with the same ease?

Finally I am happy to ask a friend to translate in Swedish if the nuance, or any of the above is not clear to you.

If you don’t care about environments, don’t use them. It’s purely an optional feature that happens to be quite useful for some workflows

You can use the old package manager, called OldPkg at 0.7, and available at GitHub - JuliaAttic/OldPkg.jl: Julia's old package manager in 1.0 or use the workaround I created for you at Does 0.7 support REQUIRE? - #22 by kristoffer.carlsson which should allow the same workflow (keeping a list of packages in a file) and calling a function to add / update based on those packages.

Let’s try keep it a friendly technical discussion, no need for these type of comments :slight_smile:

1 Like

Federico, please let’s try to keep this calm and focussed. Rants and ad-hominem remarks are neither necessary nor appreciated.

From a user (i.e. not package-developer) perspective nothing really changed regarding package installation for 0.7/1.0.

Please try to install the packages you need, on 0.7/1.0, optionally with the helper function Kristoffer provided you with.

If this does not result in what you expect, please describe the exact steps (simply copy & paste the entire REPL session, commands + outputs) you tried, and what is different from the behavior you expected.

Thanks.

3 Likes

This is fair enough, but I really think your experience will be as seamless (or moreso) with the new package manager. Once you’ve got the packages you want installed, ] up gets you all the latest versions. You don’t need to worry about managing anything else.

You started using the language before it was baked, and you knew that. I commend you, I think it’s great. But you had to expect there’s be some friction in the updates, even as a simple user (TBH, that’s mostly what I am - the packages I develop are basically glorified includes for the stuff I’m doing anyway).

Even more undeserved credit – I am not an early adopter! I deny that! you suggestion above did work, and I am happy to learn how to manage packages in a different way. As you say, things might not be fully baked, and I got caught out by the fact there was a change, and the documentation available seems to be aimed at people who are substantially more skilled and invested in development than I am, and does not yet provide a direct answer to my ‘keep stuff simplest’ approach. I guess that had I waited a couple of weeks this issue would have not been there – maybe!

Let me recap this thread:

  1. You had a technical issue with upgrading to a brand new version of free software that many people spent a tremendous amount of time and effort to provide you with.
  2. One of those people provided a working solution for you.
  3. You responded with an abusive and rude response, including a totally unnecessary swipe at his nationality.

You may not have, but I did design both REQUIRE and the new Pkg system and frankly this kind of interaction makes me almost regret not retaining the ability to omit certain specific persons from the license under which they’re released. There is a very simple equivalent of the old REQUIRE file in the new Pkg system, which Kristoffer’s solution generates for you. If this thread had been polite rather than abusive, I would have been more than happy to explain clearly and simply how you can have the exact same workflow that you’ve grown accustomed to in previous Julia versions, but I don’t think that rewarding such behavior sets the right example, so I won’t. Moreover, consider yourself warned that this message crosses the line and is a clear community standards violation. It’s understandable that you’re a bit frustrated and may have overreacted, but please consider your posts more carefully next time because a repeat of this kind of behavior in the future will lead to you losing the privilege of asking for help on this forum.

2 Likes

I have dealt with enough FOSS software, and I am an academic, so know for a fact that unless people are personally wealthy or time rich, nobody does things without some funding and a justification for said funding. ‘Users’ or ‘enterprise’ are the justification for academic and private funding in the case of software. So I would put my comments in ‘user feedback’. I do not claim it is a useful feedback, but it is feedback nonetheless.

Indeed, Kevin Bonham, whom I thanked. I would argue my interaction with Kevin was pretty civil.

I would argue the same about Kristoffer, in fact I did argue that the message ‘I just did what was in the manual whenever I started trying julia’ was ignored and I was aggressively told that things are exactly the same in 0.7 as before, which is patently false. As English in neither Kristoffer’s nor mine first language I do have concerns that it is the shared use of English that is the issue here.

As you have designed both REQUIRE and Pkg, here is my feedback. I do understand that development does break back compatibility, and I understand that writing manuals is a massive chore, and I do understand that the paragraph ‘if you used REQUIRE before and are not interested in a more fine grained approach, you might simply do X and have the same functionality’ might have appeared (might still) in the doc, said info was not in said docs yesterday. As I said, I am 100% sure that ‘users’ and ‘enterprise’ are the only things that can be used to justify asking for funding (short of personal independent wealth) for the continuous development of julia, I feel perfectly justified to ask the question and provide the feedback that, while I do understand Pkg is powerful and whatnot, and all its capacities need to be presented to developers, for users who do not care about development it might be helpful to provide a succinct and to the point line ‘REQUIRE is deprecated/not supported, now just do X to keep working’.

Kristoffer’s code automatically turns your old REQUIRE file into an equivalent Project.toml file which you can use in a similar way.

Extensive experience with FOSS means you have less excuse to be abusive to open source maintainers than someone who was coming to FOSS for the first time. The fact that someone was compensated for their work which you use for free does not entitle you to treat them poorly.

There is no need to discuss this any further and there is no room for debate: do not be rude or abusive to anyone on this forum.

5 Likes