ZFS was originally implemented as open-source software, licensed under the Common Development and Distribution License (CDDL). It was well supported. However, OpenSolaris was discontinued in 2010 and further development of ZFS on Solaris was no longer open source.
Since then developers from different communities, companies started on different platforms to continue support this brilient file system.
OpenZFS is the one of them, which officially started on Sep 17 2013.

With so many distributions and versions, how these ZFS get upgraded and do migration between ?

1. Get current ZFS version.

On Solaris

# zpool upgrade -v
This system is currently running ZFS pool version 29.

The following versions are supported:

VER  DESCRIPTION
---  --------------------------------------------------------
 1   Initial ZFS version
 2   Ditto blocks (replicated metadata)
 3   Hot spares and double parity RAID-Z
...

On Linux

# zpool upgrade -v
This system supports ZFS pool feature flags.

The following features are supported:

FEAT DESCRIPTION
-------------------------------------------------------------
async_destroy                         (read-only compatible)
     Destroy filesystems asynchronously.
empty_bpobj                           (read-only compatible)
     Snapshots use less space.
lz4_compress                         
     LZ4 compression algorithm support.

The following legacy versions are also supported:

VER  DESCRIPTION
---  --------------------------------------------------------
 1   Initial ZFS version
 2   Ditto blocks (replicated metadata)
...

2. ZFS upgrade on same platform.

Here are some general rules when working with ZFS storage pools and filesystems:

    Systems with a specific storage pool or filesystem version do work with pools or filesystems of a lower (older) version.
    Systems with a specific storage pool or filesystem verson do NOT work with pools or filesystems of a higher (newer) version.
    Pools and filesystems can be upgraded to a higher version.
    Pools and filesystems can NOT be downgraded to a lower version.
    Users can specify a custom version number when creating a new pool or filesystem or upgrading an existing one (up to the highest supported version in the system).

So, to upgrade ZFS from one version to another(higher),

On Solaris

zpool upgrade -V <ver>

On Linux

It's easier for it started to use feature, you run.

#zpool export zpool_1
#yum upgrade zfs
#zpool import zpool_1

ZFS migration between different platforms.

As mentioned in the beginning of the article, OpenSolaris is no longer open source since 2010, thus, there is no compatibility between OpenZFS and Solaris ZFS. However, they both have lagency support.

So, if your zfs pool is still running version 28 and under, then you can easierly import ZFS pool from other platforms. Other than that, more likely you need to recreate your ZFS pool if you move one ZFS pool to aother. Unless they are in one umbrella like open-zfs.