Sunday, January 20, 2008

A WinSCP replacement for the Mac

About half a year ago I wrote a piece on the inability to use my iMac as a web development machine. The reason was very simple: the lack of a utility on OSX with a feature set similar to WinSCP on Windows. It doesn't need to have all features of WinSCP, but at least being able to browse a remote SSH/SCP file system as if it is local and being able to edit remote files without being bothered too much by the latency and remote-ness are a must-have for me.

Apparently I'm not the only one looking for something to replace good old WinSCP on OSX, as this post is one of the most viewed and most commented on this site. In the comments visitors suggested many replacements: Cyberduck, Fugu, Smultron, Filezilla and Transmit. I tried all of them.

But none of these tools seem to do what I want, as -until last week- I still found myself at my XP laptop whenever I wanted to work on a site. Until last week? Yes, because about a week ago my trial license of Transmit ran out. And although it's no WinSCP replacement, Transmit is a decent SCP program. So I went to the vendor website to see what it would cost. On the website I ran into their "One-window web development" program, called Coda. After all the tries one more couldn't hurt, so I decided to give it a go.

After installing Coda you have to get used to the fact that it is not a WinSCP clone. So it doesn't have a dual pane Norton Commander like interface, but instead just has the list of remote files on the left hand side. And when you open one of those files -instead of getting the WinSCP editor popup- Coda opens the files in a large panel on the right hand side. Open a second file and it adds a tab on that panel, where WinSCP would open a second popup window.

Looking at it like that, it seems like Coda tries to mimic an IDE more than anything else. But then an IDE for remote web site development, which is exactly what I use it for. I'm now about half-way through my trial period for Coda and I must say I love it so far.

The file transfers are incredibly fast, way faster than with WinSCP it seems. They're also handled more gracefully. With WinSCP file transfers are handled in the main window, which is typically covered by my editing popup. So I have to alt-tab to the main window to see whether the transfer is complete. With Coda the file transfer is indicated by a throbber animation on the file listing on the left. When the transfer is complete, a brief notification animation is shown in the top right.

The editor is decent enough for my needs. It highlights most of the languages you typically encounter during web development and it follows most standard editing conventions. But it could do with some more keyboard shortcuts for faster editing and especially navigation. It also would be nice if it could integrate with external or online help files for supported languages. There's tons of great documentation out there for Java, JavaScript, HTML, CSS, etc. Unfortunately Coda limits its built in help system to the help that comes with the installation. So for anything beyond that, I still need to tab to my browser and search for the help there. This seriously breaks their "one-window web development" mantra and should be addressed if they want to stick to that claim.

That said: you might notice that the editor has lots of features that the internal WinSCP editor doesn't have, so I shouldn't be complaining. Syntax highlighting is great of course, as are other features like the overview of functions in the current file. The fact that I'm asking for features that you'd normally find in real IDE's and not in WinSCP are actually a big compliment to the Panic people: Coda really feels like a web development IDE!

The biggest downside of Coda I've found so far is the price tag. Like pretty much all software on the Mac it's commercial. Panic decided to set the price tag to $79. Which definitely doesn't make it an impulse buy for me. So I'll evaluate it a bit longer and see what happens when my trial runs out. I'll probably go back to my XP laptop and WinSCP. But if I then find myself missing Coda features, I'll give in and buy it. After all... that would mean it's better suited to my WinSCP. Who would have ever thought that would be possible?


Camus said...

Thanks for introducing Coda. I have the exact same problem as you, moving from XP/WinSCP to Mac/?

I ended up using Parallels just to use WinSCP.

I'm wondering if you ended up purchasing Coda.

Frank said...

Hi Camus,

I indeed ended up buying a Coda license. And even though I think I use less than 5% of its functionality, I'm still quite happy with it.


Camus said...

That's good to know.

I'm still trying to figure out the way to SFTP to the server. Where could I attach my private key in CODA?

Been googling for the solution for hours.

Frank said...

Hmmm... good question. I don't recall ever having to add a private key, nor having to accept the signature from my server.

While searching for it I encountered comments about re-using the SSHKeyChain. Although this is unfamiliar to me, it could be that the ssh key files are shared between Coda and OSX. That would indeed be a very Mac-like thing.

If it is indeed shared that would definitely explain why I didn't get a prompt, since I scp'd some files to my server from a terminal window before discovering Coda. And I do recall confirming a server signature in that terminal session.

So maybe your best bet is first ssh'ing to the remote server from a terminal and after that setting it up in Coda?

Frank said...

This sounds like someone got things working in the way I suggested:

Camus said...

Thanks Frank.

I'm now connected to my remove server via sFTP. Indeed, it's a 'very Mac thing.'

For the benefit of those who were looking for the solution to the same problem, this tutorial helps:

Ryan said...

Why dun you use Eclipse with its plus in or netbeans?

Anonymous said...

What's "dun"?

Valerie said...

I've been developing websites locally and then loading to the server with Transmit. I have a site that uses a server they currently access with WinSCP and I was looking for a Mac equivilent. Coda sounds great but I usually use the Synchronize function to update sites. Does Coda have the same option/

Frank said...

Hi Valerie,

Sorry for not replying sooner, but I had to actually look this up in the help as I always work directly on the remote files. Coda saves my changes in the background, so there really is no interruption from the save. It does of course mean that I might be pushing out some changes that are not fully integrated yet, but for the type of work I do using Coda that is no problem.

Coda also seems to support developing locally and then synchronizing either one file at a time or all modified files in one go. It's documented in the help topic "Publishing changed local files to the web server".

Why don't you give Coda a try? The trial period was long enough to give me a good impression of whether it met my needs. Let me know how it works for you.


MalEbenSo said...

Try MacFuse with sshfs!

There are pros and cons to this combo over WinSCP.

The con:
1) It is not just a simple application like WinSCP. It requires an installer.
2) You have to start it with a Terminal command. You can set it up to start without the Terminal. But that set up, too, requires the Terminal and knowledge how to configure ssh-key based authentication.

The pro:
1) Once it is running, your ssh/scp connection appears right in your Finder, in your open/save dialogs, just like a local disc, an AFP, SMP or WebDAV share. Works like a charm. Very, very Mac like!
2) Also, despite the need for an installation procedure, the whole concept of MacFuse (or the Linux original) is exactly to not mess with the system. All the magic happens in so-called "userland". So you cannot break your system.
3) MacFuse can be further extended with other filesystems. So you include the SpotlightFS to get better search folders than what Apple provides. ProcFS shows your processes. Much more is possible.

Again: Once it is running, it is very, very Mac-like. But just don't go about it unless you have used the ssh command.