openfire is one of the most notable XMPP servers out there. there are others, of course, but openfire is one of the largest (and in my opinion, one of the best).
I do not know what troubles you have encountered... but as with any new (to the developer) and large/complex codebase (openfire's codebase has been open source since 2007, but was developed privately for many years prior to that), there is a very steep learning curve until you are familiar enough to navigate on your own.
There are also paid XMPP servers out there, but I'd note that many of them are actually openfire in disguise with some modifications to suit that vendor's needs. Some notable paid versions are Cisco's Finesse product and Cisco's WebEx product, both of which take openfire and bundle it with a bunch of other collaboration software all into a single (paid) package. The same is true with the other popular XMPP servers who have licensing that allows for commercial vendors to re-package.
As far as I know, these paid versions are going to discourage "hacking" on the source code since the vendor is supporting a known-working version (that they produced and plan to support for a period of time).
Of course, depending on what you are trying to do, you may not even need openfire or any XMPP server, but rather just play around with the smack xmpp library and make your own server, or have things talk directly to each other, etc. There are many ways to go about it
To address a point you made in a previous post, yes, I do think documentation is perhaps a little lacking for not just openfire, but most of the projects here at igniterealtime. The problem is, most people would rather spend time "hacking" on the codebase to make new features or improvements rather than spend an afternoon writing boring documentation. Everyone here is volunteers, so it's difficult to get people to do the "boring" things like documenation. Of course, if you make documentation improvements, the community would be very grateful!