Re: Cross platform
Additionally, we found that the cost to continue to support Solaris was very high, and that it was increasingly becoming an obstacle to developer productivity. Among the difficulties we experienced:
The ecosystem is fragmented: You say you want to run on “Solaris”. OK, fine, but which one? Illumos? OpenSolaris? OpenIndiana? SmartOS? Oracle Solaris? OmniOS? Do we release for one of those? If so, which one? All? How do versions relate across them? What is the level of binary compatibility? Which versions do we need to support, on which variants? How do we certify that we support all of them? Linux suffers (or even benefits) from a similar profusion of flavors, but we have a significant population of users on each of the major different flavors, so it makes sense to explicitly support them all. Not so for the numerous Solaris variants.
Our development tools work poorly on Solaris: Clang doesn’t support Solaris at all, as far as we can tell. Golang doesn’t consider it a first-class platform. GDB seems unable to handle the simplest of tasks when confronted with threads on Solaris. GCC appears to not fully support important C++11 features like the thread_local keyword, due to missing support in the Solaris C library, at least on the versions we used. Obviously, all of those could be fixed if there were a pressing commercial upside to doing so, but we don’t see that to be the case.
Lack of developer familiarity: While several of our senior developers know their way around Solaris well, our junior devs have never touched it. Investing in teaching them is of questionable value. Sometimes, though we try hard to scrub them out, we find that some tests are flaky. Sometimes a failure exhibits on Solaris, but the issue isn’t specific to that platform. Should we be investing the time of our most seasoned engineers to track these down to prove that they aren’t Solaris specific?
Operational difficulties: Most of our CI testing is done in AWS. On multiple occasions, our Solaris images have simply stopped working, and repairing them took significant engineering work. The most recent outage was particularly troublesome and time consuming. The engineering effort required to sustain the platform does not seem warranted.
The future of Oracle Solaris, perhaps the one true Solaris if you had to pick one, is murky at best.
While no single one of these issues seems sufficient on its own to argue for terminating support for Solaris, when combined with the observed lack of interest or use, it makes for a compelling case. We would rather invest our time and effort developing for the platforms that our users actually use. So, with some real sadness and fond memories, we have decided to say goodbye to Solaris.