BugJail: New Java debugger – debug across time with mouse
bugjail.com
bugjail.com
The landing page wasn't quite ready for spotlight, but such is life :)
All feedback is highly appreciated, no matter how brutal.
And if you have any questions, feel free to ask!
>> All feedback is highly appreciated, no matter how brutal.
You should really get a native English speaker to proofread and correct the website. The content itself is fine but there are so many spelling & grammar errors in the text that it really starts to detract, and it honestly affected my perception of the quality of your software in a bad way.
Also not a big fan of the long-scroll style landing page in general, but that seems to be the flavor of the day now. I think some structure (index, menu) would make it a lot easier to navigate to the relevant information, right now reading top to bottom I had no idea what kind of other information could/would/should have been lower down the page.
Apologies for typos and grammar, and I hope you can also brutally criticize everything else beyond the surface! :)
I recommend removing the word "cheap" from your landing page. I understand the sentiment (and love it), but what may be "cheap" in one part of the world is likely "expensive" in another. It also cheapens (no pun intended) your value proposition from an enterprise perspective. Be confident and drop the word.
Also, perhaps in some fine print (or even better - a clearly visible and simple explanation) defining the scope of the perpetual license -- limited to +K (where K ≤ 0) major software versions or all future releases (K = ∞)?
What do you think would be reasonable price for perpetual license?
For the purposes of answering your question in the short-term: you might end up with a perpetual license single-developer price knowing that this initial set of customers will be innovators and an "investment" that will be on your books for quite some time. You could even time or quota-limit if you're looking for a specific growth trajectory and initial burst of revenue.
Given that this is perpetual licensing (and again - you need to decide whether this will be for all versions forever, or limited to +K major versions), you need to balance 12-18month runway (cost-feature) planning against any margin you're hoping to generate (maybe none if you're aiming for ramen profitability).
Feel free to reach out if you want to discuss further.
Of course I'm not expecting to be spoon-fed with a ready made pricing model, but was just trying to get overall sentiment..
You make a lot of great points, and this is one area where I definitely need help, so thank you for your offer. I'll get in touch after I've survived today :)
$100 - personal license, must be bought by an individual (not company), but can be used for commercial purposes. Best effort only support, pushing folks to use a support forum.
$200/seat - business license version of above, but including email support, just without an SLA.
$400/seat or $15/seat/month - enterprise license, includes priority support.
Based on experience, providing support is the most “expensive” and time consuming portion, so make sure you are pricing high enough to cover that, especially with perpetual licenses.
You should definitely charge for upgrades. Make the license for a particular version perpetual, but no upgrades after a year unless they pay again.
Most of your money will probably come from large corporate licenses. Think about how to structure them.
The main thing I'm uncertain about is the value of X :)
I'm doing this mainly to help other developers, so I don't care that much if my monthly recurring revenue or whatever doesn't please Sandhill Road.
If the goal is to help as many developers as possible, then being profitable and/or well funded makes achieving that goal easier, through hiring more employees and developing better product faster. Which in retrospective sounds obvious.
I'll still keep perpetual license as option, but stop being arrogantly non-commercial.
It probably doesn't matter, but the third screenshot wasn't any kind of planned attempt of being edgy/cool. Just another 16h coding day ending in bit more lighthearted way.
Some complaints about the linux packaging:
The website mentions a license, but doesn't appear to provide a link to one, and my .deb download didn't come with a license either.
You're redistributing Oracle Java for some reason? Might want to just mark that as a dependency, and I hope you have a license for that.
You have two copies of libEGL.so for some reason.
Sometimes the directory is BugJail and sometimes it's bugjail.
I don't use a distro that takes rpm or deb packages, maybe there could be a .tar.gz download for us?
- The Linux packaging will be re-done from scratch (previous beta had completely re-done packaging for Windows and Mac, re-done Linux packaging coming in next beta) and I'll make sure all these get fixed.
- The license is displayed in the launcher screen (before you click "Enter BugJail"), but i'll make it also available online, good point, thanks.
- Redistributing Oracle JRE as part of BugJail package is done exactly according to their redistribution terms, no problems there.
- The reason for redistributing JRE has more to do with Windows and Mac, where 'marking it as dependency' is not an option. I'll reconsider how to do this when the Linux packaging is rewritten.
- Would AppImage packaging work for you? What distro do you use?
But sure, I'll get .tar.gz done.
And if you'd like to get notified when done, just send your contact info (my email is in the 'contact' page). Thanks for the feedback!
I understand on Windows/Mac you have to package the JRE, but I'd recommend considering using the distro for that functionality on linux - it's generally frowned upon to re-package stuff in the official repos.
I think an AppImage would generally be worse, I'd rather be able to use my system's JRE and libraries. I'm on Arch, so if you provide an archive of the application we can work with that. If you really want to go above and beyond for Arch users you could make and publish an AUR package.
Why does the website showcase outdated content? Personally, I will drop off at this point. You might have put this message pre 2018, but you should keep the landing page up-to-date.
Also, as one of the other commenters pointed out, you should spend some extra bucks and proof read the landing page. Sentences like "And cheap perpetual license after that" does not go well for most customers who are willing to shell money for a product. If your product is worth it, people will pay for it.
Tech is just a part of the equation. If you don't take care of other stuffs like messaging you are sending wrong signals to your potential users.
I agree on all points, and have no excuses; the landing page wasn't ready for being surprise featured in HN.
Many thanks for your feedback & apologies that I provided such a crap experience.
On the visceral side: put up some example videos of use. If you can't do it to the level of polish you like, get someone else to do it for you as an unofficial one. IntelliJ is already slow, and I'm worried about event-recording debuggers being only useful for small programs -- larger ones eat up too much RAM and cpu overhead to be tractable.
On the power side: show some sophisticated use cases using real libraries and real problems to fix. What stuff can I find out directly that I can't easily do in IntelliJ?
Can I directly query the DB? Can I use those queries' results in regression tests?
When I read the page, I thought "Oh, like the valgrind family of tools for Java, nice." So perhaps some pre-baked validations using the tech you've built could be useful.
Yes, have one (or several) customer(s) write a blog (that you can help proof-read, add links to documentation, your example database, your reference guide...) on one or two features. "here's how I did it before with eclipse/intellij, how it was long and painful and manual and involved and xxxx. Now with bugjail I can do this with xxx and xxx". A blog I can read and you can polish bit by bit, asynchronously. Video can be hard to follow, copy-paste, with good and clear simple English, or you could caption but then again, lots of energy to spend!".
Maybe offer some incentive to this (those) customers of some kind (5 year free support, a number of enhancement tickets...).
The best way to demonstrate (I feel) is sometimes a happy customer with complex but satisfied needs.
About performance impact and program size: BugJail can be used also with hardcore programs, like databases and compilers, where event based record-and-replay debuggers typically struggle. There's still significant performance hit, around "twice as slow", but it won't be orders of magnitude slower.
Also, BugJail is tested with large applications. For example one test is startup sequence of Eclipse, on 5 year old box with 32GB. The result is ~700 million rows in database, in ~30 seconds. It does consume all memory, and your workstation will scream for mercy, but it gets there :)
Direct DB query is not available in current beta, but it is partially implemented in dev version: it shows the results, but there is no navigation from the query results to CallTree, Source code view etc. So: coming, but not yet.
I hope I answered your questions at least partially? It's 7AM in the morning, after one of the hottest days in Australian history, and a surprise appearance in HN front page, so I might not be quite the sharpest tool at the moment :)
I think it would be kinda cool in a way to go back to dual-machine debugging but I’m not sure everyone else would agree with me.
Also, I've tested dual machine debugging with BugJail, as part of spike towards CI/QA/SIT/UAT/Pre-Prod use. It works okey-ish but the (crappy 1GB) network became bottleneck and it was slower than single box.
BugJail does compression around storage layer, but nothing before the network hop from capturing agent to processing server.
And fully agreed of course; when BugJail graduates to CI/QA/SIT/UAT/PreProd use, it will need compression before the network hop. But that is some time away. Currently the agent and server run in same box, and compression between them has negative net effect (compression uses more CPU than what shifting around less data saves).
Basically they didn’t make the client smart, they made a proxy and spam loopback.
Good luck, it seems with all the critics with the copywriting on your landing page, you've piqued the interest of a lot of people. I hope you'll feel encouraged by this.
This isn't quite time travel, and it's not quite too expensive, and so on. Well, it's a nice idea, for sure, and it needn't be Java-specific either -- it generalizes.
Of course, you might need enormous amounts of memory or storage if you want to observe a busy process for a long time, but presumably one would only do use this tool for brief periods.
Also, BugJail is designed so that in normal use (webapps etc) it writes fast enough to database and never runs out of memory. Though, hardcode programs like databases and compilers exceed that, and currently don't buffer to disk, but crash it hard..
If you configure BugJail to capture only your own code/packages (--primary option) the disk usage is not that bad either. If you don't, you'll burn in the magnitude of ~10MB per second.
Give it a try, and let me know how it goes?
And thanks for the pointer to GraalJS/Truffle, I'll have look and perhaps that provides great way for doing the instrumentation side.
I have just one question, what will the price be?
However, I can promise that the pricing model will be perpetual license based, NOT a subscription that "only costs you one cup of coffee per day"..
I'd want testimonials and videos of it in action, but if anyone I trusted vouched for it that price would be a no brainer for me.
Also their personal license which isn't advertised heavily is $99/yr which allows for commercial use but must be paid for by the individual rather than a business entity. I like this license because I like to take my tools with me and doesn't make me beholden to purchasing/procurement departments of the companies I do work for.
Earlier examples: "Debugging in the (very) large", which describes how Microsoft used Windows telemetry, especially for debugging weird slow-down glitches. In the networking domain, where there is AppDynamics for trying to debug the interactions between network and distributed services.
I'd love to see data-science style debugging much more accessible (especially in Python). And it's great to see that you're making a serious effort to get the user experience right -- though I hope that the underlying data will also be accessible from more capable data science platforms.
You can load the data files directly to Spark, Hive or anything else that reads ORC, and then use Python to query, visualize or get statistics from the captured program execution.
Give it a try and let me know how it goes?
But the current beta version is not robust enough and doesn't handle long captures well enough. I want to make sure that BugJail doesn't waste people's time, hence the license allows only capturing from local workstation.
How is this possible on the JVM?
(I’m aware of the instrumentation API that profilers use but I thought they had to do sampling to limit interference with program performance and they are not capturing all the data req’d for debugging either.)
Anyone know?
If there's interest, I can write a blog post about this.
However, these days I rarely need to debug programs while developing - I usually use some combination of TDD with unit/integration testing and it gets the job done with the added bonus of being easy to maintain down the road.
Of course if you're on a project where time to market is critical and you need to sacrifice tests, I suppose a debugger is required. But then again, you're probably not using Java either.
I use the debugger to set breakpoints when running my unit tests all the time. It lets me understand the code better when developing it.
Also convenient when pasting in data from production into the unit test to find what is causing the bug.
Other than that, seeing exactly how long every single method call took is awesome. I think there's a lot of potential, but without the ability to search I can't see myself reaching for this again
The search functionality is currently under development, and it's by far the most critical 'missing' feature.
As a workaround for webapps: using the 'Capturing Assistant' and configuring BugJail to capture only your own packages helps a lot. That way you usually see clearly which thread handled the request, and also have less app-server / framework level crap that you need to expand through before you get to your own code.
If you'd like to get notified when the search functionality is available, just shoot me an email (my email is in the contact page).
Thanks for providing the feedback, and sorry that the initial experience wasn't better.
As for the search/query timeline, I'm afraid to say anything more exact than "month or two". The core search/query is working on dev version, but it needs a lot of work.
A specific issue I ran into was that multi dimensional arrays do get logged as changing when a value is set in the bottom layer. This meant for my application the were a bunch of init calls setting that value, but none of the actual logical changes were tracked.
The line/statement level traditional debugging is possible to implement with currently captured information, but the implementation is seriously hard, likely in 2021+ timeframe.
About the specific issue: I'd really like to get that fixed, do you think you could shoot me an email so that I can followup in case that i cannot repro the bug (my email is in the contact page)?
Many thanks for the feedback & apologies that the initial experience wasn't so great
I look forward to seeing what bugjail becomes in the future.
[0]: https://gist.github.com/TheThirdOne/7af9356dfb89d21816250017...
Visual Studio has this.
It’s called time-travel debugging, and it makes your code run really slow :)
I think it could be a big barrier to adoption, considering how Java 8 is EOL.
When the previous major beta was released there was one dependency that didn't support Java 9 and locked everything to 8.
If you'd like get notified when Java 11 support is ready, you can just send one line ping email (my email address is in the 'contact' page).
Many thanks for the feedback!
There is some reference to a beta in 2018. Should remove that.
Also, a video of the thing in use would be helpful. Put it right up at the top. Show me something I can't do now. Include specific examples.
And agreed, video would be great, but it takes fair bit of time away from development, so I'm undecided.
If I were doing it, I'd budget 4-8 hours of work and close to zero cost.
For normal web/business/enterprise applications you can configure BugJail to only capture your own packages, which massively reduces the file size (and performance impact).
To give concrete example of hardcore scenario, capturing startup of Elasticsearch results in about 85MB file.
There is no way to enable capturing dynamically, and this is likely never going to be supported, due to the way how BugJail works (it reconstructs the program execution, so if beginning of the execution is missing, "things are not fine").
Based on the stage they're at, I'd save optimizing the landing page design for the future.
Though, I would put effort to better describe the problem on the landing page.
One quick note though, you might want to consider removing the politics from your screenshot before really releasing this product. You've got a great product here, but there's no need to inject politics - even if it's amusing to some. It takes away from the seriousness of your project and makes it feel more like a personal side project instead of something I should pay for and build into my workflow, in my opinion. Just my two-cents.
I look forward to your feedback on the actual product, be as brutal as you can / want! :)
The left side 'CallTree' is fully functional, and shows owner instances, arguments and return values. If you click those, then the Object/Array is displayed at bottom and is expandable just like in normal debugger (+slider to change debug time). So only the right side "Source" view is missing if you don't have source.
If the above doesn't work, could you get in touch and I'll get it sorted out? https://support.bugjail.com
And fully agreed on Java 9+ support, coming in next beta.
Thanks for the feedback!
is there any progress on this project (bugjail in general I mean, not android)
reminds me of chronon. any similarity?
Isn't BugJail just a reverse debugger?
No. While BugJail does have similarities with reverse debuggers it is actually quite different ...