Join GitHub today
GitHub is home to over 31 million developers working together to host and review code, manage projects, and build software together.Sign up
Update recommended tools for back end challenges #9826
c9.io has been acquired by AWS and now requires the use of a credit card. Heroku also requires the use of a credit card for hosting - and also requires learning a bunch of Heroku-specific concepts - so it was never an optimal solution either.
Many people outside of the US (and many people under the age of 18) do not have credit cards, and are understandably intimidated about entering them into services where they could screw up and end up owing hundreds of dollars.
So let's step back and examine the underlying goals. We want campers to be able to:
Essential tools for these projects
My thinking at this point is that we could recommend HyperDev for development and hosting, and MLAB for the database. This setup would be free, with no credit card required. As far as I can tell, HyperDev projects remain publicly accessible indefinitely, so these URLs could be submitted as the live demo links.
The main drawback with this is HyperDev is a limited environment (it's just Node, without Git, Linux, and many of the features of c9.io). But this limitation actually makes it much easier to use for beginners, in the same way that CodePen and JSBin abstract away file systems and web servers. HyperDev is essentially CodePen for Node.js development.
I also recommend we finalize a good tool for Node/Express development. In the past we've explored Vagrant and Docker.
We could even create an image that we could load onto a bootable USB with Linux. This way, people who only have access to Windows machines (or public computers) could do their work right on a USB. They wouldn't need to download gigabytes of files.
We could put the images for these bootable drives on Bit Torrent and even distribute the USBs in bulk through mail to Campsites.
I'm looking forward to hearing your thoughts on this.
The problem with the USB drives is that many campers wouldn't be able to figure out how to boot from them. I think the vagrant / docker option would work better as it will work on any operating system 2with a simple command.
Update: Accidently closed the issue (I'm on mobile
With vagrant/docker, I am willing to go with docker; though docker is mainly for deployment and less for development. However, Docker is more lightweight.
But if we are adding feature to remove and modify stuff on the fly; we should do a cloud build. As @zcassini mentioned, Chef/Ansible handles all these better.
We initially did it with Shell script for it's lightweight. We can do it with Python too (I think we started on that), as long as we can bundle as .exe for Windows reliably on most common platforms - Win 7, Win 8.1, Win 10.
We have two issues here:
For the first point, the solution of the cloud development may be a good idea if we find a service with an easy access for maintenance (git/ssh at least, + language specific requirements)
What I think is "getting started with backend has always been hard, even if there is more servers and tools around". Configuring servers is part of the backend development, in my opinion, so the only way would be to write tuts to get them ready. It's painful, but it's in the FCC disclaimer :)
For small exercises, I proposed earlier a solution with compiled js from languages sources, that can be tested against the Repl.it API. the proof of concept worked, except for languages that needed "project mode" (multiple files, not supported by the API at this time. Maybe it evolved now). That solution is integrable in the FCC website easily, as it's only JS.
My answer is : We don't need to create our own tool to manage boxes. We should use existing propositions.
Heroku lets you have 5 sites without giving them a credit card. Redhat's Openshift.com will give you 3 free sites without a credit card. So that should cover hosting no matter the projects language. Unfortunately it is two more things for students to deal with.
http://www.koding.com/ provides an online ide like cloud9 that can get students coding immediately and make pair programming an easy activity.
Docker is 64bits only. Who knows how many students that would rule out.
Cloud9 stated they should have a solution for educational organizations in a few weeks. So we might be right back to where we were.
I wish to just point out some comparisons between browser based env and local env.
I would propose to use local env setups since you can use that to generate cloud based env. But not so the other way around.
The project a couple of us did a few months back, zenias, could be extended to this purpose. We just need to code once and it can be cloned by FCC campers to initially setup dev, test, and deploy environments with an unified command line system. Later when they are more confident and have done some projects, we will introduce step by step guide on how to create their own envs and how it is done manually and why it is important to automate infrastructure.
I have my own fork which is working for a few languages, it is still in bash since it was so fast for me to write. zenias
For better maintenance we can write this tool in Python or Node, I don't mind which language. It can be compiled to Windows exe and pretty much any OS distribution. I learned how to use Salt to provision so I can contribute to that. The only domain of knowledge we need to learn is Docker now but we can just start with virtual box straight away. It is possible to spin up a AWS EC2 based development environment inside a Vagrant. By extension there are lots of other providers that Vagrant supports. I think heroku would also be possible. Not sure if that is natively supported.
I won't speak of Zenias as it's irrelevant for this. It relies on Heroku and Github, and as @QuincyLarson stated, heroku requires credit card. So that's a no-no option for students.
I believe there is already a lot of tool online to propose great virtual machine solutions:
And I only searched for "puppet for -language-"... on Qwant.com... not on Google...
So we can redirect /our/ students to those solutions to code locally. Then, they'll have to learn git and commit to any repo they want (with the vm conf in their sources)....
@mtancoigne Servers aren't necessarily a part of back end. Back end development involves APIs and databases, and servers are more the realm of ops or devops. These can be taught in isolation. Our current back end curriculum recommends Heroku, which essentially abstracts away the notion of servers.
HyperDev would be even better. It can export directly to GitHub. So this means campers could focus on Node, Express and Mongo, and learn the intricacies of Git and Linux later.
I just exported my HyperDev project to GitHub - check it out: https://github.com/QuincyLarson/hyperdev-test
To be clear, I am not suggesting we skip Linux and Git - I am suggesting that we teach them separately from back end development.
@atjonathan This is in theory possible. I've tweeted to see whether anyone wants to give it a try: https://twitter.com/ossia/status/756290723331190785
@QuincyLarson one of my full-stack projects (nightlife coordination) ported to hyperdev
I used react, but i had to manually pack all the components in a single file. Probably it's possible to bundle them automatically from separate files using webpack-dev-middleware, browserify-middleware or require.js, but I don't know exactly how to do it. Hope it helps, bye.
In this version https://hyperdev.com/#!/project/copper-jay I used express-babelify-middleware, which creates the transpiled bundle on the fly, allowing front-end
Is there any news on this topic... hyperDev looks like great option for replacement... but is there any confirmation that we should use this and that this will be added to the course and videos... and assignments too??? I am bit confused now and don't know where to start with back end... some help???
@josevill they do require you to create an account, which HyperDev does not. They may be a good alternative to c9.io but I think HyperDev is far more accessible than c9.io so we will recommend that. We've already built a significant portion of our curriculum around it.
I like HyperDev (now called Gomix, FYI).
Just to offer additional options, I've used a combination of CodePen and Firebase to create simple apps before. You need an account on CodePen and a Google account for Firebase. You can do this all without CodePen even. Just make sure you set up Firebase authentication so only signed up users can read/write, and you're good to go! @shiffman recently did a good tutorial on Firebase also.
@Nezteb awesome! I've heard of people doing pretty cool things with Firebase. It does definitely simplify the back end aspect of projects.
We have almost finished our new back end curriculum, which uses Gomix (formerly HyperDev). We will have a big announcement about this soon. I am going to go ahead close this issue for now.
referenced this issue
Dec 16, 2016
CodeAnywhere.com might serve as Drop-in-replacement for c9.io
I tried to get
For example I tried Codenvy.io, gomix, heroku, Floobits.com and some other. Usually these services lack one feature and/or are to cubersome compared to C9.io and CodeAnywhere.com