bitemyapp / bloodhound

Haskell Elasticsearch client and query DSL
bitemyapp.com
BSD 3-Clause "New" or "Revised" License
424 stars 118 forks source link

Aeson lower bound loosening #114

Closed dmjio closed 8 years ago

dmjio commented 8 years ago

Since the latest aeson isn't on stackage yet, can we loosen the lower bounds of bloodhound to account for all packages >= 0.8 && < 12, excluding the problematic 0.10.0.0

Unless you have an explicit reason to avoid versions 0.8 and 0.9 I don't see why we shouldn't allow them to be used (0.9 is currently on stackage)

Or, would you want to put bloodhound on stackage ? :)

dmjio commented 8 years ago

It appears that this will indeed be problematic, since semigroups was added to aeson as of 0.11 and bloodhound uses NonEmpty :/

dmjio commented 8 years ago

I'll have to figure something else out.

bitemyapp commented 8 years ago

Unless you have an explicit reason to avoid versions 0.8 and 0.9 I don't see why we shouldn't allow them to be used (0.9 is currently on stackage)

Not avoiding, just legwork or API incompatibility (via CPP) I'm not keen on. If you can find a workable solution (no guarantees I'll agree with you on workable) then it'll go forward.

dmjio commented 8 years ago

My only thought would be using CPP flags in the cabal file, and then #ifdef'ing the NonEmpty instances. I assume aeson-0.11 will be on stackage soon enough though.

bitemyapp commented 8 years ago

then #ifdef'ing the NonEmpty instances.

Wouldn't that cause there to be a split in the API based on the CPP output?

I assume aeson-0.11 will be on stackage soon enough though.

Month or two? it's whenever LTS 6.0 hits, but it hasn't mattered since everyone vendors or extra-deps it. Not that I want it to be harder to use - but nobody's complained and I'm not breaking the API just to get the library in LTS sooner.

MichaelXavier commented 8 years ago

My strategy has been to throw the advance-copy version of whatever library into extra-deps and at the same time create a calendar event for a week later to check and see if that can be dropped. If not, kick the can down the road another week. Its great if you can use only things in LTS but something not being in LTS shouldn't completely prevent you from moving forward.

One thing worth considering though is that LTS does insist on a GHC version, so people on older versions of GHC are likely going to use extra-deps anyways becuase I don't think stackage makes a habit of backporting new developments to old LTSes that often. It seems like their opinion is to keep the Haskell community in sync with the cadence of GHC releases.