NIX conversion fails on Python Repl

Bug description:
This repl cannot be opened other than in “cover page” mode.
It can be “run” in that mode, but it cannot be forked.
Forking (or trying to open in edit-mode) or doing anything that triggers the NIX conversion locks up and never finishes saying

We are upgrading your Repl to the latest environment.

Please wait…

This may take a few minutes.

That message has been spinning for 30 minutes and after multiple refreshes and retries. This is happening iwth other similar Python repls as of this posting

Expected vs Current Behavior:
The repl should be converted in 30 seconds or less

Steps to reproduce:
View the repl
run the repl (it should work)
fork the repl… see NIX spinning (repl never gets converted)

Bug appears at this link:
https://replit.com/@cstutormarin/cs138classcaraddinitconstructorpracticesolutionNIXED

Screenshot(s)/Screen Recording:

Browser/OS/Device: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36

Replit Profile: https://replit.com/@cstutormarin

Hello, it looks like the cause of this problem is that the repl is missing configuration files:
.replit (important), replit.nix, pyproject.toml
These files are quite important and are in the old python templates too. Edit: some really old python repls do not have these.

While nix conversions can be buggy, it looks like it doesn’t work on repls without configuration files (edit: fixed).

2 Likes

You can also try adding ?skipMigration=1 to the end of your repl link to skip the migration, then download the files and put it in a new repl.

3 Likes

Update: It appears that replit pushed a fix for this issue last night.
(thank you Replit (genuinely) - you have probably saved 100’s of long-standing python users 1000’s of hours of time).

In Summary (as best as I can tell) :

  • Early adopters of replit python repls have not been able to use their “1st generation” python repls since replit never included or required configuration files in those repls. The nix conversion failed and these repls could not be edited or forked (or shared). “Manual recreation” of these repls was suggested as a solution, which works for casual users, but not “at scale” for people who use the platform professionally.

  • Newer users with “2nd gen” python repls which included these configuration files enabled the nix conversion process (notwithstanding other library issues that may still persist)

  • At some point in the planning for the nix conversion software, the decision was made to abandon (or just forget) to manage conversion of these 1st gen python repls. As with most professional software platforms, some advance warning needs to be given before abandonment of older versions of “data”, especially if those older versions of data have continued be used and have worked fine (and still do work in cover page mode).

  • It is worth pointing out, for long-time users who rely on the replit platform “at scale” on a day to day basis, that this is not the first time infrastructure changes have disrupted service, especially in regards to forward compatibility of “old repls”.

To keep things in perspective, it is always helpful to consider the aggregate hours spent by all affected users to “manually work around a bug” (in this case rebuilding “abandoned repls”), and then to divide that time by the number of hours it would have taken a replit developer to simply address the issue. If that quotient is a large value (which it usually is), then it is a far more strategic decision for replit to invest in more comprehensive software design and testing, than to play “whack a mole”, which it seems to have done in this case.

If replit wants to be considered a professional tool that can be relied upon by professionals, its product and engineering management needs to step up its game and address these conversion issues more comprehensively out of the gates. Granted, recruiting professional users may not be the grand plan for replit, and that is ok too. There are many hackers and casual users who do not need or care about persistent data support. There’s a business in that, but it is not a professional one.

Finally, I should point out (and have suggested in the past), if replit would simply provide a UX-based tool that allowed any repl to be “instanced as” a different repl type (“user beware”)… this simple UX feature, if well-designed would provide a more scalable work-around for this type of infrastructure failure, which inevitably will continue to happen.

All said, thank you replit for fixing this… I think the fix is sufficiently comprehensive to allow nix to do its thing. If I find otherwise, I’ll update this thread.

3 Likes