Why another Python IDE? Scripton hopes to fill a gap in the Python development ecosystem by being an IDE that:
1. Focuses on easy, fast, and interactive visualizations (and exposes rich JS plotting libraries like Observable Plot and Plotly directly to Python) 2. Provides a tightly integrated REPL for rapid prototyping and exploration 3. Is script-centric (as opposed to, say, notebook-style)
A historical detour for why these 3 features: Not so long ago (ok, well, maybe over a decade ago...), the go-to environment for many researchers in scientific fields would have been something like MATLAB. Generating multiple simultaneous visualizations (potentially dynamic) directly from your scripts, rapidly prototyping in the REPL, all without giving up on writing regular scripts. Over time, many switched over to Python but there wasn't an equivalent environment offering similar capabilities. IPython/Jupyter notebooks eventually became the de facto replacement. And while notebooks are great for many things (indeed, it wasn't uncommon for folks to switch between MATLAB and Mathematica Notebooks), they do make certain trade-offs that prevent them from being a full substitute.
Inner workings:
- Implemented in C++ (IDE <-> Python IPC), Python, TypeScript (UI), WGSL (WebGPU-based visualizations)
- While the editor component is based off Monaco, the IDE is not a vscode fork and was written from scratch. Happy to chat about the trade-offs if anyone's interested
- Uses a custom Python debugger written from scratch (which enables features like visualizing intermediate outputs while paused in the debugger)
Scripton's under active development (currently only available for macOS but Linux and Windows support is planned). Would love for you to try it out and share your thoughts! Since this is HN, I’m also happy to chat about its internals.
How about a hobbyist rate at least?
1. Text inputs (table/spreadsheet inputs?)
2. Text outputs
3. Buttons
4. Menus
5. Sliders
6. Checkboxes/radio buttons
And bonus points for: 7. bundle it up and give it to someone else to run
I think out of that list you have 2, 3, and 5? https://docs.scripton.dev/api/interact/user-interfaces/widge...Any chance you'll push further into the build-a-UI-to-muck-with-data realm?
That's correct: 2, 3, and 5 are currently available. This initial set was intended as a minimal (albeit limited) set that demonstrates the UI capabilities. More widgets/controls (including the ones you've mentioned) are definitely coming.
7 is something I've considered (along the lines of a redistributable "Scripton runtime" that packages up the scripts and bundles a portable Python distribution). However, that's currently much further down on the todo list.
As a bonus, you can continue to use whatever IDE you already use.
I know this is not much of a concern on a system with unified memory (all recent apple computers).
That said, the IPC minimizes copies and is actually fairly efficient at handling large numerical arrays.
I'm really surprised (and almost not) to hear the UI is in TypeScript, did you use a specific web framework like React by chance? The UI looks really nice to me.
The initial prototype did use React, but the overhead in certain cases soon became an issue. It got replaced by a custom virtual dom implementation (coincidentally quite similar to Atom's Etch), but debugging complex updates remained an issue. Eventually, it ended up in a place quite similar to vscode: no frameworks and a handful of "core components" (eg: a virtualized list view)
However, I would like to eventually have something like Jetbrains' "perpetual fallback license" where you can keep using up to a particular version after, say, a year of subscription.
Your Python plotting code ends up looking like this: https://docs.scripton.dev/api/plot/orion/overview
How long have you been working on this?
I will be releasing hackerman.ai text editor later this year (or ASAP), also somewhat niche product with support for creating/editing lexers (eg for your own languages), able to customize almost everything, set key bindings to use self-defined functions (scripting), and ofc integrated AI features, which can also be customized and added as commands etc.
Built on top of Qt framework.
Please elaborate on this. What are the tradeoffs?
I use VSCode and just add a magic comment #%% to split my Python script into cells and then I can run them as a notebook cell.
Also Mac only doesn't make sense for me. I use linux only.
However, I'm assuming you want to drill down further into these (and have them displayed as a table for instance)? While the current version doesn't have that, it's definitely planned.
Shameless plug: I created the open source Buckaroo table for jupyter (embeddable in other contexts) with histograms, summary stats, search... I love talking tables if you want to get in touch.
The data table got deferred to focus on the visualization bits for the initial release, but it's definitely planned!
Million+ row handling is nice. Once I figured out window based display of tables, documentation and a bunch of other pieces of architecture became simpler. Previously I sent the whole dataset or a sample of it.
--
Is Scripton user extendable? Do you expect ipywidgets/anywidgets based projects to plug in?
Currently, it's not user extendable. While it does support some IPython features (eg: Python classes that implement IPython's rich outputs also work in Scripton), ipywidgets are currently not supported.
For me personally, though, it's a hard sell. Since I just paid my JetBrains renewal, I am currently very aware that I'm paying $173/year for *all* of their IDEs, and PyCharm Pro is very good.
Just from looking through the site for this one, while it does some *SUPER* nice things, it doesn't replace everything I use from just PyCharm Pro, let alone from the other JetBrains tools that I also use and get in that subscription.
So it costs more than my current subscription, and wouldn't let me replace it even if the Linux version suddenly shipped today.
I love the competition in this space and wish you good luck. But, as someone who's obviously willing to pay for tools in this space, the only ways I could suggest that you could get my business would be:
1. Grow your feature set to the point that I could replace my JetBrains subscription with yours.
2. Become a JetBrains add-on, and reduce your price to something less than $10/mo.
Both of those look like tough roads... I hope you succeed wildly, even so.
While the initial focus is on visualization capabilities, the missing IDE features are actively under development. Beyond cross-platform support, which PyCharm features would you consider essential and would like to see the most?
* uv/poetry detection and environment use
* refactoring
* unittest/pytest support
* docker compose service support (e.g. if I have a docker-compose.yml file in my project directory with redis and postgres services, pycharm lists the services in a UI and lets me start/stop/restart them easily from the IDE.)
* django app/model detection and completion from those models as I'm building things that query them
* "compound" runners, so I can start a npm watcher and a python watcher at the same time, and bounce them together as I iterate
* The debugger is really, really good. And it's practically automatic to jump from the PyCharm debugger to the Clion debugger when I'm dealing with a python package that has C++ modules.
* django and jinja template support as I build out things that present my results.
* ability to connect it to a data source and query/explore using sql directly against that, and see tabular results to help guide my other explorations
* Vim emulation in the editor... IdeaVim is a really good vim implementation, and I find I hate working without vim movements and commands.
Don't mind the subscription pricing -- keeps all parties aligned.
The UI toolkit is especially exciting, been looking for something to replace streamlit.
Interesting! What are the trade-offs here?
For certain projects, forking/extending may be the right call. However, for the degree of customization required for Scripton, writing from scratch turned out to be the more viable path (vs attempting to workaround/rewrite yet another component in vscode). The trade off here, of course, is that you lose out on the familiarity and ecosystem that VSCode has built over nearly a decade. The hope is that Scripton remains sufficiently familiar (eg: Search / CMD+P / etc work similar to vscode) while being compelling enough in its own right.
Make it a Python runner with a visualization tool and independent from an IDE.
You will not have to catch up with the big IDEs, no need to maintain the IDE code, you get people using different IDEs to adopt your products and they can keep their tooling.
Its not a huge deal here (in theory) as this is a python IDE. One of the biggest issues I've seen with other editor forks / whatever is some first party Microsoft extensions (dotnet iirc, cpp) will not function outside Microsoft's vscode release.
Does your editor support vsix extensions? I assume no as you are just using monoco. Again, could be a dealbreaker for many.
There are a few different ways for the Python process to communicate (send data over for visualization, receive/transmit commands, etc) with the IDE. For instance, you could communicate over HTTP. Depending on the use case, that can have an appreciable performance overhead. Instead, Scripton uses a lower-level mechanism with a protocol optimized for sending binary payloads (eg: large numpy arrays, images, etc). This communication and processing is implemented in C++ as a native multithreaded node module. It effectively enables very low latency and high throughput visualizations.
My advice: Get the [planned] Windows version to shipping asap. Best of luck :)
For a long time, I had my own observability suite - a messy library of python scripts that I use for visualizing data. I replaced all of them with rerun (https://rerun.io/) and if you are someone who think Scipton is exciting, you should def try rerun too!
I use cursor/vscode for my development and add a line or two to my usual workflows in python, and rerun pops up in it's own window. It's a simple pip installable library, and just works. It's open source, and the founders run a very active forum too.
Edit: One slightly related tid-bit that might be interesting to HN folks. rerun isn't that old, and is in active development, with some breaking changes and new features that come up every month. And it means that LLM are pretty bad at rerun code gen, beyond the simple boilerplate. Recently, it kind of made my life hell as all of my interns refuse to use docs and try using LLMs for rerun code generation and come to me with a messy code spaghetti. It's both sad and hilarious. To make my life easier, I asked rerun folks to create and host machine readable docs somewhere and they never got to it. So I just scrape their docs into a markdown file and ask my interns to paste the docs in their prompt before they query LLMs and it works like a charm now.
Huh. Nice hack. I may have to give that a try for some of the more obscure stuff I deal with.
> Recently, it kind of made my life hell as all of my interns refuse to use docs and try using LLMs for rerun code generation and come to me with a messy code spaghetti. It's both sad and hilarious.
I'm really agog at this. Do your interns understand that if they're just an LLM prompt injector, their job can be done by anybody? I haven't bumped into this yet, but I think your reaction was a lot more positive than mine would have been.
I know that I certainly wouldn't be rehiring any interns that gave me that kind of grief.
I tried my best to explain it to them, and nudge them to using docs. I did live debugging sessions with them to try and 'teach' them how to use docs. Ultimately, it was taking away too much of my time for little to no return. I only started working in the industry like a month ago and it's my first time having interns that I didn't pick (back in school, I had undergad research assistants that I interviewed/selected, and they were all excellent) - still learning the ropes.
We did recently add an export for LLMs[1], but weren't quite confident in how the big models handled it. The biggest issue we kept running into was that it would prefer using older APIs over the latest ones. I tested it just now with ChatGPT, and it seems to be doing a lot better! The export is kept up-to-date with the latest contents of our docs, which update every release. Sometimes a bit more frequently, if we're doing drive-by doc fixes.
For convenience, here's a GPT pre-loaded with the file: https://chatgpt.com/g/g-674702fde5948191a810bdf73370b6eb-rer...
Could I drop rerun into this to improve my monitoring?
Rerun natively supports the server and the viewer being on different devices (https://rerun.io/docs/reference/sdk/operating-modes). In your case, in the script you are dumping data into csv, I'd add the relevant lines to log data to rerun.
On the desktop side, you can spawn a viewer that can listen to the stream and visualize it.
Nagios, Collectd, [Prometheus], Grafana
From "Preview of Explore Logs, a new way to browse your logs without writing LogQL" https://news.ycombinator.com/item?id=39981805 :
> Grafana supports SQL, PromQL, InfluxQL, and LogQL.
From https://news.ycombinator.com/item?id=40164993 :
> But that's not a GUI, that's notebooks. For Jupyter integration, TIL pyqtgraph has jupyter_rfb, Remote Frame Buffer: https://github.com/vispy/jupyter_rfb
pyqtgraph: https://github.com/pyqtgraph/pyqtgraph
Matplotlib can generate GIF and WEBM (and .mp4) animations, but not realtime.
ManimCE might work in notebooks, but IDK about realtime
Genesis is fast enough by FPS for faster than realtime 3D with Python (LuisaRender) and a GPU: https://github.com/Genesis-Embodied-AI/Genesis
i found with aider if you do README.md with a halfway decent "spec" it will try to comply in architect or coder mode. I've been messing with it idly, and i will try this tack - give it the spec for the library or whatever.
someday, and i threaten this all the time, i am going to launch a website where i put all of these little "tricks" that make sense post hoc :-)
(Can I access a mmap file, display it in real time with rerun and save a history at the same time?)
I've used the language for all sorts of things: web apps, web APIs, GUI tools, image manipulation, data processing and visualization, some data science, machine learning more recently.
I've used many IDEs over the years, currently on PyCharm.
Just to qualify the feedback.
Pros:
- It looks very pretty.
- Some nice time saving features.
Cons:
- Mac only.
- Subscription business model.
- Having to tie the code to the IDE.
Any one of the con's would be a deal breaker for me.
Overall I'm not sure what the target market is. Maybe I'm just too used to having free and/or libre tooling.
I'm curious to understand this better (as a fan of JetBrains): do you currently use PyCharm Community or does the JetBrains model not count as a subscription for you?
To Jetbrains, this had the problem of feast or famine and the non-predictable income. They'd need to release an upgrade when they needed money and they would hold off on releasing features as a minor release so that they could justify an upgrade later.
At some point (I want to say 2014 based on my licensing), they trial ballooned a subscription only model and got some extreme pushback about it. With that feed/pushback Jetbrains went to the perpetual fallback and subscription. It addresses the subscription issue - they now have a revenue stream rather than the upgrade. It also means that they do a lot of minor releases now with new features throughout the year.
The other part of the perpetual fallback is that if you have a subscription to a version for a year, you will always be able to use that version even if you cancel your subscription. If I canceled my subscription, I'd be able to use IntelliJ 2024.2 forever. I'm currently running 2024.3.3
One other bit on the subscription - it gets less expensive each year. I've got an all products pack for single user. My next yearly billing will be $173.00. https://www.jetbrains.com/store/?section=personal&billing=ye... - the 3rd year and onwards (I've been a Jetbrains used since the end of the world sale - https://blog.jetbrains.com/blog/2012/12/20/jetbrains-end-of-... )
https://sales.jetbrains.com/hc/en-gb/articles/207240845-What...
Related from 2019: https://news.ycombinator.com/item?id=21798033
OK I know reality is much less appealing than that. But I still prefer paper books than .CHM help files than really online documents.
Although personally, I don't know if jetbrains offers an actual physical copy (give me back the big box!).
It sucks that fast iteration is the new normal nowadays. It's not a bad thing if developers are eager to get their hands on a cutting edge feature, but I believe doing things slower but more thoroughly has its merit.
It included qualified technical writers. It included project managers would would ensure that if somethiung was added there was a specification so that it could be documented.
ie developers were not allowed to get away with only doing a partial job.
Are you sure this isn't what Scripton is offering? From the pricing page:
> All updates included while subscription is active
That doesn't preclude the idea that what stops when your subscription ends is the updates, not use at all. But I genuinely don't know either way.
1. Perpetual fallback licenses on SaaS products are (unfortunately) not terribly common - so if it's not explicitly stated then you can bet your bottom dollar that it's highly unlikely.
2. From the dev themselves in another part of this post, "The plan for now is just subscriptions. However, I would like to eventually have something like Jetbrains' "perpetual fallback license" where you can keep using up to a particular version after, say, a year of subscription".
I also think perpetual fallback licenses are great and will def use this for hackerman.ai text editor (when released later this year).
I also wish devs would start offer one time payments again (especially for downloadable software).
At work I do have the all products pack since we support multiple programming languages for our client libraries and custom integrations.
My only major complaint with jetbrains is having a separate IDE for .NET vs everything else.
In general, subscriptions are a high bar for me. You typically pay for them year after year but see minimal improvements. Back when I was doing Java development, I paid for my own copy of Idea just to get to use something good. But I don't think I would do that for a subscription.
Pycharm is like driving an automatic, whereas VSCode feels like driving manual. It is a tradeoff as always, so ymmv.
I'm trying to figure out how anyone could think that. Every time I switch to VS Code I feel hamstrung.
What do you find to be inferior?
Also the built-in type checker is just bad
Both work for Python syntax highlighting. But I've had several bugs in PyCharm that took several versions to get fixed. To be fair, individual extensions in VSCode can also have bugs, but I've generally found it easier to work around issues because it is less "bundled".
When transitioning from MechE -> CS, every programming interface felt unintuitive and daunting to set up. Spyder made it so simple to get started. It turned python into a Matlab-esque numeric computing interface, got out of your way and let you built whatever you wanted. It reduced the 'time to magic' like no other tool I'd tried. (Can I coin the term : 'time to magic'?)
If I had to setup PyCharm on day 1, I'd never have gone past the my first barrier. Before jupyter & colab, there was Spyder. It remained my trusty IDE for a full year until Jupyter notebooks & VsCode came around.
The OP posted a cool project, but 20$ a month for a nice VS code fork is absurd. Plus it's Mac only now.
https://xkcd.com/1205/ provides an idea of the cost of the time spent by improving a tool, or, equivalently, saved by paying for it. If you're paid even $50 an hour, a $20 / mo tool that saves you 30 minutes a month, cumulative, is already worth paying for. And this thing can save hours and hours a month for a particular kind of work.
I really dislike the idea of justifying eternal subscription cost models because of "ROI".
Every tool has an ROI, but you don't see photographers paying a monthly fee to use their camera, you don't see electricians paying a monthly fee to use their oscilloscope, you don't see carpenters paying a monthly fee to use their table saw, etc.
And this isn't Kickstarter - I'm not interested in investing in features/upgrades that the application might get at some point in the future, I buy software based on the feature set that it currently has.
And most important, if you stop paying, you will lose the gain from it. If dev screws up at some point, you might lose the gain from it. It's not really clear how updates are working. Are you forced to always use the newest version? Or can you stay at a specific version for all time? This uncertain factors and other, demand that the gain from a subscription is so immense, that you are willing to take the risk. And this tool here is not there yet, maybe never will; making it hard to justify a sub.
> Absurd is people paying 80$+/month for yt tv so they can watch ads..
Youtube is an external service. You are paying for their running costs, which you create. This IDE is local, and there is no guarantee which updates will come and which benefits they will have for you. So there is no "running cost" you create for them.
That being said, I purchased a copy for personal use almost 6 years ago for around ~200 USD and guess what? I just installed it on a fresh PC a few weeks ago, and it works perfectly. No subscription necessary.
* Most consumers now swallow a live service model and associated costs that they don’t want
* Most consumers now swallow the costs of west coast tech culture: cost of living, esoteric architectural choices, fad driven development, and hobby driven development
* Most owners of software businesses expect to get rich in a relatively short time frame
* Software is absurdly high margin if built effectively and distributed at (effectively) zero cost. Where do consumers ever see these savings when cost outpaces inflation?
* Record profits and layoffs being recorded by the broader industry
And specifically to the point of productivity tools inherently justifying nearly any price, this argument is fundamentally flawed because productivity is only measurable if it can be strictly defined and good luck with that one. Salespeople have made billions hawking that fallacy and people eat it up because American work culture fetishizes productivity.
This isn’t a critique of OP I really went down a rabbit hole exploring and appreciating this project and hope it succeeds.
The underlying business model of software is dystopian when compared to what it could be if everyone didn’t bind happiness to being cartoonishly wealthy in Menlo Park.
Say OP sells 1000 subscriptions. That's 20 thousand dollars a month. They sell 10k subs, 200k a month.
Or the project fails, and as a closed source tool I can't fork and fix issues. The only options are it becoming a multi million dollar company or abandonware.
I'd be open to it if it was 100$ with one year of free updates. But even then, I think Visual Studio( which is free for hobbyist) is the only closed source IDE I use. Everything else is open source and free.
Maybe I've been traumatized by Unity 3D, but I don't want to use a bunch of closed source tools. What if this becomes my primary dev tool, and OP decides to update the pricing.
If you're justification for a $20 subscription is that oh you're probably making six figures and this is making your job easier, then what's to stop you from pricing it at $50 a month. Why not a hundred .
Open AI has already started this bizarre slide into higher pricing tiers, I can use Deepseek or LLma3 for free, but if I'm using the most up-to-date chat GPT, I'll run into a rate limit and be told it's time to upgrade to a $200 a month service?!
The same argument can be made for the jet brains IDEs. But a closed source tool made by a solo developer just seems too risky for me, even if the OP was giving it away I'd be a little bit reluctant to use it.
https://en.wikipedia.org/wiki/Category:Discontinued_Microsof...
From what I can tell they went from having a dozen small dev tools into consolidating everything in VS Studio.
This has also been somewhat mitigated by VS Code, not everyone needs a giant 30GB ide to edit text. I think Microsoft is one of the better companies when it comes to developers. You don't even need Windows to compile Windows software... Unlike Apple that locks everything behind over priced hardware.
Not sure if today this is enough though without any kind of AI chat assistant. Trae [0] is based on VSCode and Jetbrains Fleet are good looking as well. Visualization is definitely a big plus but there is also alternative like using rerun [1] and dearpygui [2] or some VSCode plugins (Python Image Preview, AREPL for Python)- might be hard to compete with those free alternatives on a subscription model IMHO but good luck!
[0] https://trae.ai/
Find people who pay the $1000/yr to use 1 tool in Matlab, and start pulling them away.
I won't discourage them away from SWEs. Instead, I want to encourage them to sell to core engineers. I was a MechE for the longest time too. And this is a great Matlab alternative. In fact, I was exactly that MechE who was using HN to feel like a part of the tech community.
The top post is phrased as a sell. But, if I'd read it during my MechE days then it would've gone right over my head.
My biggest concern with this project is expertise and potential burn-out. There's a lot of writing from scratch that really begs to go through the gauntlet of open source.