curriculum icon indicating copy to clipboard operation
curriculum copied to clipboard

All courses: Remove Replit

Open Eduardo06sp opened this issue 1 year ago • 29 comments

Checks

Describe your suggestion

To put it succinctly, I have no idea what benefits we get from using Replit instead of GitHub.

I was looking for similar issues, but instead, I actually found several drawbacks to using Replit including, but not limited to:

  • Having to pay to have a public deployment of your project, this used to be free
    • I had trouble finding any information mentioning how they removed the "run" button for our projects (that would let anyone run it, for free), but this describes their new payment-based model for deployments: https://blog.replit.com/hosting-changes
  • Having a fork limit (of 3 repos) - discussed in #28412
    • Also in their pricing page (https://replit.com/pricing)
  • Having AI-assistant features enabled by default - discussed in #26551
    • Their site shows how to disable it, so I assume it's still the case (https://docs.replit.com/faq/)
  • Having a development time limit (of 600 minutes/month) - reported in Discord: https://discord.com/channels/505093832157691914/543074220691947531/1301859947834769448
    • This may have increased to 1200 hours/month, per their pricing page (https://replit.com/pricing)

If we agree to make this change, then I can dig deeper and get all the Replit links I can find. In the meanwhile, this is The Odin Project's Replit profile, which indicates what lessons use Replit: https://replit.com/@OdinProject

Path

Other / NA

Lesson Url

https://www.theodinproject.com/paths

(Optional) Discord Name

Eduardo06sp

(Optional) Additional Comments

Progress: https://github.com/TheOdinProject/curriculum/issues/29054#issuecomment-2478522413

Eduardo06sp avatar Nov 06 '24 06:11 Eduardo06sp

I would add that the Replit repos need updating as the config files are outdated. Pressing the run button causes nothing to happen now, and the user will have to click on the shell window and type node index.js to run the code.

The four Replit repos are from this lesson: https://www.theodinproject.com/lessons/foundations-data-types-and-conditionals

I believe the use was to allow the user to quickly try JavaScript coding by solving the short problems in the repos.

bizarf avatar Nov 06 '24 22:11 bizarf

@TheOdinProject/maintainers I vaguely remember a past discussion about migrating to Stackblitz for these sorts of exercises (inc. codesandboxes e.g. from the React course)?

mao-sz avatar Nov 07 '24 14:11 mao-sz

@Eduardo06sp Does TOP uses Replit just for the 4 exercises already mention here? when I was doing the exercises I got confused using Replit. So I suggested some changes to the content to avoid confusion but, if you guys are going to migrate, I think it's better to wait for the decision about the tool you guys are going to implement.

ccooffoo avatar Nov 12 '24 20:11 ccooffoo

@ccooffoo I haven't done a thorough search, but I think that may be the case.

I need to go through the lessons and double check. I'm wondering if we can just copy them over to a GitHub repo and have the same exact functionality as before without all those drawbacks.

Eduardo06sp avatar Nov 13 '24 07:11 Eduardo06sp

replit has a 1200 minutes per month limit on development time https://replit.com/pricing , which has resulted in some users getting timed out in just 2 days accidentally because it would count the time even if u just leave the tab open or don't log out

replit is also mentioned in how to ask great question page and the odin bot commands in discord and in many ruby lessons too so we should remove it from there too - https://www.google.com/search?q=site:theodinproject.com+replit

XAJX179 avatar Nov 13 '24 09:11 XAJX179

I need to go through the lessons and double check. I'm wondering if we can just copy them over to a GitHub repo and have the same exact functionality as before without all those drawbacks.

@Eduardo06sp I think you're right, we should be able to add them to the JavaScript exercises repo. All the prerequisites with using Git have been covered by the time these exercises come around. Theres no strong reasons for them to be in Repl.it as far as I can tell.

KevinMulhern avatar Nov 13 '24 12:11 KevinMulhern

@KevinMulhern @Eduardo06sp I think the exercises could be moved to the JavaScript exercises repo, but another thing will have to change to accommodate that: the position of the node install lesson, which currently doesn't happen until very late in Foundations. Without node installed, learners have no way to run JS programs locally.

I don't think that's a huge deal or anything, but it's just something to keep in mind.

JoshDevHub avatar Nov 13 '24 17:11 JoshDevHub

@JoshDevHub A quick grep search indicates that the only place we actually have Replit exercises is for Data Types and Conditionals (https://www.theodinproject.com/lessons/foundations-data-types-and-conditionals#assignment).

Most of the rest of the mentions are scattered throughout the Ruby lessons, but we can just leave IRB as the recommendation. There are a few other places too, but without any actual exercises.

To get to my point, all we would need to do is move the Installing Node.js lesson back a little so it's right before Data Types and Conditionals, which is still in the same JavaScript Basics section (https://www.theodinproject.com/paths/foundations/courses/foundations#javascript-basics). The change honestly does not seem drastic as it would only be moved a few lessons back. I think it would still remain at the same level difficulty for users going through the curriculum.

Eduardo06sp avatar Nov 14 '24 08:11 Eduardo06sp

I am now willing to work on this issue, as I'm not sure that this would be a good Issue for a first-time contributor.

If I get the green flag to proceed on this, I can produce a list of changes that need to be made, and get that approved before beginning my work on it.

Eduardo06sp avatar Nov 14 '24 09:11 Eduardo06sp

Thanks @JoshDevHub, I forgot that was a prerequisite.

I think we're good to go @Eduardo06sp!

KevinMulhern avatar Nov 14 '24 12:11 KevinMulhern

Changes sound interesting. In my case, after reading this text: —To get started, you will need to create a free Replit account.—I got little confused because I thought the exercises would open a .js file or folder to add in vscode and run the code.

I'll follow up on the changes.

ccooffoo avatar Nov 14 '24 14:11 ccooffoo

@KevinMulhern Please assign me, and let me know if this looks good to you:

Criteria for approval:

  • [x] Create 4 new exercises in our javascript-exercises repo - https://github.com/TheOdinProject/javascript-exercises/pull/509
    • They will be similar to the 4 exercises we currently use Replit for: https://www.theodinproject.com/lessons/foundations-fundamentals-part-2#assignment
    • Please note this will take me a little longer, as I will modify every exercise to match the style of rest of the Javascript exercises (including writing any tests as needed)
  • [x] Move the Installing Node.js lesson so it is right before the Data Types and Conditionals lesson - https://github.com/TheOdinProject/theodinproject/pull/4870
  • [x] Update lessons that reference the javascript exercises, since I am adding new exercises that will change the order a bit - https://github.com/TheOdinProject/curriculum/pull/29161
  • [x] Add note to the Array and Loops lesson, reminding users that they should have done the Node.js installation lesson
    • Since this is the point from which we would be moving Installing Node.js further back
  • [x] Remove Replit mentions in Join the Odin Community lesson - https://github.com/TheOdinProject/curriculum/pull/29180
  • [x] Remove obsolete Replit instructions from Basic Informational Site (Node.JS project)
  • [x] Remove Replit mentions from various Ruby lessons, leaving IRB as our recommendation (where applicable)

Eduardo06sp avatar Nov 15 '24 10:11 Eduardo06sp

I know @MaoShizhong mentioned perhaps sticking to another platform. I was under the impression that we could just stick to GitHub and follow the same kind of pattern that all the javascript-exercises files follow.

To elaborate on my plans, for each exercise, I can create:

  • a README that describes what to do
  • an exercise file
  • a test file
  • a solutions folder

This may be overkill, but I think it would be a lot less confusing than forcing users to go to an entirely different platform (Replit). I honestly got confused trying to navigate Replit and following the instructions a few moments ago when I tested it out.

However, I don't mean to overstep any boundaries or sidestep any discussion you guys may have held about it. I am just eager to help improve things at least a little. :}

Eduardo06sp avatar Nov 15 '24 10:11 Eduardo06sp

My recollection of Stackblitz stuff was only a vague one and I think was more related to codesandbox stuff from quite a while back, but wondered if there may have been a unified approach here. I like the javascript-exercises approach, though that definitely will require the Node installation lesson to be brought way forward. It would also then mean a "reminder" about the Node installation lesson ought to be added to the first lesson after the current Node installation position that has js exercises. Otherwise, anyone between the new and old Node Installation lessons would be massively caught out and miss it.

mao-sz avatar Nov 15 '24 10:11 mao-sz

Thanks for the breakdown Eduardo, it looks solid to me!

KevinMulhern avatar Nov 15 '24 11:11 KevinMulhern

I am still working on this (as time permits) and will soon update the acceptance criteria comment I made above with more specific progress / PRs.

So far I have "transferred" the 4 exercises to our javascript-exercises repo along with proper README instructions. No pull request yet, but this was the part that I believe will take longest as I had to change some things.

I plan on updating that assignment portion (https://www.theodinproject.com/lessons/foundations-fundamentals-part-2#assignment) with super basic instructions to help transition users into our javascript-exercises repo.

The rest is a lot more straightforward.

Eduardo06sp avatar Nov 26 '24 09:11 Eduardo06sp

@KevinMulhern Everything's ready to get checked.

I noticed that the Node.js installation lesson relocation PR was merged already, so I'll just wait for the rest of the PRs to get reviewed (see my earlier comment for an overview).

I am still left with one concern: exercise 01_helloWorld may be a bit too complex for a beginner who was just introduced to JavaScript, especially with it mentioning functions and return (they will not have been introduced to functions at this point). I did throw in a rather sparse exercise overview in one of my PRs. I was thinking of creating a new exercise (such as 00 - Preface) to create a dead simple introduction to them, but I think new users will be okay with the exercise 01_helloWorld as it is already.

I actually did the Replit exercises before transferring them over, and I found Replit (and some instructions in the exercises) to be very confusing at first, so I believe these changes are already going to be a vast improvement over having users learn a whole new platform (Replit). I was just left with that mild concern.

Eduardo06sp avatar Dec 11 '24 09:12 Eduardo06sp

I agree regarding the h01_helloWorld exercise. It is a little confuse because the instructions assume some knowledge about functions and the use of node. I was able to learn how testing the helloWorld exercise works but I had to divide the content to check step by step the concepts.

Regarding the Replit exercises, I prefer how the content is structured now. Thanks for the contribution!

ccooffoo avatar Dec 14 '24 05:12 ccooffoo

@ccooffoo Thank you for your input. I was actually going to give you a heads up about these changes once I had a little more direction (since you expressed interest in following along).

What did you have to do in order to understand 01_helloWorld better? Do keep in mind that there was always the difficulty of getting used to the javascript-exercises repo in general.

Honestly, 01_helloWorld always seemed a bit too detailed. If I add an introductory lesson, I could put a lot less detail, make it easier, and have 01_helloWorld be 06_helloWorld instead, with its more "advanced" explanation.

Eduardo06sp avatar Dec 14 '24 06:12 Eduardo06sp

@Eduardo06sp Sure:

To understand better 01_helloWorld, I had to divide the structure of the blocks of code; I use small mind maps to associate the sub-blocks, for example the sub-blocks (describe, test, expect and .toEqual) so I can remember with more supporting information (images and behaviors); I know it sounds weird but its want I do when I first read the information that has block of code.

Then I associate the behaviors with the structure to get familiar with the pattern, and then do the exercise, and iterate if I have errors. But the mini mind maps help me to understand the code and that way I can have a clue of what to do when I have an error, or something is not going the way it should be.

By the way, the way you guys write the content of the lessons, is way better than other resources I checked. I can see the effort to keep it simple, friendly and clear.

ccooffoo avatar Dec 14 '24 07:12 ccooffoo

@ccooffoo I really like that you have a system in place to help with your own learning.

However, do you think there was anything confusing about the 01_helloWorld lesson itself? Even looking at it right now, it feels like a lot to take in as an introduction.

I do agree that the lessons are very well-written, and I'm glad I haven't had to touch the lessons themselves too much. Otherwise, I could make things worse! :grin:

Eduardo06sp avatar Dec 14 '24 07:12 Eduardo06sp

@Eduardo06sp As an introduction, yes, it's somewhat complex because it doesn't seem like something introductory, it's more like a part of a "testing" lesson. I was like -Is this an array/loop exercise or a node.js related topic.

The first impression to me was to print an array using 'Hello World' or something like that, not precisely to learn how to test exercises.

But I decided to take the -Ok, let's do it! Procedure haha

ccooffoo avatar Dec 14 '24 07:12 ccooffoo

@ccooffoo There are 0 mentions of arrays in 01_helloWorld, so I'm not sure about that part. In addition, users at that stage will not know what an array is.

I suspect that users will be okay doing it this way, but I'll wait and see if I get the green light to create a new introductory lesson.

Eduardo06sp avatar Dec 14 '24 08:12 Eduardo06sp

@Eduardo06sp Oh no no, there's 0 mentions of arrays in 01_helloWorld, I'm just saying that when I checked that exercise (01_helloWorld) I didn't expect a "how to test the code", I thought it was something like printing 'Hello World!' as a string or making an array with the words, because the lesson is Arrays and Loops.

That's the reason of doing all the stuff I mentioned to master the concepts. But this is all about, to learn.

The green light you need, is for changing the introductory lesson of JS?

ccooffoo avatar Dec 14 '24 17:12 ccooffoo

@ccooffoo yeah, the green light I'm waiting for is to hear what the maintainers think I should change (if anything).

I'll stand by in the meanwhile.

Eduardo06sp avatar Dec 21 '24 05:12 Eduardo06sp

Has there been any update on this? I submitted my project for the Basic Informational Site in the Node course and looking through everyone's Live Previews on Replit none of them were live, just a heap of dead Replit screens. I found one guy whose code was live through Github pages, so I just just shrugged it off and did mine the same. Github pages seems like the way to go. It can be a bit disheartening when you can't see your projects live.

wade-levels-up avatar Jan 18 '25 09:01 wade-levels-up

@wade-levels-up There's been a little movement on some of the PRs. It's a lot of work across different lessons, so they'll probably need some time to review everything.

If you found a good alternative, I would personally just create a new GitHub Issue where you propose just using GitHub Pages. I would make sure to mention the PR I made, which will remove Replit from the Basic Information Site project. https://github.com/TheOdinProject/curriculum/pull/29180

This is just what I would personally do, from the perspective as any random contributor since I'm not a maintainer.

Eduardo06sp avatar Jan 27 '25 09:01 Eduardo06sp

GitHub pages will not be suitable for Node.js servers because it can't run them. I saw there was one with a GHP deployment but that's actually a pure coincidence because GHP is just serving the html files directly. The server code in index.js is being completely ignored, and it's just the coincidence of the static files being HTML files that means GHP deploys a site that behaves as you want. It's not actually running the server code at all.

Any other situation e.g. Node.js server using EJS templates, it wouldn't work because GHP doesn't support that.

mao-sz avatar Jan 27 '25 18:01 mao-sz

It seems the replit assignment links in this lesson are dead. They are showing "not found" to me. Do we know who hosts them and check with them?

https://www.theodinproject.com/lessons/foundations-data-types-and-conditionals

Also apologies if I should've created a different issue for this. I felt this was relevant here

GaneshS288 avatar Mar 23 '25 15:03 GaneshS288

@KevinMulhern There is still an open PR, as seen in my progress comment: https://github.com/TheOdinProject/curriculum/issues/29054#issuecomment-2478522413

I don't mean to rush anything at all, but I did notice this got marked as "completed" and wanted to ensure you were aware. I also may be misunderstanding your process for these! 🙃

Eduardo06sp avatar Jul 18 '25 07:07 Eduardo06sp