This may be a fringe opinion, but IMHO the best way Swift can become truly cross-platform and viable as a backend language is if it starts divorcing itself from XCode as much as possible. It appears that SPM integration - and in general, better support for non-iOS development - is not an Apple priority.
To me that would mean things like:
- Starting/continue developing plugins for major plugins/IDEs (some work has already happened there, but the situation can still improve)
- Ditch XCTest and write a test runner that works reliably on Linux (without LinuxMain hacks), supports common use cases such as pending tests and parameterised tests, has good console output and ideally even pluggable reporting (look at other languages for prior art)
- Make the REPL more fully-featured and integrate it with the SPM, so "playing around with a new library" becomes the same trivial matter as it currently is in e.g. Ruby
That of course would depend on who cross-platform Swift is intended to target. If it's trying to target iOS developers who don't want to learn a new language for the backend, the situation is probably "fine" and attempting to move away from XCode would maybe alienate developers; if it's trying to attract developers from other communities (such as Ruby, Python, Rust, Java, ...), I think it's exactly the other way around, the unnecessary coupling to a particular IDE makes little sense.
Currently the situation seems to be "we kind of have to work with XCode, sort of, but XCode doesn't work with us and we have no control over it", which I would argue is a very difficult position.
In the best of all possible worlds, this would lead to the development experience outside of XCode to become so awesome that even hard-core XCode users would find it compelling to stop using XCode (or minimise the use thereof), in turn increasing the pressure on Apple to make XCode better.
(Of course, this is a lot of wishful thinking; I realise that the default response to these requests would be "why don't you build this yourself?" to which the answer is "because I don't know how and don't have the resources")