Giter VIP home page Giter VIP logo

microsoft / pmod Goto Github PK

View Code? Open in Web Editor NEW
25.0 7.0 11.0 6.35 MB

Native cross platform library with language projection support for native code.

License: Other

Shell 0.11% Batchfile 0.03% Makefile 0.10% PowerShell 0.01% C# 4.09% C 4.30% C++ 87.41% Java 1.59% Objective-C++ 1.90% Objective-C 0.43% JavaScript 0.04%
pmod cross-platform reflection microsoft cpp-library projection bindings sdk model viewmodel

pmod's Introduction

Welcome!

The pmod SDK is a Microsoft project to allow native code to be used on different languages and platforms with cross-platform in mind. The SDK offer both a runtime implementation and also code generation tools to easily produce 'projection' code into other languages like C#, WinRT, Objective-C, Java, NodeJS. It also offer additional support for MVVM pattern with support of observable objects that willl work on different platforms.

MSFT internal usage

Since people have asked about the library internal usage on Microsoft(s) products, here are some facts:

  • Skype for Business: The popular and former Office LYNC product use the V1 of this library that was only intended for Windows/Desktop platform. That project defines over > 500 model types and several complex View Models to power the real time low level protocol with the Office UI rendering engine. The project was a great success with the help of an Office binding adapter that allow View models to be easly connected with the UI bindings

  • Skype: The effort was to build a next generation V2 SDK based on a lot of V1 concepts that will run on every possible platform specially on phones with additional requirements to improve perf and memory consumption. The idea was to use the library to unify the protocol native API to be consumed on Android/iOS/UWP without the need to handcraft wrappers for each platform. The project was cancelled at the last minute in favor to continue with the old approach and the future migration to use other languages (like javascript).

This SDK library is based on the V2 effort with additional requirements to have all the code generation tools to run on linux and mac and also a better layer separation to use the projection without the need to use the full library implementation

Getting Started

For Windows platform open the VS 2017 pmod.sln solution to browse the code and build the runtime components. For iOS/MacOSX there are XCode projects that facilitate the browsing and build. For Android you can use the Android SDK tools or VS 2017 to build the binaries, make sure you add the proper workloads to build C++ cross platform and UWP.

NuGet packages

For Windows there is support for NuGet packages for most of the components being build. Your VS 2017 projects can add a reference to the packages (both native and managed) usign this NuGet feed: my pmod

Building the samples

Running and building the sample is the best way to evaluate the SDK. The repo contains two supported samples:

  • DemoApp: shows and observable collection with items and connect it to different UI components in XAML, Cocoa and Android activities
  • Movies: Use MSFT Cpp REST SDK library to connect to a REST service and display movies being played in theaters.

Quick Links

Contributing

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.

pmod's People

Contributors

microsoft-github-policy-service[bot] avatar microsoftopensource avatar msftgits avatar rodrigovaras avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

pmod's Issues

Parsing fails on files with the BOM encoding mark on Windows

The parser that runs on the model schema definition fails when one of the source file have the BOM marker , very common when you create a VS 2017 project or somehow you end up in embedding the UTF-8 encoding on the file.
A recent commit has a fix but the NuGet packages has not been updated yet.

Few questions about pmod

Just found out about this gem and in all fairness I was surprised it did not get more attention, it looks really good. I have been through the FAQ but I wanted to clear some things up.

  • Has pmod been used in any production app(s) (or internally at Microsoft) ?
  • The scheme format and interface flows look somehow similar to a tool like Djinni; how different/limited/better is it from it ?
  • What are pmod roadmap ? Will new features/bug fixes being introduced in the future ?

Thanks in advance for your answers.

Building the SDK on a Mac

To build the SDK on a mac you will need to have the latest Xcode tools installed. You should be able to use the command line tools or using the IDE to build. The recommended way is to start with the command line tools and then open the IDE to explore the sources and build the samples.
Instructions will be:

  • Open command line terminal
  • Change directory to pmod/XCode in GitHub -> '>cd github/pmod/src/__build/Xcode'
  • Invoke the code generation build using -> './build_codegen.sh' (Will build the parser tools and codegen helpers)
  • Invoke the 'build.sh' script -> './build.sh' (It should built the library for both Mac & iOS support)

The issue is around building for the iOS simulator, the script has embedded the hardcoded last SDK installed which is:
sdk=iphonesimulator10.3

If you have another SDK installed you would need to pass the right SDK using the option -s 'YourSDK'.
I haven't figure out a way for the script to grab the current installed SDK as a default to avoid this issue, please welcome ideas to fix the script.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.