Why I Chose Go to Build a Terminal UI Framework
When I started building a terminal UI framework, I had a choice: use Rust, C++, or Go.
I chose Go, and after months of development, I think it was the right decision.
Here are the main reasons.
1. Simplicity Scales
A UI framework is more than drawing boxes on a screen. It involves rendering, layouts, event handling, focus management, state, keyboard input, and much more.
Go’s simple syntax makes it much easier to reason about these systems. I spend more time solving UI problems and less time dealing with language complexity.
2. Fast Development
One of Go’s biggest strengths is developer productivity.
The edit → build → run cycle is incredibly fast, which is important when you’re making hundreds of small changes while designing a UI framework.
3. Concurrency Feels Natural
Terminal applications often need to handle multiple things at once:
-
User input
-
Rendering
-
Background tasks
-
Network requests
-
Timers
Goroutines and channels make these tasks straightforward without introducing unnecessary complexity.
4. Excellent Cross-Platform Support
A terminal framework should work everywhere.
Go makes it easy to compile for Linux, macOS, and Windows from the same codebase with minimal platform-specific code.
5. A Strong Standard Library
Go’s standard library already provides many of the tools needed for framework development:
-
File handling
-
Networking
-
Synchronization
-
Testing
-
Profiling
-
Context management
This reduces external dependencies and keeps the project simpler.
6. Readable Code Matters
Frameworks are long-term projects.
Readable code makes maintenance easier—not just for me, but for anyone who wants to contribute in the future.
Go encourages consistency, which becomes increasingly valuable as a project grows.
7. Great Tooling
The Go ecosystem includes excellent built-in tools:
-
go test -
go fmt -
go vet -
Benchmarking
-
Profiling with
pprof
Having these tools available by default improves code quality without requiring a complicated setup.
Building a terminal UI framework has taught me that language choice is about more than performance.
For this kind of project, I value:
-
Simplicity
-
Productivity
-
Maintainability
-
Cross-platform support
-
Strong tooling
Go provides a good balance of all of these.
I’m curious to hear from other Go developers:
If you were building a terminal UI framework today, would you choose Go? Why or why not?
retUI - A GO Terminal Framework