S.IM.PL:
data across borders

In the past, you may have written code to serialize data to a certain format, read data into your objects from a certain format, or even re-written data structures as you ported a software system. These sorts of development tasks are boring and require more time and effort than they are worth. Additionally, the boilerplate that often gets written for these sorts of tasks is a source of potential bugs for a system.

We firmly believe that you should never have to write this sort of boring code ever again. If you have annotated or written a class, you should be able to put into as many formats, or transfer it between as many different languages as you see fit. S.IM.PL is software that we have designed to make this possible.

S.IM.PL is an open source architecture and cross-language type system that facilitates data storage and transfer between different computers and across different programming languages. It liberates data from being confined to the boundaries of a single serialization format or even from being used in a single programming language. It simplifies support for complicated data structures, like graphs and cycles, which are often neglected by other de/serialization frameworks and formats. In the process, S.IM.PL also eliminates error-prone boilerplate code often written to marshal data. In general, S.IM.PL enables developers to:

S.IM.PL has currently been implemented in Java and C#. We have an older implementation available in Objective C, and hope to help develop implementations in Javascript and Python via Google Summer of Code. We would love your help making S.IM.PL become more popular. Cross-language type systems show immense amounts of promise and help make developing software much more pleasant... We can always use help with bug fixes or even full-blown implementations of S.IM.PL! See "getting involved" in the sidebar for more information.

Check out the S.IM.PL wiki at github for further introductions, scenarios, and instructions on getting started. Set up a development environment, and perform the tutorials to get your feet wet.

publications
Qu, Y., Kerne, A., Webb, A.M., Herstein, A. Interoperable Metadata Semantics with Meta-Metadata: A Use Case Integrating Search Engines. Proc ACM DocEng 2011, Mountain View, CA, USA, Sept. 20-22, 2011, 171-174 [DOI=10.1145/2034691.2034729].
Kerne, A., Qu, Y., Webb, A.M., Damaraju, S., Lupfer, N., Mathur, A. Meta-Metadata: A Metadata Semantics Language for Collection Representation Applications, Proc ACM Conference on Information and Knowledge Management, Toronto, Ontario, Canada, October 26-30 2010.
Toups, Z.O., Kerne, A., Webb, A., A Lightweight Object-Oriented Distributed Services Framework for Engineering Interactive Applications, Interface Ecology Lab Technical Report 10-01
Kerne, A., Toups, Z.O., Dworaczyk, B., Khandelwal, M. A Concise XML Binding Framework Facilitates Practical Object-Oriented Document Engineering , Proceedings of ACM Symposium on Document Engineering, Sao Paulo, Brazil, 16-19 September 2008.
Kerne, A., Damaraju, S., Kumar, B., and Webb, A. Meta-Metadata: A Semantic Architecture for Multimedia Metadata Definition, Extraction, and Presentation, Poster and Demo Proceedings of the 3rd International Conference on Semantic and Digital Media Technologies, Koblenz, Germany, 3-5 December 2008.
Kerne, A., Toups, Z.O., Dworaczyk, B., Khandelwal, K., Expressive, Efficient, Embedded, and Component-based XML-Java Data Binding Framework, Interface Ecology Lab Technical Report 08-06