Ask Slashdot: What Are Your Experiences With Online IDEs For Web Development?
Qbertino writes: I'm toying with the thought of moving my web development (PHP, HTML, CSS, JavaScript with perhaps a little Python and Ruby thrown in) into the cloud. The upsides I expect would be: 1) No syncing hassles across machines. 2) No installation of toolchains to get working or back to work — a browser and a connection is all that would be required. 3) Easy teamwork. 4) Easy deployment. 5) A move to Chrome OS for ultra-cheap laptop goodness would become realistic.
Is this doable/feasible? What are your experiences? Note, this would be for professional web development, not hobbyist stuff. Serious interactive JS, non-trivial PHP/LAMP development, etc. Has anyone have real world experience doing something like this? Maybe even experience with moving to a completely web-centric environment with Chrome OS? What have you learned? What would you recommend? How has it impacted your productivity and what do you miss from the native pipelines? What keeps you in the cloud, and enables you to stay there? Are you working "totally cloud" with a team and if so, how does it work out/feel? Does it make sense? As for concrete solutions, I'm eyeing Cloud9, CodeAnywhere, CodeEnvy but also semi-FOSS stuff like NeutronDrive. Anything you would recommend for real world productivity? Have you tried this and moved back? If so, what are your experiences and what would need to be improved to make it worthwhile? Thanks for any insights.
Is this doable/feasible? What are your experiences? Note, this would be for professional web development, not hobbyist stuff. Serious interactive JS, non-trivial PHP/LAMP development, etc. Has anyone have real world experience doing something like this? Maybe even experience with moving to a completely web-centric environment with Chrome OS? What have you learned? What would you recommend? How has it impacted your productivity and what do you miss from the native pipelines? What keeps you in the cloud, and enables you to stay there? Are you working "totally cloud" with a team and if so, how does it work out/feel? Does it make sense? As for concrete solutions, I'm eyeing Cloud9, CodeAnywhere, CodeEnvy but also semi-FOSS stuff like NeutronDrive. Anything you would recommend for real world productivity? Have you tried this and moved back? If so, what are your experiences and what would need to be improved to make it worthwhile? Thanks for any insights.
Just stick with text editors... or be forever dependant on you web based IDE.
A move to Chrome OS for ultra-cheap laptop goodness would become realistic.
That sounds like a cruel thing to inflict on your developers. Especially since it prevents them from running a local backend server on their own machine. Annoying.
"First they came for the slanderers and i said nothing."
I've played with a bunch of them. Cloud9 was my favorite of them, but I ran into challenges when I wanted to play experiment with AngularJS. I ended up preferring to work with Brackets and pointing it at a Google Drive folder. Obviously, I'm not a professional developer. I just experiment, play, learn, and write a web app on occasion. Others in this thread will likely have better advice.
I'm sorry, but your opinion seems to be wrong.
I've switched to SATA years ago.
If it is for a professional environment, you have a few bucks to burn getting a decent IDE. Stop being so cheap.
If you mean to do it anyway, why not install Crouton on your Chromebook, and then run Linux like a "normal" person?
If you are stuck on using the cloud, for a professional project, read the license agreement like a hawk. Make sure that you're not giving a free copy of all of your work to some random stranger on the web.
I spent some time with Cloud9 and although it was generally usable, it was just unresponsive enough as to be annoying. Also, I prefer a standalone machine so if I don't have any wifi access, I can still work. Recent plane trips come to mind as an example.
When can I send my money so I can invest in your Cloud venture? Is it web-scale?
I have yet to find one that could totally replace my desktop/laptop. Cloud9 and Nitrous are probably the best of the bunch. Both offer a nice IDE and desktop synch. However, you'll always sacrifice speed/performance and ease of use for convenience, even at the highest paid tier of service. When I used Cloud9 and Nitrous they were considerably slower than development on a desktop/laptop. Likewise, things always just seemed more difficult. If I were going to use a cloud IDE again I'd invest in server space at someplace like Digital Ocean and install the open source version of Cloud 9 (or a similar app) on the server to create my own personalized cloud service.
I saw no reference to MongoDB, so it can't be web-scale.
XML is like violence. If it doesn't solve the problem, use more.
oh ok, grandpa. time for your nap.
seriously, it's so odd that people into computers are so "stuck in their ways" and cling to old technology.
I would never give any credentials to the cloud. Creds are for me, and me only. That is an absolute show stopper for me.
Laws are rules for the court, but merely a bottom bar to hit for life. Think beyond laws in your actions always.
I thought everyone just worked on their production code on the live web server like I do...?
Simply dont. If you are intending to do code professionally then you should be worrying about the security of your code against competitors / thieves /industrial espionage, and the worst way to do this is to put your code "in the cloud". And I will not touch the point of the performance of a "cloud IDE" because others have already shown examples to exhaustion. In short: Very, very bad idea.
Religion: The greatest weapon of mass destruction of all time
Don't bother and here's why:
1) No syncing hassles across machines.
Use a decent version control system. If there are no collisions, the syncing is trivial. If there are collisions then te web based system won't help you either.
2) No installation of toolchains to get working or back to work - a browser and a connection is all that would be required.
Figure out what packages you need. Then type:
sudo apt-get install a b c d e etc moar lolz hax package
into a file and save it on your github account. Then on any new machine, grab that line and run it as root. You don't need anything more than an internet connection to do that either, and it'll install a full-strength dev system with almost on effort.
It's generally a good idea to have this, it means you can set up a new laptop or desktop and be up and running in a few minutes.
Plus once you're set up you don't even need an internet connection.
3) Easy teamwork.
How is it easier than a version control system?
4) Easy deployment.
Doesn't that rather depend on what's being deployed and where? Either way though, it's not hard to set up a git repo (e.g. on githup) with testing, continuous integration, automatic deployment and all that stuff.
5) A move to Chrome OS for ultra-cheap laptop goodness would become realistic.
Are the cheap chromebooks substantially better than the cheap modern take on netbooks with Linux installed? You can still run chrome on the latter if you like, but get the benefit of much more flexibility.
Bear in mind that anything done in a web browser takes approximately 1.434762139548e+37 more CPU resoures than a corresponding native program. For example compare Atom to uh... just about anything really. If you're going to be doing "big" stuff in the browser then a weak laptop will get really annoying. For example google docs on my venerable eee 900 is now horrendous and barely usable where as LibreOffice is still fast and snappy.
vim of course loads instantly still.
SJW n. One who posts facts.
Once you start using an IDE forever will it dominate your destiny. Consume you it will.
Hrmmmm.
SJW n. One who posts facts.
No matter what your profession is, you shouldn't ever try to cut corners on your every day tools. That's never a good idea. You should instead INVEST in the best tools that you need to do your job.
I don't respond to AC's.
I know I'll get modded down for this, but usually only take web development projects that let me write in Visual Studio. Why?
1) People who are looking for C#-based projects have MONEY (they have to to afford non-Express SQL Server) and often pay their bills on time
2) Unit testing is easy to do...and my clients usually happily pay for a full test suite as a self-documenting quality check on my code
3) Expectations of bleeding-edge look-and-feel are often lower, which means I spend more time on the app and less time on browser-specific rendering and Javascript BS
For my own use (my marketing sites) I tend to build on frequently-updated web portal tools (often in PHP/JS/TS) and only do a few tweaks around the edges in a text editor like Sublime because just about all of what I need to interact with the rest of the world has already been written by somebody else.
HTML5 supports local storage, right? So in theory all of your local storage requirements can be met with a web-based development environment. Whether any of the existing web-based IDEs actually have that fully and seamlessly implemented, I have no idea.
But to me, there is no killer feature here. The closest thing to killer feature is nearly instant developer environment replacement. If my kids spill a drink on my work laptop or it's stolen, if I have a recent full disk image backup it will take me a few days to get back up and running. I have to buy the same hardware, and then put the backup image on the storage, and then I'm back to work. If I don't have a recent full disk image backup then I have to buy some kind of replacement and spend another day getting it ready. With a fully web-based IDE the loss of hardware is a ten minute annoyance - just boot up any other machine with a web browser, log back in, get back to work.
Right, but are the previews you're talking about for changes in one file?
With an IDE, you have single files "open" in tabs or windows, if you're doing a global replace you can choose to replace everything with no preview, or it has to step through each one and open the file, show you the preview, and you click yes/no.
With sed, I dump all the proposed changes to a scrolling buffer, and can review them all at once, one per line. Then I re-run the command to make the changes for real.
If you have thousands of changes of a string across dozens of files, the old way gets way out ahead.
I think is rather funny your description of being efficient and saving time by having somebody spew out audio advice about menu options. I mean, come on. That is laughable for many reasons. And your description of a regex in vim is specious; the s and the slashes are typed very quickly, and the rest of the regex is the same meat of the replacement regardless of which tool you're using. You just spell out the sounds to make it sound longer than it is, but only in one case, to make that case look worse.
And I challenge this myth that being efficient with emacs is "like rock-climbing," even without knowing WTF that comparison is supposed to mean. (I hike near a rock wall and the experts can climb it as fast I can hike the stairs next to it.) If the hard parts of being productive are about your tools, you're probably using them poorly. The hard parts are entirely in deciding which code to write, which algorithms to use, how many layers of interfaces, where are the interface boundaries, etc.
If you memorize chords or write a macro or use a shell alias, those are mostly going to provide the same amount of efficiency, except that every time you switch between mouse and keyboard, or give/receive verbal commands, your brain goes into a pause-mode where there are whole extra seconds that passed that you didn't detect because you were switching contexts.
IDE's were nice when they were optional. Combining a text editor, a make facility and a debugger in a nicely integrated package does make life a little easier. The problem is that IDE's enable complexity - and without a good reason, complexity is a bad thing. IDE's have enabled the migration from comprehensible programs to micro services with myriad triggers tied to tidbits of code. And in the case of web apps, those tidbits are divided between CSS, JavaScript, tons of JavaScript libraries, and whatever's on the back end. All of this crap is virtually impossible to comprehend or manage without an IDE.
If the web weren't the best way to deploy code, it would certainly win as the worst way to develop it...
Posted from my Android phone. Oh, I can change this? There, that's better...
No, I've been using emacs for nearly 20 years and I'm not a "wizard" at all. I use less chords than I have fingers. The whole concept that programmer efficiency is based on things your GUI does for you is specious, as is the claim that emacs is difficult. You're not a crippled infant your first hour or week or year using emacs. You type in your code, it is pretty straightforwards. Learning features is for petty details like changing the colors of the syntax highlighting; things you learn over time, that may help a little, but mostly it is for personalization. All the normal stuff like search/replace is in the menu if you don't know the key combination. Almost all the integration is with command line tools and is therefore totally optional; you don't have to learn an emacs way of doing things, you just switch to a text terminal and run the command. If it is long or you have repeated options, you can learn how to store those options in a macro or key chord or shell alias; the solution to automate those things is essentially the same regardless of which tool you're using.
Vim obviously has a steeper learning curve because it is "mode based," and that isn't intuitive if you're not used to it. (that said, I do all my system admin editing in vim, not emacs; mode based editing shines on config files IMO)
If you sit down in front of emacs and never learn a single feature, it is notepad with syntax highlighting. How hard can that be? If there are complicated things it can do, that doesn't make it harder to use because those features do not step up and stand in your path; if you don't know about them, they basically don't exist. That isn't exactly what is implied by a steep learning curve.
Sed is obviously a much steeper curve. I don't recommend learning sed unless somebody is already spending a lot of time using a CLI. In that case, it is a time saver. There are GUI tools that do exactly the same thing, but ultimately the knowledge needed in both cases is almost identical; you have to learn the regex flavor your tool uses, and different tools will use different flavors. See also man 7 regex and man 1 perlre
These differences are mostly artificial. If you're used to an IDE, you might think emacs is hard, when really for you it is that the CLI is hard because you can't find anything. And if you're used to a CLI, then the GUI is hard because you often can't add options to a command, and it might not be obvious what feature steps in when you need to do something differently. Same problem on both sides; it is hard to find things when you're using an unfamiliar tool. The funny part about emacs being hard is that emacs isn't the part that people struggling with emacs are struggling with. They need to change screens and just use the normal CLI tool normally, and using emacs doesn't change that process at all for most users of it. Users who program in a lisp dialect probably use it for more things and code their automation into emacs directly, but that isn't the normal pattern.
In the context of TFQ, they're asking everybody regardless of background to use a new tool, because cloud.
I mostly use the exact setup you're talking about. I can't really speak to the "teamwork" aspects; for that I generally use CollabEdit, which is simpler for one-off collaboration. I got a Chromebook because I was planning on being in fairly impoverished areas in Central America for months or years, and I wanted a laptop that I was not going to worry about breaking. It works pretty well, all things considered. It's relatively simple to install a 'real' linux distro via crouton and get access to all the normal linux goodies. One specific advantage to ChromeOS is that it keeps track of what apps you have installed, and if you ever have to replace the unit, you can just sit at the new one, type your login info, and in about two minutes the new machine will have exactly the same stuff the old one did.
Having your development tools/files in the cloud means that they are inaccessible to you without an Internet connection, however, you don't need much of a net connection to be able to work: for Cloud9 there's an initial download of I believe about 1 MB for the editor, and actually editing code is possible down to a hundred bytes per second. Creating a local repo from a GitHub or Bitbucket repository is very simple, and each coding workspace gets its own little virtual machine, so you can install gems, run tests, and do anything you'd normally do. It also saves process state, so you can start (e.g.) pry, fool around with the interpreter, close the window, and the next time you start, pry will still be running. It actually saves quite a few brain cycles: you have less effort to figure out what you were doing the last time. Code completion and refactoring support exists, but is not what you would call world-class, more like SublimeEdit than intellij.
I have been using cloud9, but I have shopped around for various online editors at times, and so far I have not found any particularly compelling reasons to switch. I do not miss setting up a new chroot or container for a new project, or worrying about syncing code between workstations. Also note that there are online IDEs which can be run on your own private server (Cloud9 among them), for a hybrid approach, and of course there's nothing wrong with emacs over ssh if it comes down to it. At this point I doubt I would go back to a "real" IDE unless required to by an employer.
Those who advocate genocide deserve every protection afforded by law, and none afforded by common human decency.
I have tested all of them in the past. Some have moved in a direction that I don't think is right for a PHP developer. They are essentially moving to sandboxed virtual environments where they want you to develop on that virtual box.
I have been keeping my eye on codeanywhere as I believe it is going in the right direction. However with the lack of PHP (or any language) linting, it is useless. For those of you that don't know, linting is essentially the highlighting of syntax errors in your code. I believe this should be their top priority but is seems they could care less. If it is ever implemented, I will definitely give codeanywhere another try on a real project.
A few months ago I gave up on the cloud IDE's as well as cloud syncing. I carry around a 512 gig USB3 SSD with my projects as well as any applications and configurations/preferences I need. It works great for those that never know where they will be and always want access to their projects and preferred IDE. Just remember to back it up on a regular basis.
Once you start using an IDE forever will it dominate your destiny. Consume you it will.
There is more truth in this than most people would be comfortable admitting.
Just cruising through this digital world at 33 1/3 rpm...
Rather than using a pseudo-commercial IDE with limited functionality, you could use a free cloud based Linux machine courtesy of the Sage cloud: cloud.sagemath.com.
The terminal they provide isn't the greatest, but with tmux and screen, plus vim, you should be able to easily create a decent multi-terminal programming environment, in addition to getting a couple of GB of free storage. Recently they have introduced a pay model under which network access costs $7/mo. This seems cheap to me. I doubt that they want you running a web server from their service, but you could easily rsync your code with your server of choice.
I do "cloud development" all the time. I spin up servers with ansible so they have GIT, latest source, and my login keys, and I use Eclipse/SSH with the Remote System Explorer (RSE) extension to develop, and more ansible/GIT to save the changes back to the repo and deploy to the rest of the cloud.
I've tried docker and various other deploy systems, but most of the time what you want is a carefully versioned Debian stack install with you source slapped on top, and there's nothing hard about that once you've got your workflow sorted.
Oh, you mean, is there a way of developing totally in a browser without local software installs to a professional standard and level of tooling?
Um, no. Not yet. Which is a shame. There are a few specific tools, (I've written a few) but not a whole "IDE".
(Unless as one wag suggested you count the cPanel text editor, which you really shouldn't. It tops out after about 1000 lines, for a start :-)
I've actually attempted such a thing a few times, and the main problem is that putting a full GNU compiler on the internet is a great way to have your box burned to the ground through makefile exploits. Compilers don't like being put in sandboxes either.
Jeremy Lee | Orinoco
I have tried to go the cloud route route for development with a Chromebook. (I have tried both web development and general programming using remote services.) For development, it might work five years from now, but it does not work today (for me) for professional development.
The first problem is availability. Even the best services are not "always on." Part of this is on the service provider, part is on their service provider, and part is on your own local Internet provider. I always have deadlines for projects, and unpredictable reliability is a job-killer.
The second problem is performance. When I work on a task, I expect to immerse myself into the task and get into the flow. Remote services do not have reliably high performance. I spent far too much time waiting on the editor, command prompt, etc. Perhaps I am spoiled by modern computers, but I find waiting more than 250ms for editor feedback is unacceptable. Remote services are not always this slow, but they are slow frequently enough to significantly degrade my performance.
The third problem is what I would call compatibility. Remote services offer a suite a capabilities, with updates from time to time. As a developer, I find myself very frequently wanting to dip into this-or-that latest update, feature, etc. I found remote services to feel too restrictive with their fixed or slowly-evolving feature sets.
Remote services / cloud development are a great option for hobbyists, but today I find them too restrictive for professional work.