I think the cool kids are doing their development solely on a Linux system. Why would a Mac need to be involved? If I’m understanding your situation correctly, the only reason you’re using a Mac is because you already have it and don’t have physical space for a Linux workstation.
The way we have it set up is that the entire dev environment is on a virtualized Linux box in a data center. This Linux box has the source code, GIT, runs the IDE (Eclipse) and a test server that the IDE can debug. We connect to the Linux box using either NX or XENDesktop. VNC can do the same thing but really only works on a local LAN, otherwise it gets sluggish.
Using NX or XENDesktop is surprisingly responsive. Very usable even when the client is on a different continent than the server (which is the case for me personally).
Further advantage is there’s no risk of losing a laptop with sensitive source code on it and if you manage to mess up the Linux box beyond repair a new one can be spun up from image in minutes.
Yes, that’s correct. There are things I need to do on the Mac that don’t run on other platforms and I like the Mac OS too. But I wanted to see if that was not the popular platform of choice for doing Python development with an IDE.
So just to clarify, you have an instance of Linux such as CentOS, Red Hat or Ubuntu Server running remotely and use a VNC-like application like NX or XENDesktop running on a what? Windows, Mac or a Linux Desktop version?
Super powers are good.
You don’t find it a burden to have to document your changes along with way in GIT? You prefer GIT over SVN?
Yes, this is a local Linux box on the LAN, not a live production server.
Are there any security concerns with using GITHUB?
Most people seem to have moved to Git. The local/remote repo paradigm is good, and Git provides a more consistent view of how you work, that once you get used to is very nice. Annoyingly Git and SVN share some commands that mean different things - different enough that you can get confused. I still find myself forgetting.
NX has clients for most platforms, I used to develop a day a week at home on a remote Linux box running NX on my Mac.Even over a pedestrian ADSL line it was silky smooth. You did need to ensure the remote desktop didn’t do any stupid graphics intensive things.
Depends what you consider a security issue. Access is with ssh. So long as you have secure credentials it is no less secure than most similarly secured services. If you were doing classified or ITAR restricted work you would go to goal. Most commercial stuff should be fine. You can of course set up your own local Git repo very easily. People mostly find Github good for shared access, where sharing has as wide a set of semantics as you like.
Nowadays the cool kids will be doing stuff with a mix of Git, Jenkins and Atlassian tools. YMMV.
Yeah, the dev machines are RedHat but any Linux distro works.
The clients can be anything. Most coworkers are on the corporate Win7 laptop. My machines are all Linux because I’m too cool for windows. There are some scattered Macs here and there. Both NX and XENDesktop have clients for all 3 major OS. XENDesktop also has a HTML5 receiver so the remote desktop runs in the browser. I mostly use that as it’s pretty neat. The remote desktop is just a tab in chrome.
Git is typically used for versioning and collaboration, but in this case, it can also just serve as a good file transfer system (better than FTP, similar to rsync).
If you really don’t want to develop on a local copy of the files and would rather just work directly off the server’s files, then you don’t need any of those – just open and edit the server’s files directly. This is easy in an IDE or text editor that can natively speak SFTP, but hellish otherwise (you’d have to download the files, edit them, save them, reupload them to the same place).
If all your files are on the server and you want to install the IDE on the server and develop exclusively on the server just using VNC from your Mac laptop, yeah, you can do that… it’s just not really a common workflow (because network latency is usually annoying, people don’t usually edit files on a live server that could affect their users, you might not want extra software like bloated IDEs or Java VMs running on your server, etc.). But if you want to, you can, yeah. At that point your server is also doubling as your workstation, so the risks of downtime increases with the complexity of your workflow. If that’s not a big deal to you, go ahead. Most people typically separate the two just so they can have an unstable development machine and a stable server where code isn’t deployed to until it’s already well-tested and relatively safe.