Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I chose to write my own terminal emulator from scratch because after trying various existing open source implementations (including the one in Ajaxterm) I decided they were too slow, buggy, or incomplete. I have old versions of Gate One that used a modified version of Ajaxterm's emulation, Termemulator, and one other that I can't remember right now.

The biggest reason of all was the speed. Gate One needed to support multiple users running multiple terminals. Every terminal--when the screen is updated--needs to be converted into HTML and sent to the client. I wrote terminal.py to be as fast as possible with this purpose in mind.

For reference, I hadn't heard of pyte until I saw your link just now. I'll definitely be checking it out.

Having said all that, now that I've already written my own terminal emulator for Gate One, it includes some additional features that only Gate One is suited to take advantage of (special escape handlers that only terminal.py would know how to handle--for plugin authors to use). I don't think it would be practical to use something else at this point.

-- Dan McDougall - Author of Gate One



I understand your point, there's two problems with most of the terminal emulators I've seen:

  - they are either poorly or completely unsupported  
  - the code is a nightmare, badly written, undocumented
Both make extending a VTE an almost impossible task. Actually, that's why we (at Selectel) wrote `pyte` [http://github.com/selectel/pyte], which soon became open-source.

As for speed issues, have you considered implementing incremental updates (like in AnyTerm, for example)? This approach works perfectly in our setup (multiple clients, multiple terminals).

P. S. Looking through the code, I can tell that you had some tough nights throughout those 9 months :) Good job!




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: