I used this solution for three years.
I am not using this solution anymore, but I had Visual Studio and Xamarin installed — we were using components of Xamarin.
We were trying to integrate some PSPDFKit functionality. We wanted to open up a PDF document to the last page that the person opened it. If it was a five-page document and they opened it on page two and then when they closed it, they wanted it to open back up to the page where they left off. They were trying to get the PDF to be sticky.
The product owners that were looking at it liked the functionality. There was a competing product library called PSPDFKit. They wanted to get rid of that because it costs a lot of money; however, they wanted the functionality that the PSPDFKit had, inside Xamarin. There were some issues with it that they were trying to resolve.
When they put their ticket in, Microsoft pointed to Xamarin and Xamarin pointed at Microsoft, to say who's going to fix it. That's where it got left off. Xamarin was never able to utilize that module for the PDF. They had to keep the PSPDFKit software, that's the current state.
The software itself was pretty good. The problem that I faced was that the communication, the roles, and the responsibilities, weren't defined between Microsoft and Xamarin, that's really where the problem was in my opinion. Nobody was taking ownership of that.
Let's say you have two platforms on-prem. If you're an iPad user, you want the look and feel of the iPad; if you are a Surface Pro user, you want the look and feel of the Surface Pro. What I feel is of the utmost importance in regards to Xamarin, is to make sure that when you do something, whatever the object is, you get the object that the iPad user expects. Conversely, if you're a Surface Pro user, you get the object that the Surface Pro user expects.
I was in favor of it, it had the capabilities. I was impressed by the way they were thinking of moving it forward, scalability-wise.
The developer activity was complex, but it was understandable. From my perspective, I wanted to minimize the number of software vendors we were working with, and consolidate where features were overlapping. The reason I was trying to do that was to try and save the government some money. I was thinking I was still paying X dollars for one contract for three years, and Y dollars for another contract, and the features were all the same — what's the use of paying for both?
I believe the initial implementation took two years. They developed a working product that was in production. Xamarin was included in that initial design.
They had good documentation regarding implementation, but I understand it was evolving and integrating into Visual Studio.
When someone's building something, they want the capability to do so across the platform; initially, there was a goal to build something for iOS, something for Windows, and something for Android. The first thing they dropped was the Android approach. They ended up keeping the iPad and Windows. You write the code once and it generates in both, or in multiple outputs.
In our situation, we were supporting it on the iPad — 95% of the people used one. A very select few people used Microsoft Surface. It's a tremendous effort to keep both going, although that's the whole purpose of having Xamarin.
It's a great concept. I think it worked well. The concept of doing it is still not perfect. When we generated some code on the iPad, we would get fewer bugs, and with Surface Pro, we would get more bugs.
The same code was pushing a bug on Surface Pro, but not on the iPad. That's basically a fact of maturity over their capabilities. From a business point of view, it didn't make sense for the use case that we had — it was a huge cost for a few users. In many situations, Xamarin has a purpose. There are good reasons to build it once and have it work on both platforms.
Not from a technical point of view, but from the business side, if I was consulting to a large government organization and looking at the cost-effectiveness, I would suggest they have iPads or Surface Pros and give them to their public users — make them decide upfront instead of going down both paths, doubling the paths.
On the market, compared to everyone else, they're the top solution. They're the best solution out there that I could see. On a scale from one to ten, I would give Xamarin Platform a rating of nine. If they become bug-free, I would give them a rating of ten.