Show HN: Helium - Simple web automation (heliumhq.com)
I'm working for a startup called BugFree Software and would love to hear your feedback on a new product we are launching today.
Helium is a library that wraps around Selenium to simplify web automation. It does away with many of the technicalities involved with web scripting. For example: Here is a Selenium script. Can you guess what it does?
>>> ff = Firefox()
...
>>> text_area = ff.find_element_by_id("u_0_1q")
>>> text_area.send_keys("Hello World!")
>>> button = ff.find_element_by_class_name("_42g-")
>>> button.click()
Here is the same script rewritten using Helium: >>> start_firefox()
...
>>> write("Hello World!", into="Update Status")
>>> click("Post")
Can you now guess what it does? That's right; It updates your Facebook status.In an extended comparison that we were invited to write for the December issue of Professional Tester (professionaltester.com), we found that an example script automating Gmail took 66% fewer lines of code and 75% less effort using Helium than with Selenium alone.
You can find more information and download Helium from http://heliumhq.com. Any feedback would be highly appreciated.
Hoping to hear your thoughts and comments, Michael Herrmann heliumhq.com
70 comments
[ 2.3 ms ] story [ 63.9 ms ] threadThis seems to make it harder for independent developers to devote time to creating great tools. Is the future of software tools in the side-effects of teams at large organizations open sourcing things they needed to solve their own problems?
But I'm torn. On the one hand, I support developers getting paid for creating tools/libraries (instead of working on in-house software; or consumer/business startups). I think it's better for the world. It's also how I've supported myself for the last 10 years.
On the other hand, I don't like your email-wall etc.
As I see it, you need to serve two markets: the businesses that will pay for your software; and everyone else, who won't pay, but will promote it word-of-mouth/google juice, through blog posts, stackoverflow answers, reddit/HN posts/comments etc etc etc (this is incredibly helpful for getting sales). Thus, you need to serve both, and make it both easy to buy, and easy to not buy.
1. Your email-wall is one solution. People can still get it free, they just don't like. I think it will fail (but it might work, who knows?)
2. Another way is two versions: free/community/demo and paid. Find features that matters a lot to businesses (or sounds like it), and doesn't matter to everyone else. Quotas are another way, although hard to enforce in a library (easy in a webapp), but also consider that legit businesses prefer buying over cracking. (e.g. pkzip got pirated like crazy, but the guy also made money).
3. A way to do open source is "dual-licensing": GPL + commercial. The GPL forbids closed-source distribution, so you license it to people who want to distribute it. The problem with this (I did it) is long sales-cycles, because there's no urgency for people to buy, they already have it. (they do eventually pay, it just takes a long time). Ghostscript does something similar.
But your big problem is more subtle: you have a cool idea that is truly valuable to businesses - but it's easy to implement. I think most coders here could hack a barely-working prototype within 2 hours. All it takes is one of them to publish it on github, and keep working on it for 6 months, and you're finished. It's not because theirs is better than yours - but because they will get ALL the word-of-mouth and google-juice.
Thus, you need to serve both markets. This denies oxygen to the copy-cats - why would anyone bother with that half-assed knock-off, when they can get the real thing from you? Even if someone starts a clone, it will languish without any interest or feedback. People also like to reward originators (provided it doesn't actually cost them anything...).
Another thing you can do is implement difficult features - from skimming your site, it all looks pretty easy... but if you find some obstacle that seems to kill how it should work, that's a GREAT thing. Solve it, and you have a barrier (this is what happened for me). Or as Joel said, "where there's muck there's brass".
But the most important thing for your long-term success is to realize the situation is dynamic. You have to keep improving constantly (this often means discovering new ways to improve, even when it seems there aren't any). Even if someone copies, you still have the latest and greatest. Thus, you can measure your barrier in time - how long before they catch up? Even if it's only 6 months - or even 1 month - provided yours is always significantly better, everyone (businesses and others) will prefer it. There's also some lag, that it takes for word to get out of a competitor, to build word-of-mouth/google-juice, and to convince pragmatists that it really is credible. So this "market" lead also gives you some time (probably only a few months though).
Note: even when hackers are no longer excited, businesses will still be interested - because they don't buy cool technology, they buy solutions to their problems. They don't care how sexy it is, ...
However, maybe google juice isn't that important for your market... if you can reach them in some more specific way, you don't need lots of freebie-loving hackers. Also, there's a downside to lots of free users: by whetting the appetite of people who will never pay, you create a vacuum for a clone to fill.
PS: rmrfrmrf's (https://news.ycombinator.com/item?id=6915104) comment on Heroku's plugins sounds close to "service components" I mentioned above. Building on his idea, http://pingdom.com offers free user alerts, and https://travis-ci.org/ offers continuous integration testing via github hook - both have a free tier.
I can see your point of creating a "vacuum". Since we are giving away licenses for free now, the challenge will be to not let such a vacuum happen, yet create enough demand for businesses to pay for licenses.
I really don't see us offering a hosted SaaS platform at the moment. I can see the advantages for the subscription model, but we're busy implementing Helium for languages other than Python, so don't have time to set up a platform. It's just not our core competency.
You have a lot of criticism for how we position ourselves, and our product. I deeply believe that there is a market for a tool such as Helium, be it open- or closed source. Assuming that we have a product that the market wants, can you recommend a way for us to make this product open source, yet generate an income that allows us to sustain its development?
The future I see is in crowdfunding development up-front. It takes a social change alongside the development of technology to facilitate that (improved payment processing would help; lowering transaction fees and allowing micropayments, etc.). We're getting there, but it's really tough.
I don't have a good answer. But copyright and license agreements aren't it.
Hate to be blunt, but your business model isn't viable. If you want to monetize, you either need to provide a service to developers or a product to end users.
(just kidding, I know mapleoin)
Given following markup:
Does write into #foobar? Just to clarify since position of those two elements might not be similar at all.If there are multiple occurrences (eg. two "First Name" fields) then Helium scans the page top-to-bottom, and closest to the element you last interacted with. Like a human would normally also do.
I would also suggest you put a screencast of a hello world. With many people new to testing using headless webkit, they may have the wrong perception of how selenium tests are run. Additionally what may not be obvious to people used to javascript-based headless webkit tests is that Selenium/Helium tests are written in python. Might want to clarify that as well.
Good luck!
thanks for the suggestions! I'll discuss them with my colleagues.
CSS selectors are supported, because Helium is fully compatible with Selenium. Eg.: You can say click(driver.find_element_by_css_class('btn')), where click(...) is a Helium command and driver.find_element_by_css_class(...) is from Selenium. Helium and Selenium are 100% interoperable.
Thanks again! :-)
I would love to use "Helium" soon. All the best for your work.
You can already use it today by downloading from http://heliumhq.com/download.
Thanks for the kind words!
The analogy extends further: We were invited to write an article about Helium in the December issue of Professional Tester (professionaltester.com) in which we compared automating Gmail with Helium vs pure Selenium. The code with Helium was 66% shorter, but ran on average 26% slower than an (optimized) Selenium script. You can find a thorough analysis covering the differences between Helium and Selenium here: http://heliumhq.com/AutomatingGmailWithHelium.pdf
You're going to have some big obstacles to overcome trying to get people to pay for this versus using Selenium.
$200 per year subscription for 1 machine for the basic license with support only for the installation, basically. And probably bugfixes, I'm guessing.
If for whatever reason I'd like to create a 3-4-5 VM test farm I'd have to pay $600-$800-$1000 per year.
And, again, subscription. If I don't pay after one year I cannot use this anymore.
Combined with the closed source factor, I really don't like it, sorry.
Here's why we think our subscription model makes sense: In our evaluation (heliumhq.com/AutomatingGmailWithHelium.pdf), developing a script with Helium took 75% less effort (man-days) and 66% less code than a script written in pure Selenium. The average developer salary in the US in 2010 was $90k a year(http://money.usnews.com/careers/best-jobs/software-developer...). Say this developer works 260 days a year, so makes roughly $350 a day. If it doesn't take him 75%, but only 25% less effort to write and maintain some web automation code, then each day of him working with Helium saves the company $87.5. This means that after about 11 working days, using Helium will have paid off, leaving potentially 249 more days in the year during which to reap Helium's benefits.
This gives you a target: in which businesses are they doing lots of it? Have some copy on your website that speaks to the managers of those specific businesses - since they are the ones who decide and pay for it.
The scenario plays out: developer is sick of testing, hears about Helium, tries it, it works great, he badgers his boss to buy it, boss looks at website, says this is fantastic, let's buy 100, he goes to the next tier of management for approval, and has all the answers for their concerns.
Make the license "floating" as you said in another post and reduce the cost to $99. Then make a professional edition (extra features) and an enterprise/volume discount edition (no necessarily extra features but can buy in bulk for reduced overall cost).
Similar to what people like Atlassian or Jetbrains are doing, basically ;)
(also kudos for the starter license addition, the "social" license - nice touch)
1. Open Core Licensing - You could create a community edition and an enterprise edition. The community edition would be completely open source and available for free. While you work on the community edition you could identify the 5% of additional features that certain customers (Enterprise for example) would pay for. I think this is a pretty fair way to balance between giving away a free product and creating an enterprise/professional edition where you'd charge a license fee from customers who would have the ability to pay for it. One of the challenges with this model is to make sure you find the right balance between the community and enterprise edition since some people will be upset that certain feature aren't released in the community but make it into the enterprise edition.
2. SaaS - If you open source it and gain widespread adoption - at some point it might makes sense to create a service that allow users to run these tests on the cloud and create a complete suite of features around it. Many developers are happy to pay a service fee for using an hosted version of the open source software that allow them to not deal with hosting, patching and servicing that software. If you do that releasing it under the AGPL will give you a competitive advantage since if someone would like to create a hosted service and improve the open source software, they would have to release all changes to the community (or license a commercial version from you), however if you decide to add some secret sauce in the hosted solution, you ARE NOT required to release it to the community since you could license it under a commercial license to yourself.
3. Offer professional services, support and training - Once developers will start using this in their workflow and start being dependent on that software, they will want the peace of mind of paying for support (or the ability to contact you and ask questions). You could have various SLA of support. For examples: Community edition (FREE) would have access to community forum where users could help each other - at first you'd seed that forum with your own support to kickstart the community. Then you could offer several level of support, from email (9-5 or 24/7) to phone support to various customers. Additionally you could offer up to a certain amount of training or consulting to write custom tests for customers who will need your help integrating this into their workflow. Most often people will opt for paying for a basic license even if the software is free just so they have someone to nag and talk to if things go south.
There are more ways that you could monetize open source - if you found this reply useful and would like to learn more - feel free to reach out to adam (at) binpress (dot) com - I am the co-founder at http://www.binpress.com - the marketplace for commercial open source - we're on a mission to help developers monetize their open source projects.
I see several advantages with open sourcing our product. Most notably, wider adoption and community support available on the net.
Unfortunately, all three options you propose defer the point in time from which we can earn money. For a startup, this is very risky. If we run out of resources before say we have enough users to set up a SaaS service or offer support & training, we will go bust with nothing but wasted money and time on our balance sheets.
I am sorry to be so direct, but I think the three options you propose are not currently viable for us. We might revisit them later though, and I might be in touch via your email! - when we know more about the limitations of our current approach.
Thanks again! Michael
I suggested a few ideas that could work and would basically allow you to enjoy from both world (both open sourcing your product and monetizing it) however I can understand if you think you don't have the time to get the kind of adoption you'd need to successfully open source it.
Additionally this could be done backward - you could start with your current model and at some point once you are more economically confident switch to another model that is more open source friendly.
Good luck! :)
http://www.sencha.com/forum/showthread.php?269640-Why-the-Pr...
There are more examples in that forum demonstrating that while trying to appease those in need of a community edition, it's easy to wind up 'doing it wrong'.
Edit: not focusing on any particular method; just pointing out that any balance between commercial/open source can cause hard feelings and takes extra work to manage
As far as I would be concerned, Forums should be open to everyone (paid and non-paid) customers and support provided by the community for the community.
Paid support could be additional add-ons in the forms of email and phone support with varying level of responsiveness (a-la-SLA).
We should ditch NGINX (http://www.hipyoungstartup.com/2013/11/we-should-ditch-nginx... )
discussion: https://news.ycombinator.com/item?id=6799029
If my company is creating lot of value and part of that value is enabled by software I use - I think it's only natural that I pay back some of the proceeds to support the software I use, especially if in the process I'm getting more features and better support.
Feedback is definitely important and useful but take it with a grain of salt. The HN crowd is a rather biased one and doesn't really reflect the broader dev world. Maybe try attending some dev meetups where you are likely to get a more diverse opinion.
You've already quit your day job to do this, unless one of these folks is going to be paying your rent, you should absolutely focus on monetizing your product.
In terms of the open vs closed source issue, I do agree that dev products should make their source code available, but that is only so it is easy to fix problems and address security concerns. You don't have to make it "open source", as in: allow people to freely alter and redistribute. I use this same approach with my company's product, which is also a dev tool (see my profile if you want to check it out).
So you give the source code for your product to your customers, once they have bought it?
There is a small portion of it reserved for commercial entities, mainly the source code for our middleware, but even that will be included in the future.
[o]http://watir.com/
However your license condition:
"If you want to run Helium on another machine then you must first remove it from the computer you were using it on previously."
I work across a few different machines - work PC, other work PC and PC in lounge at home, VM's etc. This license condition just isn't practical or financially viable for solo developers or small dev shops who work like this. Do you actively check for multiple installs under the same license i.e. with a registration server? Altova XML Spy used to do this and it quickly got binned after the first year's license came up for renewal because they messed up the licensing records (PC crashed, couldn't de-register in-use licenses etc, hassle, hassle hassle) and we had developers working in VM's for a bunch of different projects all at once. Yes we could defeat the LAN sniffing it did to find out if two copies of the XML Spy were running with the same license, but it was too much effort and we resented having to do this - despite each dev being properly licensed.
Vendors such as JetBrains and RedGate license the software to me/company for use by a single developer/user, I don't have restrictions such as "you must first remove it from the computer you were using it on previously".
I/we are happy to buy licenses for each developer on our team "using" the software, but not for each and every VM or dev env a single developer is working in. As such I haven't bothered to let my colleagues know about this tool which sounds pretty cool, nor have I tried to download it (forcing me to part with contact details to try something really puts me off).
I understand that you have to eat and pay the rent, but even for a company like ours, that has a fairly generous budget for development tools, this type of "per-installed machine" license is considered hostile for the type of tool being sold.
I'm generally not a negative person when it comes to "Show HN" and I truly appreciate the efforts people put into their projects whether it be for a paid-for product or showing off some hacks or tricks, but your license....it frustrates me.
For example, today I'm running three Linux VM's on my PC, each one has a launched instance of PyCharm because I'm multi-tasking over three different projects and switching between them as and when I need to. If I couldn't do that with PyCharm then I'd be buying a different tool.
ps: don't apologise, I suspect this is probably your first foray into licensing, I hope the feedback is useful.
It's not our first foray into licensing and we actually have offered a "floating" licensing scheme which seems to be what JetBrains offer before. We just have not implemented (=coded) such a scheme yet for Helium.