apache / couchdb

Seamless multi-master syncing database with an intuitive HTTP/JSON API, designed for reliability
https://couchdb.apache.org/
Apache License 2.0
6.26k stars 1.03k forks source link

Document supported hardware architectures #4216

Open zamazan4ik opened 2 years ago

zamazan4ik commented 2 years ago

Hi!

I have checked the documentation but did not find any word about supported architectures - only about supported operating systems.

Could you please put the information about supported architectures to the documentation please? E.e. about supported architectures for different operating systems, some specific requirements to the supported instructions, if you have any (e.g. maybe AVX is required - I do not know).

This kind of information is important for the end-users.

Thanks in advance!

big-r81 commented 2 years ago

The Apache Software Foundation - and CouchDB as a project of the ASF - produces open source software. All releases are in the form of the source materials needed to make changes to the software being released.

As a convenience to users that might not have the appropriate tools to build a compiled version of the source, binary/bytecode packages MAY be distributed alongside official Apache releases.

So if Linux, macOS or Windows is running on your hardware architecture, then you have a good chance that you can compile and run CouchDB (all dependencies included).

zamazan4ik commented 2 years ago

So if Linux, macOS or Windows is running on your hardware architecture, then you have a good chance that you can compile and run CouchDB (all dependencies included).

Good. Am I right that you support all architestures on an equal level? E.g. x86-64 and s390 are on the same support level? Could I run the CouchDB on CPUs without AVX and/or some version of SSE?

big-r81 commented 2 years ago

Am I right that you support all architestures on an equal level? E.g. x86-64 and s390 are on the same support level?

No one said this.

Could I run the CouchDB on CPUs without AVX and/or some version of SSE?

Do you have a concrete problem?

zamazan4ik commented 2 years ago

Do you have a concrete problem?

I am investigating different databases for our internal purposes. And one of the criteria is support for different architectures since we different servers (x86-64 and ARM based for now, maybe Loongsoon a little bit later). I am trying to find the information regarding the support level for each one in the documentation.

That is why I want to see such information somewhere in the documentation.

lostnet commented 2 years ago

Adding foundationdb as a dependency would have brought in AVX instruction requirements (or their emulation) for couchdb 4+ but that project was suspended. Spidermonkey is an example of an existing requirement and doesn't support every possible architecture, but does have support for s390. For example riscv linux patches would be needed for spidermonkey_78- and show references to s390 being present.

Distribution/arch combinations with convenience packages are usually sourced from a pipeline that runs the test suite in jenkins so they have a higher level of support in that the results will be examined before approving a new release. For other combinations you would want to document progress/success in getting all the dependencies and running the full couchdb test suite for future problems to be identifiable as regressions.

zamazan4ik commented 2 years ago

@lostnet maybe we can soemehow put the information about currently tested on Jenkins architectures into the documentation? It will simplify research on topic "Which architectures are supported by CouchDB" and for future users will be no need to do their own investigations again and again.

lostnet commented 2 years ago

Hi @zamazan4ik there was a grid of possible targets in the couchdb-ci Readme but it was removed for always getting stale and there's a section on other platforms for anyone trying to raise the practical level of support of another platform. I'm not really sure it fits into the general docs, it might be fruitful to look for old dev discussions on the topic of platforms and make a proposal for something that could be helpful. I generally think it has to be investigated again and again since couchdb's ability to be used is really just a consequence of dependencies each of which can reorganize their platform choices.