Project Unmaintained

274 views
Skip to first unread message

semperos

unread,
Dec 7, 2016, 10:13:28 AM12/7/16
to clj-webdriver
Dear Users,

I've marked the Github repo as unmaintained. It's been misleading not to include mention there and here that this project is unmaintained.

If you haven't, I highly encourage everyone to watch Rich Hickey's keynote from the Conj this year: https://www.youtube.com/watch?v=oyLBGkS5ICk

tl;dr If someone wishes to continue this project, I recommend you fork it, _rename_it_, re-version it, and deploy it with an appropriate, unique group id (unlike what I did several years ago by using clj-webdriver as a top-level group).

I am not currently maintaining this project and I have no plans to do so. I don't use this library for personal projects or at work, and it has been outside the realm of problems that I've been working on for some time. I also have an immense number of responsibilities between work, church, family, and local community obligations, and this project can't compete with those priorities.

The code and artifacts as they exist today are the final release of clj-webdriver.

Since the code is licensed with an open source license, is hosted on Github, and is used by many people, I will leave it where it is (on Github and Clojars) in perpetuity. If one of those services is discontinued, I will do my best (but make no promises) to make the source code or artifacts available elsewhere.

Rich's keynote struck a chord with me. I had plans in clj-webdriver to trim the fat, make the API more focused, and possibly provide alternative API's (e.g., a monadic one) to showcase what can be done with functional approaches. The "trimming of fat" would have resulted in breaking changes from the current minor version to the next, and Rich's point that if you're going to make breaking changes "you might as well change the name" immediately resonated with me concerning this project.

Since the current stable release of this library does not pull in a version of Selenium-WebDriver and users are required to specify their own version of that dependency, this library will continue to "function" as long as Selenium-WebDriver's API's remain compatible with the parts of it this project uses.

This kind of library presents a number of challenges that I'd like to highlight for anyone considering forking it and continuing to develop it in its current form.

Firstly, it's a simple wrapper around the Java API for Selenium-WebDriver. Other Selenium-WebDriver projects are actual re-implementations of the underlying Wire API and provide unique, idiomatic high-level API's that leverage their languages' strengths. Clj-webdriver does leverage some Clojure idioms, but it's debatable whether it's worth maintaining wrappers around large portions of the Selenium-WebDriver API. I think it would probably be a wiser use of time to make a library that focuses on providing pure functions that would compose well with the Java API that's already well-maintained by the Selenium-WebDriver community, instead of providing a wrapper function for every possible Selenium-WebDriver feature.

Secondly, Selenium-WebDriver is most often used as a testing tool. If you're writing a test suite for use by a QA team, then the use of Clojure is likely to be a tough sell compared to using something like Ruby for such tests. If devs are responsible for and maintain such a suite, then using Clojure might be more compelling. It's often a way to introduce people to Clojure, which is great. However, folks coming to clj-webdriver as relatively newer Clojure devs will soon outgrow the lessons that clj-webdriver can teach them (if they're using this as a learning experience), and so potential future maintainers of this project often (like myself) move on to other parts of their Clojure stack. More often than not, unless your job is maintaining a set of clj-webdriver tests, those other parts of the stack are much more critical to writing applications and are not limited to the narrow scope of testing web applications in graphical browsers, and so they necessarily take more of peoples' attention.

As a maintainer, this project, as a wrapper around the Java Selenium-WebDriver API, is not one that you can ever finish. Even if it were re-implemented to focus on the underlying Wire API, which is less of a moving target, browser evolution necessitates ongoing changes. So unless, as a maintainer, you're actively watching browser development, the Selenium-WebDriver project, you write Clojure, and are willing to test clj-webdriver against the different browsers and versions that Selenium-WebDriver targets, you're going to have a difficult time maintaining this project well.

So I'll reiterate, I think there are definitely nuggets of functionality that clj-webdriver has that could be packaged as a library of pure functions, without any dependence or real connection to Selenium-WebDriver itself. That's a library that could be written to completion and provide value, without the pitfalls of ongoing maintenance that the wrapper approach necessitates. I encourage someone to write that library.

All that said, clj-webdriver is _easy_ compared to a lot of Java interop, and often for testing tools easy trumps other concerns. That's the final challenge of this library, that it represents something of a dissonance with the ongoing struggle for simplicity that becomes part of long-term Clojure developers' goals.

Regards,
Daniel

Smock Jonathan

unread,
Dec 7, 2016, 10:39:41 AM12/7/16
to clj-we...@googlegroups.com
Thank you for all your hard work and dedication. I hope you get the rest and peace you deserve! And, thank you for explaining this in so much detail.

--
You received this message because you are subscribed to the Google Groups "clj-webdriver" group.
To unsubscribe from this group and stop receiving emails from it, send an email to clj-webdriver+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Smock Jonathan

unread,
Dec 9, 2016, 11:26:13 AM12/9/16
to clj-webdriver
Hey everyone,

I don't really have a sense of who is on this mailing list and what people are using this for.  We use it at work to extract information from websites, but I assume most people are using this for testing?

I'm not making any promises that I will pick this up, but I do have a list of ideas, gathered from the past couple years. Is anyone else contemplating this? Has someone already started?

Regardless, I'd be interested to see what people are doing and how they're working.

Thanks!
Jon

Jeff Hui

unread,
Dec 12, 2016, 11:53:27 AM12/12/16
to clj-we...@googlegroups.com
Hey Jon,

We’re used to use clj-webdriver at my company for testing our website before dropping down to Selenium to try and address any flakiness in our tests. That code was then extracted from our test suite into a separate library, limo, that we’ve open sourced. (https://github.com/mayvenn/limo). Since we’ve originally used clj-webdriver, it’s API is pretty similar.

If you’re looking for a functional API, Limo isn’t that. It’s primary goal is reliable tests – there’s polling logic for handling React-based sites like our own (see https://github.com/semperos/clj-webdriver/issues/142). It also works with Selenium objects directly (and doesn’t wrap Selenium objects in its own records).

But from that base, I’m sure it’s possible to develop a less imperative API. The project is pretty bare-bones port of the existing clj-webdriver api as is. It currently supports the subset of the clj-webdriver API we needed + multiple window support with the convenience of using Selenium’s API directly if you need to.

I’m also interested to hear about what others are doing. :)

- Jeff
--

You received this message because you are subscribed to the Google Groups "clj-webdriver" group.
To unsubscribe from this group and stop receiving emails from it, send an email to clj-webdrive...@googlegroups.com.

Smock Jonathan

unread,
Dec 16, 2016, 12:08:23 PM12/16/16
to clj-we...@googlegroups.com
Thanks Jeff! I realized I never said thanks! We're checking out limo :-)

To unsubscribe from this group and stop receiving emails from it, send an email to clj-webdriver+unsubscribe@googlegroups.com.

For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "clj-webdriver" group.
To unsubscribe from this group and stop receiving emails from it, send an email to clj-webdriver+unsubscribe@googlegroups.com.

hloedver....@lambdawerk.com

unread,
Dec 21, 2016, 4:16:12 AM12/21/16
to clj-webdriver
We have been using Selenium clj-webdriver at lambdawerk in Berlin. Sorry to hear that it's not maintained anymore, all the best to your future challenges. Looking at limo seems promising as well, hope that project gets much loving in upcoming months.

Best,
Hloedver Sigurdsson
Reply all
Reply to author
Forward
0 new messages