Introduce about APO-Chan, a mobile application.
* Published on Google Play Store & Apple Store.
* Sales Force Automation
* Microsoft Azure Mobile Apps
* Xamarin Forms
* Open Source Software
4. APO-CHAN
• Sales Force Automation
• Microsoft Azure
• Xamarin Forms
• Opens Source Software (OSS)
5. MOBILE APP
• Create a new Mobile Apps back end on Azure
• Configure the server backend – create database connection
• Download the Xamarin.Forms solution
Apo-Chan_Runtime
Apo-Chan_Xamarin_Forms
14. WHY OSS?
• Flexible cost structures
• Branding
• Flexible participation, flexible licensing
• Availability & long term support
15. POPULAR OPEN SOURCE PROJECTS
• Microsoft:
https://github.com/dotnet
https://github.com/Microsoft/vscode
https://github.com/Microsoft/CNTK
• Apple:
https://github.com/apple/swift
• Google:
https://source.android.com/
https://www.chromium.org/
• NASA:
https://code.nasa.gov/
https://github.com/nasa
Xamarin Forms
https://material.io/icons/
Microsoft Azure Mobile Client SDK
Prism Library
Xam.Plugin.Geolocator
GNU Lesser General Public License
(LGPL)*
Hi everyone,
My name is Long. I’m a developer from TTM company.
Now I’m working with ExceedOne for the related work with Microsoft technologies.
It is my honor today to represent TTM & ExceedOne to introduce our newly launch mobile application.
APO-Chan.
For the context, APO-chan is an Sales Force Automation application, which mean the app will mostly support working of sale people.
For example, in many company’s sale department. The staff need to go out and meeting customer around the city.
They have many meeting & status report with customer.
We want to make an application that support their arrangement for the meeting & reports.
Also, we want the app to allow reports was shared between the teams and the manager.
So, for example, event when a person take a vacation, his/her teams can still work on with customer based on shared reports.
With the ideas as above, this is our first attempt to develop the mobile application.
We call it APO-chan. The apo is as in appointment.
The app is already available on both Google Play Store & Apple Store.
Following is a short demonstration of how the app working.
-----------------
First, user need to login with either Office 365 account or Google account.
You can browse the report by each month.
We can add the new report, date time, comment. Optionally you can add the current location based on the device’s location.
We also add a features to manage the reports by group.
-----------------
For developing this application, we choose to use Microsoft Azure services and Xamarin Forms.
All the source code is published as open source software, so everyone can access to.
I will talk about the benefit of each of our choice here.
As you know, Azure already support a scenario of mobile application. I mean a mobile app that use a backend service.
Of course, we can already create such type of application by using combination of Web Service and other type of services.
But now with Mobile App, all the solution is integrated in single place.
We can create a Mobile App by 3 simple steps.
Create a Mobile Apps back end on Azure.
Customize the backend, create a connection with existing database, or setup a new database, setup how to authenticate, setup notification services, etc.
Choo the backend development language: C# or Node.js
Lastly, Mobile Apps created 2 skeleton solutions, one for server side and one for client side.
In this case, we using Xamarin Forms for the mobile client
This is overall structure of how Mobile Apps work.
The user interact with mobile client on Android or iOS devices.
The client communicate with Azure services that we want to use.
In particular, the Mobile App service, which handle all communicate about authentication & data connection for us.
https://www.nuget.org/packages/Microsoft.Azure.Mobile.Server.Files/1.0.0-beta-2
Access Blob Storage directly from Mobile Apps is not supported anymore.
Moreover, Azure Mobile Apps support many features.
The red means the features that we already implemented in our app.
For other features, we will implement in the future.
For Blob Storage, it seems that it is not supported directly by Mobile Apps service anymore.
As you can see, the mobile client will connect with backend server by REST API.
We have several options for our database, in this case we use SQL.
Mobile Apps support out of the box with 5 types of identity provider: Microsoft Account, Google, Azure AD, Facebook, Twitter.
It can also expand the support to other identity providers, but it required for more implementation.
With all type of provider here, the authentication can be easily implemented with minimum effort.
All follow similar steps:
Register app to providers to obtain IDs & secrets.
Authenticating using Mobile Apps client SDK to sign in users.
Authenticating using providers SDK.
Offline synchronization is supported by Mobile Apps SDK:
Microsoft.Azure.Mobile.Client.SQLiteStore
Cross-platform push by using Notification Hubs
Because our app store the data on the cloud. Sometimes, with bad internet connection, user can experience lagging in the app.
When we implement offline synchronization, we expect that user will experience more smooth & fluent execution from the app.
And about push notification, this is an importance feature for us. It will enable teamwork more effective.
When a user submit his new report, all his teams can received the report in real-time.
Beside from Azure Mobile Apps, we choosing Xamarin Forms to develop the client.
Because working with Microsoft technologies, we already familiar with C# language.
So it is more convenient for us to using this language to develop cross-platform mobile app.
Furthermore, Xamarin is more and more gaining favor from both developer & software company.
Now we support both iOS and Android.
By using Xamarin, we have several advantages.
As cross-platform development, the percentage of shared code is high, with Xamarin we can have up to 90% of shared code between Android & iOS project.
So it will shorten the development effort.
Xamarin has large component store, especially when combine with Azure service. As example, Azure Mobile Apps has a client SDK that support Xamarin.
So we can communicate between client & server by using a few API call.
Now Xamarin is open source, so it can access to even larger pool of open source libraries.
It is depend on the license, which I will have more details later.
Of course, using Xamarin will have some inconvenient,
comparing with the native development on Android or iOS using Java/Kotlin or Objective-C/Swift,
Xamarin document is usually not up to date. The community is not very large, but it is growing.
For developer which is new to Xamarin, example from develop Windows Forms, the user interface design will take a lot of effort.
But maybe with some one familiar with web design, it is more easier.
And the last point is about open source development.
Both the source code for server & client side of APO-chan app can be access on GitHub site.
We are choosing open source development for our app for several benefit.
First, about open source software. In the past, it is usually more associate with free software.
So it has limited use in commercial software company.
Especially Microsoft, probably we all familiar with the idea that Microsoft Windows & Linux is the 2 very competitive operating system.
We all know that it changes now.
More and more, software company is opened with open source software.
-----------------------------------------------------
Free Software vs Open-Source Software
Open Source Initiatives (OSI) promotes open source software as a beneficial development model to business & commercial products.The Cathedral and the Bazaar
Open Source Software is more and more presence in commercial software industry
Free Software Foundation (FSF), started in 1985, intended the word "free" to mean freedom to distribute (or "free as in free speech") and not freedom from cost (or "free as in free beer").
Open Source Initiative (OSI) was founded in 1998 to promoting open-source software.
Open-Source Software (OSS) not means to provide free solution for everyone problems, but it means to share knowledge and evolve the field of computing. It also provide benefits for commercial software industry.
How it is benefit: collaborative development which provide diverse scope of design perspective & long term sustaining.
It is an explicit "feature" of open source that it puts very few restrictions on the use or distribution by any organization or user, in order to enable the rapid evolution of the software.
"Open source is a development methodology; free software is a social movement.“
OSI (Open Source Initiatives) promotes open source software as a beneficial development model to business & commercial products.The Cathedral and the Bazaar
Free & Open Source Software has historically played a role outside of the mainstream of private software development.
Companies as large as Microsoft or IBM, Oracle, Google have begun to develop official open-source presences on the Internet.
The term free software gradually is replaced by open-source software (OSS) as an expression which is less ambiguous and more comfortable for the corporate world.
For big company, OSS will provide more flexible cost structure.
It help their branding image.
It provide more long time support with reduced cost.
One more thing, in the past software company concerns about security risk in open source project.
For Apo-chan, we choose open source approach because it will enable us to access more library.
And for some reason, if we drop our project, technical user will still have option to continue the development for their own need.
---------------------------------------------------------
Security: in the past, OSS is feared because of possible security exploit. Turned out OSS is more secured than proprietary counterpart due to amount of contributors
http://opensourcesurvey.org/2017/
https://www.blackducksoftware.com/2016-future-of-open-source
Fund raising problem for some important OSS project (OpenSSL, OpenBSD)
Burnout, as volunteers find themselves overwhelmed with obligations outside their paying jobs.
Lack of document, rudeness in community…
The biggest 3 challenges adopting open source software for (esp. large) companies:
Standards: IT departments are often follow a "standards". The issuers of such "standards" are hardly ever open source supporters.Support: Companies need professional support for 24/7. Hardly any open source software offers that.
Features: Companies need vendors which are able to implement a feature upon request. Not many open source software teams do that.
Here is some popular open source project from big organization.
For our app, we using several open source components.
Our app is published as open source software too with LGPL license.
For a summary:
I would like to emphasis that Azure & Xamarin & Open Source are a very strong combination.
Azure provide the integrated - All in One solution for mobile app development,
Xamarin can provide fast cross-platform development.
Then open source adding a additional access to various resource, from developer to publisher libraries & enable event faster development.
We hope with this combination, we can provide very fast & continuous development cycle.
The technical requirement can be quickly full filled, the problem remain is about finding out what customer really need.
So we can adapt to the demand.
Also, during development we wrote some technical info about what we found.
It is a few article now, but I hope we will have more as we make more application.
This is the end of my session.
Thank you very much for your attention.