Though Scheme has well defined semantics, it does not explain how modules should or could be written, and thus, many different implementations use different module or package systems. However, programs and libraries written with an implementation-specific system are often not portable.
Scheme Now! (a.k.a Snow) attempts to solve this issue by defining an API that allows the writing of portable packages that can then be run on top of virtually any Scheme implementation that supports (or is supported by) Snow.
It is possible to use snow in most R4RS-compatible Scheme systems. and this eases the task for the programmer to port his/her software.
A package can consist either of pure portable code, written according to the R4RS specification, or make use of some implementation specific code. However, though not compulsory, it is suggested that the given code can run on various Scheme hosts, and therefore, the developer might have to write implementation specific code for at least two different Scheme dialects. This is encouraged so that as many Schemes as possible can share a common interface to low-level operations that are not normally available in portable Scheme.
Depending on the chosen host Scheme implementation, it is possible to interpret and/or to compile snow packages and programs.