Xamarin has several cross-platform libraries available for you to use that we have unified API for accessing platform specific features from iOS Windows Phone and Android .These are all open source and available through github which you can then use or modify however you like.
There are several components that xamarin supports. The first is Xamarin social which provides some social networking capabilities to your application it has support for example for posting to Facebook and Twitter.
We also have Xamarin.Auth which is used for OAuth. It’s support is to securely connect to web services. And then we have the Xamarin.Mobile component which has location camera and photo access .
As an example here we have some code to take a picture using Xamarin.Mobile this code works on iOS Android and Windows apps .The media picker that you see here provides access to the photo as a file or as a streams . So then you can load it into whatever the platform specific representation of an image might be. Now you could of course write this code using platform-specific api's but then you have to write a three separate times.And in fact you might still choose to use the native API .If you need some special capability that's unique to the platform but more often than not you just want to take a photo.
Another area to look at is the dotnet foundation this is an open source consortium of Microsoft. And Microsoft partners that has a ton of open source dot net code that you can use.
Another great place to look is a github. Xamarin maintains a list of open source plugins github/xamarin/plugins .These have all been produced by different authors and they're not officially supported by Xamarin. But each provides an abstraction over some specific feature with implementations for each platform . So you can access that feature from shared code. All of these are open source and most of them can be used either in source form or as a binary which you can add using nougat.
You likely have already used nougat if you've done any Microsoft development but nougat is a package manager for .NET development that supports downloading and installing both binary and source elements in project. There's a large public repository at www.nuget.org which you can use to search for available components by name or by functionality. You can also create your own private repositories using a folder network share or even a web URL.
You can add remove and update components directly from your IDE, it's supported in both visual studio and Xamarin studio through the references note on the project.
It also supports auto package restore automatically which means you don't need to include the nuget packages directly in your source control . And Microsoft is moving towards this as their primary vehicle of code updates and component distribution including frameworks such as asp.net and Xamarin.Forms.
Another option for Xamarin specific components is the Xamarin component store this is an older distribution channel that was created before nugget .However there are still a lot of great components here.
It's accessible through the components folder in each of your projects. It supports a commercial pricing model. And Xamarin manages this store so that every component is validated and tested.
You can use either nugget or the component store and often components are published in both. But generally if that's the case you should prefer nugget as it's fully supported by both Microsoft and the Xamarin tools.