β‘ High Performance IDE π Massive concurrency π₯ Inspired by Jupyter
Zasper is an IDE designed from the ground up to support massive concurrency. It provides a minimal memory footprint, exceptional speed, and the ability to handle numerous concurrent connections.
It's perfectly suited for running REPL-style data applications, with Jupyter notebooks being one example.
Currently Zasper is supported on Linux and Mac.
There are several proprietary JupyterLab-like frontend tools available in the market, such as Databricks Notebooks and Deepnote Notebooks. However, none of them are free or open-source, and most require users to work in the cloud. Even the modest personal computers these days are typically equipped with at least 8 GB of RAM, an 8-core CPU, and a decent 4 GB GPU, I saw an opportunity to create a solution that works seamlessly on local machines. Thatβs why I decided to build Zasper which can effectively utilize the resources available and guarantee maximum efficiency.
Originally I wrote https://github.com/zasper-io/zasper_py (now in Private mode) to build a new frontend around Jupyter. During the process I realized, Go is the ideal choice to rebuild the Jupyter project. Go has excellent support for REST, RPC, WS protocols. Concurrency and Performance are the areas where Go shines.
Go's Concurrency: Better suited for applications requiring both concurrency and parallelism, as it leverages multiple cores effectively. It's easier to handle blocking operations without freezing the system.
Python's Event Loop: Ideal for I/O-bound applications that need to handle a lot of asynchronous tasks without blocking. However, it struggles with CPU-bound tasks and lacks native parallelism unless additional worker threads are used.
Hence the Go version of Zasper was born!
Zasper comes in two flavours:
- Electron App
- Web App
On debian
sudo apt-get install libzmq3-dev
On mac
brew install pkg-config
brew install zeromq
Go to project home and start the server
go build -o ui/public/zasper
Go to ui
and run the app in dev mode
npm run electron-dev # dev-mode
npm run electron-package # prod-mode
cd ./ui/
npm run build
On debian
sudo apt-get install libzmq3-dev
On mac
brew install pkg-config
brew install zeromq
Install zeromq.
Go to project home and start the server
go build -tags webapp
This will crate a binary called zasper
. Now add this binary to your path.
Run zasper in any directory to see if the installation was done correctly.
% zasper -h
Usage of ../zasper:
-cwd string
base directory of project (default ".")
-debug
sets log level to debug
-port string
port to start the server on (default ":8888")
Go to any directory you want to serve and run zasper
. This starts zasper server in the directory.
% zasper
2024/12/15 20:39:12 Zasper Server started! Listening on port:8888
ββββββββ ββββββ βββββββββββββββ βββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββ
βββββ ββββββββββββββββββββββββββββββ ββββββββ
βββββ βββββββββββββββββββββββ ββββββ ββββββββ
βββββββββββ ββββββββββββββ βββββββββββ βββ
βββββββββββ ββββββββββββββ βββββββββββ βββ
Go to http://localhost:8888
By default, the application writes logs to the following locations:
on Linux: ~/.config/zasper/logs/main.log
on macOS: ~/Library/Logs/zasper/main.log
on Windows: %USERPROFILE%\AppData\Roaming\zasper\logs\main.log
For Zasper architecture, and other info refer wiki.
You can contribute in multiple ways:
- Documentation
- Bug Filing
- Submitting PRs or reviewing them
See Code of conduct
Data Scientists and AI Engineers spend most of their time running Notebooks on IDEs and hence need a robust ecosystem. Zasper aspires to be a full fledged IDE and the future development will be along making it more efficient by:
- Allowing custom data apps support rather than just Jupyter Notebooks.
- Easier integration with the existing tools.
- Zasper Hub for Self Hosted deployment in the cloud.
Prasun Anand
Zasper is licensed under AGPL-3.0 license.