Agregador de noticias

ProcessOne: [FR] La conférence SeaBeyond: Qu’est-ce que c’est ?

Planet Jabber - 17 November, 2014 - 08:31

Voici une brève introduction qui explique la génèse et l’esprit de SeaBeyond:

Pour s’inscrire et consulter le programme de SeaBeyond, c’est ici: SeaBeyond

Tigase Blog: Tigase XMPP Server 5.2.3 release

Planet Jabber - 14 November, 2014 - 16:34

A maintenance version Tigase XMPP Server 5.2.3 has been released and it's available for download. As always - binaries are available for download in the files section on the project tracking system.

Fanout Blog: Building a realtime API in Django

Planet Jabber - 14 November, 2014 - 09:26
Django is an awesome framework for building web services using the Python language. However, it is not well-suited for handling long-lived connections, which are needed for realtime data push. In this article we'll explain how to pair Django with Fanout to reach realtime nirvana.

...

Alexander Gnauck: Secure Gmail Authentication with X-OAUTH2 SASL

Planet Jabber - 12 November, 2014 - 13:36

In July 2014 Google has introduced the “More Secure Gmail Authentication feature”.
When Access for less secure apps is set to disabled then Google does not allow login over SASL PLAIN anymore (even on TLS).

During authentication Google replies with the not-authorized error. And they will notify you by email that access to an insecure application was denied.

CLIENT: <auth mechanism="PLAIN" xmlns="urn:ietf:params:xml:ns:xmpp-sasl">AUTH DATA</auth> SERVER: <failure xmlns="urn:ietf:params:xml:ns:xmpp-sasl"> <not-authorized /> </failure>

When access for less secure apps is disabled you have to login with the X-OAUTH2 SASL mechanism the Gmail XMPP server offers. Here is a small tutorial how to achieve this with MatriX.

1) API Project

In order to access the Google API you have to setup a project in the Google API Console which provides you the Access credentials. Once you have created your API project you can request your credentials which include the Client Id and Client Secret. During the creation process of the app project we selected “native application”.

2) Request an Access Token

To authenticate with OAuth 2.0 we need to get our Access Token. The OAuth 2.0 is documented at the Google pages under the following 2 links:

There are also several .NET libraries available, e.g DotNetOpenAuth or Google APIs Client Library.

We are not going to use a third party library for now, because this help us also to understand the whole XAuth authentication flow.

We create a new form and put a Webbrowser control on it. When the form loads we have ro navigate to a Url which includes;

  • Client Id of our API project
  • A redirect Uri, we use this urn:ietf:wg:oauth:2.0:oob
  • scopes:
    • https://www.googleapis.com/auth/googletalk
      (required for XMPP authentication)
    • https://www.googleapis.com/auth/userinfo.email
      (optional, we can use this t get the username/email address of the user)

When our form with the webbrowser loads we navigate to this Url with teh following code:

const string CLIENT_SECRET = "XXXXXXXYYYYYYYYYYYYZZZZZZZZZ"; const string CLIENT_ID = "yyyyyyyyyyyyy-xxxxxxxxxxxxxxxxx.apps.googleusercontent.com"; private static Uri GetAutenticationUri() { var postData = new List<string> { "client_id=" + CLIENT_ID, "redirect_uri=urn:ietf:wg:oauth:2.0:oob", "scope=https://www.googleapis.com/auth/googletalk https://www.googleapis.com/auth/userinfo.email", "response_type=code" }; return new Uri("https://accounts.google.com/o/oauth2/auth" + "?" + string.Join("&", postData.ToArray())); } private void Form_Load(object sender, EventArgs e) { // navigate to the Uri when the form loads webBrowser1.Url = GetAutenticationUri(); }

When you run the code you should see the following:

3) Authentication

When the user now clicks on “Accept” in the authentication dialog the page in the browser reloads. The new page contains an Authentication code in the title tag. The authentication code is also in the body of the result page. We have seen cases where the code in the title tag was cut off. So it could be more secure to parse it from the body.

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { string docTitle = ((WebBrowser) sender).DocumentTitle.ToLower(); // when there is "success code=" in the title its the page we are looking for. if (docTitle.IndexOf("success code=") > -1) { webBrowser1.Visible = false; // Hide the webbrowser // we can find the auth code in the title tag of the html page string authCode = webBrowser1.DocumentTitle.Replace("Success code=", ""); ProcessAuthorizationCode(authCode); } else if (docTitle.IndexOf("denied error=") > -1) { // user denied the app dialog, handle this here. } } 4) Exchanging the Authentication Code

Now we have the Authentication code, and can use it to request the access token and refresh token over a simple HTTP Post. The result is in JSON, we use Newtonsoft.Json to process it.

public void ProcessAuthorizationCode(string authCode) { var postData = new List<string> { "code=" + authCode, "client_id=" + CLIENT_ID, "client_secret=" + CLIENT_SECRET, "redirect_uri=urn:ietf:wg:oauth:2.0:oob", "grant_type=authorization_code" }; //Posting the Data to Google string responseString = Post("https://accounts.google.com/o/oauth2/token", postData); //Processing the JSON Response JObject jObject = JObject.Parse(responseString); JToken refreshToken = jObject.SelectToken("refresh_token"); // Checking for errors. if (refreshToken == null) { //this._ErrorMessage = response; } else { RefreshToken = refreshToken.ToString(); AccessToken = jObject.SelectToken("access_token").ToString(); // close the browser Windows, we are done Close(); } } public static string Post(string url, List<string> postData) { var request = WebRequest.Create(url); // Preparing the post data var toPost = string.Join("&", postData.ToArray()); byte[] byteArray = Encoding.UTF8.GetBytes(toPost); request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; request.ContentLength = byteArray.Length; var dataStream = request.GetRequestStream(); dataStream.Write(byteArray, 0, byteArray.Length); dataStream.Close(); try { // read the response var response = request.GetResponse(); dataStream = response.GetResponseStream(); var reader = new StreamReader(dataStream); string responseString = reader.ReadToEnd(); reader.Close(); dataStream.Close(); response.Close(); return responseString; } catch (Exception) { return null; } } 5) Getting the username (optional)

The username for XMPP authentication for XOAUTH2 SASL is the users email address. You can either ask the user to enter it in your software. Or you can use your access token to request more user details. This is why we have added the scope https://www.googleapis.com/auth/userinfo.email. This allows us to get the username with a post to the following url:
https://www.googleapis.com/oauth2/v1/userinfo?access_token={your_access_token}

This request returns JSON payload where you could fine the users email address.

6) Authenticate with MartiX

Now we have everything to perform the XOAUTH2 authentication with MatriX. We need to subscribe to the OnBeforeSasl event to manual select the SASL mechanism and pass our access token.

private void xmppClient_OnBeforeSasl(object sender, Matrix.Xmpp.Sasl.SaslEventArgs e) { // make sure we use the correct username for authentication xmppClient.Username = "user12345@gmail.com"; // disable automatic SASL algrithm selection in MatriX e.Auto = false; // manual specify the X_OAUTH2 SASL mechanism e.SaslMechanism = Matrix.Xmpp.Sasl.SaslMechanism.X_OAUTH2; //pass the Access token to MatriX e.SaslProperties = new OAuthProperties() { AccessToken = "AccessToken" }; }

Tigase Blog: How we use git and git-flow to handle all Tigase projects

Planet Jabber - 12 November, 2014 - 10:24
Over time Tigase grew from a single server project to a family of applications, tools and libraries related to XMPP.

ProcessOne: Seabeyond: ProcessOne Realtime conference Programme

Planet Jabber - 5 November, 2014 - 16:34

SeaBeyond is ProcessOne tech conference on real time and messaging technologies. The third edition will happen in Paris on the 2014, December 4th.

The “sandbox” is an open discussion and hacking period happening during the day. We propose to cover the following topics:

  • Developing for ejabberd XMPP SaaS
  • Notification and alert broadcast with Boxcar Developer Service
  • Beacons and real time services

As a developer, you are very welcome to send us other ideas.

The “conference” part will cover the following topics:

  • Mila: Using ejabberd and XMPP as a customer to customer messaging tool (Michael Weibel)
  • VeryLastRoom: How realtime and alerts enhance the same day hotel booking experience (Sébastien Houzé)
  • BBC Use Case: News and Sport push notifications and analytics on a huge scale
  • ProcessOne Roadmap: New Product and service launch. Learn about what ProcessOne has been brewing (Mickaël Rémond)

Space is limited, so registration is mandatory to attend. You can register by filling this form: SeaBeyond registration

In the meantime, you can watch video summary from previous edition:

Fanout Blog: Do you have a contingency plan?

Planet Jabber - 24 October, 2014 - 20:07
Do you have a microservice contingency plan? How many APIs does your company consume? How many microservices do you depend on? This brave new world of public APIs and microservices is great, but what happens when it’s not? What happens when a service raises their prices, changes their metering, dies (bankruptcy, acquisition, sunset), pivots, experiences […]

Prosodical Thoughts: Prosody 0.9.6 released

Planet Jabber - 15 October, 2014 - 15:09

Another minor release for you all. The most important change here is to disable SSLv3 by default, now it has been shown to be insecure when used by clients. This means that clients that support only SSLv3 will no longer be able to connect by default (which is why we had not been planning to make this change in a minor release).

A summary of changes in this release:

  • certmanager, net.http: Disable SSLv3 by default
  • net.http.parser: Support status code 101 and allow handling of the received data by plugins
  • util.filters: Ignore filters being added twice (fixes issues on removal, i.e. when some plugins are reloaded/unloaded)
  • mod_s2s: Close offending s2s streams missing an 'id' attribute with a stream error instead of throwing an unhandled error
  • Networking API: Add 'ondetach' callback for listener objects, to prevent leaks when connections have their listener changed
  • core.stanza_router: Stricter validation of stanzas
  • mod_admin_adhoc: Mark 'accountjids' field as required in 'end user sessions' command (thanks Lloyd)
  • mod_admin_adhoc: Add required to field in user deletion form too
  • net.dns: Avoid duplicate cache entries
  • util.stanza: Escape newlines and tabs (\r\n\t) when serializing stanzas.
  • util/dataforms: Make sure we iterate over field tags only
  • mod_s2s: Capitalize log message
  • mod_pubsub: Fix error type of 'forbidden' (change from 'cancel' to 'auth')
Download

Download instructions for many platforms can be found on our download page

If you have any questions, comments or other issues with this release, let us know!

ProcessOne: ejabberd Community 14.07

Planet Jabber - 12 October, 2014 - 10:57

Two months after the previous huge release, we are keeping the pace with a new feature packed version. We added major improvements regarding to SIP support, Carbon copy, stream management and added Riak as a new supported database.

ejabberd Community 14.07 includes several improvements and many bugfixes over the previous 14.05 release:

SIP

  • SIP Outbound (RFC 5626) support
  • New option always_record_route
  • New options record_route and routes

Carbon Copy (XEP-0280)

  • Don’t log MUC messages with hint
  • Don’t carbon copy messages with hint
  • Let is_carbon_copy/1 recognize carbons
  • Don’t send XEP-0280 v1 copies back to sender

Stream Management (XEP-0198)

  • XEP-0198: Terminate session if stanza queue becomes too large
  • XEP-0198: Don’t exit on socket send failure
  • XEP-0198: Don’t drop session on failed resume
  • XEP-0198: Check whether routed packets are stanzas

Riak

  • Riak support

Install and config

  • New options log_rotate_count, log_rotate_size and log_rate_limit
  • html guide is now generated when building source tarball
  • Use p1_utils, and move treap.erl to p1_utils
  • Get rid of p1_mnesia file
  • old release notes are not installed anymore
  • Don’t “forget” listener options
  • Always enable STUN at compile time
  • Do not check for Erlang apps at configure time
  • Add –enable-riak configure flag

Tests

  • Add tests for stream management
  • Add tests for mod_carboncopy
  • Add tests for mod_caps
  • Improve MUC test cases
  • Travis CI: Enable Riak tests
  • Add Riak backend to the testing suit
  • The test suite no longer fails without –enable-transient_supervisors.

MUC

  • MUC messages with ~ were not logged (EJAB-1696).

And many bugfixes all over the source code.

This release requires at least Erlang/OTP R15, and works perfectly with R16B03, and will work with R17 if Riak support is disabled (–disable-riak).

When building from Git, “make install” now fails if you do not run “make doc” before due to doc/guide.html no longer being in the repo. If you don’t have necessary tools to build the guide, just pick the one from ejabberd sources tarball.

As usual, the release is tagged in the Git source code repository on github

The source package and binary installers are available at ProcessOne

If you suspect you found a bug, search or fill a bug report in Jira

ProcessOne: Sea Beyond 2014: ProcessOne Tech Event for Mobile Realtime

Planet Jabber - 12 October, 2014 - 10:55

I am very pleased to announce date and venue for our third iteration of our tech event on mobile and realtime.

Sea Beyond event will happen on the 4th of december 2014. This year focus is “Real-time Technologies for Push and Chat on Mobile”.

As during previous edition, we have split the schedule in two distinct parts.

  • The Sandbox: a programme for developers to encourage innovation and the production of new software features
  • The Lighthouse: an interactive conference for users that illuminates the latest trends in real time communication

 

People loved that approach during the previous editions, as the event is thus open to all kind of skills and is focused on makers.

The programme is still to be defined, but you can expect to play, experiment and learn about exciting and innovative use cases around mobile, chat and push services.

We still have a few more weeks to put the final touch on the programme and prepare to surprise you. Stay tuned !

Read more on the official Sea Beyond page: SeaBeyond 2014

 

It the meantime, you can watch last edition summary video:

Tigase Blog: Web interface to Tigase server

Planet Jabber - 10 October, 2014 - 00:45

Finally, much requested element, that is web interface for the Tigase XMPP Server. We are hard at work to offer web based management for the Tigase XMPP Server, whole installation process from your web browser, monitoring, startup report. Most importantly, all the management and monitoring will work for the whole cluster not just a single server.
Initial code ready to experiment check and test is already available. If you are interested in taking a look at it, check codes in devel branch. If you have any suggestions or ideas, please do not hesitate to contact us.

Isode: Isode at the HFIA #1: Proposed Extensions to STANAG 5066

Planet Jabber - 9 October, 2014 - 17:45

The High Frequency Industry Association (HFIA) provides an “industry driven forum for the interactive exchange of technical and information in the area of High Frequency Communications.” Physical meetings of the group usually take place twice a year and in September 2014 Portsmouth was the location for the latest of these meetings. This is the first of two blog posts covering our attendance at this meeting.

As Isode has an interest in applications for constrained bandwidth communications, we often attend and occasionally present at these meetings. This year we had two presentations to share with the attendees.

Steve Kille at the HFIA

Isode CEO, Steve Kille, gave a talk focusing on Isode’s proposed extensions to STANAG 5066 to improve performance of applications running over wideband HF links. The first was an update to a talk Isode gave at the February HFIA meeting, this time including hard measurements showing that Isode’s extensions (known as LFSN, Long Frame Sequence Number) result in significant performance gains.

This was followed by a live demonstration of the extensions in action, enabling co-existence of bulk and time critical applications over narrow-band and wide-band HF. The applications used were Multi-User Chat and Real-Time Military Forms (both using the XMPP protocol) and military email messaging.

PDF copies of the slide sets used during both phases of this talk can be found by following the links below:

  1. Update to and Measurement of the proposed STANAG 5066 extensions to improve ARQ performance
  2. Demonstration of ‘bulk’ and ‘time critical’ applications co-existing over HF and WBHF and using the proposed new STANAG 5066 extensions

Prosodical Thoughts: Prosody 0.9.5 released

Planet Jabber - 9 October, 2014 - 12:29

Quite a number of bug fixes and minor improvements have cropped up, so it's about time for another release, don't you think?

A summary of changes in this release:

  • C2S: Fix traceback if a client opens a stream to component, which could cause a crash in combination with some versions of LuaEvent
  • C2S, S2S: Log received invalid stream headers
  • S2S: Fix case where stream headers were sometimes sent twice
  • DNS: Ensure all pending requests get notified of a timeout when looking up a record
  • DNS: Fix duplicated cache insertions by limiting outstanding queries per name to one
  • xmppstream: Disable LuaExpat's buffering
  • xmppstream: Disable CharacterData merging after stream restarts
  • xmppstream: Pass invalid stream headers to error handling
  • Privacy lists: Correctly sort privacy list rules by order
  • prosody: Check dependencies later in the startup sequence
  • Config: Delay importing LuaFileSystem until needed by an Include line
  • Config: Normalize VirtualHost and Component names
  • prosodyctl: Normalize JIDs for adduser/passwd/deluser
  • POSIX: Fix error reporting from disk space allocation
  • POSIX: Verify that 'pidfile' is a string, show friendly error otherwise
  • Dependency checking: Check that prosody is running under Lua 5.1. We don't currently support any other versions. (LuaJIT identifies as 5.1)
  • Compliance: Reset stream ID when resetting stream
  • Compression: Log compression setup errors
  • Console: Fix commands for adding and replacing name servers
  • Console MUC commands: Fix error when a non-existent host is entered
  • Filters: Prevent filters from being added twice
  • Network: Transfer all available data between linked sockets
  • dataforms: Add support for XEP-0221: Data Forms Media Element
Download

Download instructions for many platforms can be found on our download page

If you have any questions, comments or other issues with this release, let us know!

Tigase Blog: EventBus in Tigase server

Planet Jabber - 9 October, 2014 - 00:10

Everything is a PubSub now in Tigase. This is something new and super cool. We are still polishing details and work on practical applications. But even now it is ready to start experimenting with by software developers extending Tigase XMPP Server. The EvenBus framework allows you to publish events from any part of the code and these publications are automatically delivered to subscribers. A subscriber can be again, any part of software and can receive notifications via API but a subscriber can be also any XMPP entity to receive notifications via regular PubSub protocol.

Tigase Blog: MongoDB support added

Planet Jabber - 8 October, 2014 - 21:43

We have been silent recently but this usually means we were super busy adding super new stuff to our code. One of them is the MongoDB support. It is being developed as a separate project from the main Tigase XMPP Server but there were many changes to DB layer API to make it easier to plug different databases. This is our first non-SQL database support and all subsequent should be much easier.

ProcessOne: Making messaging ubiquitous: ProcessOne launching ejabberd SaaS offering

Planet Jabber - 7 October, 2014 - 08:19

From ICQ launch in 1996 to Whatsapp acquisition by Facebook in 2014, instant messaging has come a long way. Realtime messaging is now ubiquitous. There is tens of messaging clients on mobile app stores for iOS and Android. And this does not even count the products that have added messaging as a convenience feature for their users.

It means today messaging has become so ubiquitous, that it is seen by mobile app developers, both as a must-have feature and a commodity. However, there is a paradox: such commodity is still a very complex service to build.

ProcessOne team has been working on messaging projects since 1999. We have developed ejabberd, the most popular standard base XMPP server, powering tens of thousands of deployments around the world, from the smallest to the largest ones. However, messaging, scalability, high availability, XMPP protocol intricacies, many factors concur to still make deploying a messaging service a complex business.

Our goal is now to solve the messaging service paradox by leveraging our experience to make messaging platform affordable to all companies, no matter the scale they would like to target.

As a first step toward making messaging ubiquitous, we are launching today a service (in beta) to provide our ejabberd Business Edition as a pure Software Service (SaaS). This will allow companies of all size to launch messaging platforms in a matter of days. Our platform will grow with them at an affordable and predictable price, so that we can remove them the pain of finding a sustainable business model for their messaging features. Startup and brands can now all target even large users base and still control their costs.

The service is launched today in beta: ejabberd SaaS

If you want to experiment with the platform from a developer perspective, guided by ProcessOne team, you can join our Developer Event in Paris on the 4th of December: SeaBeyond

Fanout Blog: Calling Webhooks asynchronously with Zurl

Planet Jabber - 3 October, 2014 - 08:16
Zurl is an HTTP client daemon based on libcurl that makes outbound HTTP requests asynchronously. It's super useful for invoking Webhooks. Zurl supports fire-and-forget invocation, error monitoring, and protection from evil callback URLs. Sounds pretty great, right? Let's see how it's done.

...

Peter Saint-Andre: Why I Am Not a Writer

Planet Jabber - 2 October, 2014 - 00:00
For several years, my Twitter profile has identified me thus: "Technologist. Writer. Musician." Yet I've come to realize that I'm not a writer. Oh, I do write on occasion and I'm fairly good at it, but I don't write every day or even every week like real writers do.

Jérôme Poisson: Salut à Toi v0.5.1

Planet Jabber - 18 September, 2014 - 21:28

We are happy to announce the release of Salut à Toi v0.5.1! This version focuses on security and code refactorisation to ease the add of new features and maintenance.

We remind you that SàT is a multi-purposes and multi-frontends XMPP client, mainly developed in Python. The more advanced frontends are Primitivus (console) and Libervia (web). Jp (command line) can be used for administrative tasks. Wix (desktop/WxWidgets) will be deprecated and replaced with Bellaciao (desktop/Qt). An Android frontend is also planned.

Security

A new parameter has been added to define a password for the SàT profile, it is stored hashed in the database. Its raw version is used to cipher the other passwords - including the one for the XMPP account - which are encrypted. A scheme on the wiki explains how this all works: encryption.

Libervia now handles HTTPS. The administrator can choose the service(s) to enable: HTTP, HTTPS or both.

You can uses OTR for instant messaging end-to-end encryption. Primitivus console interface uses the Python library potr while Libervia is based on the Javascript implementation otr.js. Thus, your encrypted discussions on Libervia are really private because the encryption is done directly by your browser; you may encounter some slowdowns, especially when starting OTR.

Other additions

You will notice:

  • the add of chat rooms bookmarks;
  • the display of the composing states in chat rooms;
  • a better integration of the ad-hoc commands, e.g. to allow the administration of the server from Primitivus or Libervia;
  • the possibility to erase all your blog posts, change your password or delete your account from Libervia;
  • contextual menus on the roster contacts and the discussion panels;
  • a couple of new stuff concerning the static blog pages.

Refactorisation

We care to redesign the code when some conception issues are found, or if we imagine a new mechanism which would work better. It is especially important for a project like SàT which is multi-interfaces and still in development. For this version we made several refactorisations concerning:

  • XMPP service discovery;
  • messages sending and reception;
  • textual commands management;
  • contact list management;
  • hierarchical organization of the constants;
  • Libervia's source files hierachy;
  • Primitivus keyboard shortcuts.

These modifications are not of a big interest for the users, but they ease our life, and maybe those of the people who would like to give us a hand! We see them as required first steps to initiate the development of the mobile phone frontend and the add of new features.

We extended the usage of XMLUI, our internal micro-format for describing user interfaces. We use it to manage frontend's dialogs from the backend. The user actions are now better integrated and we will keep on improving it for the next versions.

To be mentioned

The backend is now launched as a Twisted plugin and starts by default in daemon mode, just as Libervia. The initialisation sequence backend / frontends has been improved; this fixes the issues that could occur when SàT and Libervia were launched from a script within a short time. Moreover, we added a .service file for D-Bus to automatically launch the backend when a frontend needs it.

The default paths for the user files are now compliant to the XDG recommendations: configuration file in ~/.config/sat, database and the rest in ~/.local/share/sat. Any previously existing default configuration file will be retrieved and eventually updated.

If the XMPP server address and port are left empty in the connection parameters, the actual values can be retrieved from a DNS SRV record - if one is set for the "domain" part of your JID.

There's a new log system, fully customisable and managing the colors, formatting, filtering and outputs (files, memory...).

Administrative aspects

We submitted the file for the creation of the association "Salut à Toi"... which has been accepted without any trouble, positively surprising us. Our working mode is indeed a bit special for a French "1901-law" association: a collegial board with no president, secretary nor treasurer but two co-administrators. We remind you that there is behind this project a desire to fully involve ourselves, and this is not compatible with the pursue of another professional activity. This means, for the developers, the necessity to find a funding source. We will start with testing / adapting our idea of a good funding model for SàT, of course meeting the ethical and moral commitments that are defined by our social contract.

The association memberships are our favorite source of income! We defined in the internal rules several amounts for the annual subscription, between 0 and 100 euros and every one is free to choose. There's no typo! For the persons who would like to support us without being able or willing to contribute financially, that's possible - because moral support is important too. So there's no reason not to join ;-)

We are unfortunately not ready yet to offer you the possibility to make it online. We actually plan to open a bank account for the association at the end of this month, then we will prepare the online form to manage the subscriptions.

Meetings

We attended this year the "Free Software Days" (aka JDLL in French) in Lyon, "Pas Sage en Seine" in Paris and the "Libre Software Meeting" (aka RMLL) in Montpellier - see the links to watch the recorded conferences (in French). We met or saw again some nice people at the stands and during the speeches Goffi made. Many thanks to the organizers of these events, and to Reflets.info which wrote an article about SàT following the last version's release, allowing a larger public to get to know about the project.

We also participated last week to the "XMPP Summit" and its hackaton in Berlin. We met there some XMPP developers, including two with whom we have regular contact, such as Edhelas from Movim. We presented together our issues with the protocol and will suggest new XEPs to standardize some practices (especially regarding Publish-Subscribe and blogging), and push their implementations.

Saturday, September the 27th between 2pm and 5:30pm, Goffi will participate to a radio program from "Ici et maintenant", recorded in Paris and about self-hosting. There will be many guests including two from the Jappix project.

We would like to organize some gatherings via the association, at least once per year as a general assembly and maybe more often. The date and the location haven't been discussed yet.

Please also notice the recent creation of a "users" mailing list for SàT, it completes the chat room and the "dev" mailing list.

And then?

We would like to migrate our own blogs to SàT. The version 0.6 will focus on blogging (in SàT, it is based on a fine access permission system, so you only write to the people you want), pictures storage and tags implementation. These are essentials features and maybe the last important works before the publication of the first public release, which has been a bit delayed and should be stamped 0.7 or 0.8.

Alexander Gnauck: Unity development with MatriX

Planet Jabber - 15 September, 2014 - 14:56

A question which comes up very often is the following:

Can I use MatriX with Unity 3d?
Of course you can. Many of our customers are using it with great success in their Unity projects.

Unity is based on Mono. MatriX is designed for cross platform and works on all major .NET platforms, including Mono.

Many Unity developers have some problems to get started with MatriX on Unity.
This post should be a small tutorial and address some of the issues you may be facing during your Unity development.

1) Download the correct MatriX dll (Mono build). MatriX builds are not universal, which means you need to download and reference the MatriX library for Mono.
The Mono build can be found at the latest binary downloads here:
http://www.ag-software.net/download-directory/
when you browse to MatriX => Mono

2) The System.Xml.Linq.dll seems to be not a standard Unity reference. Download it as well and add it to your assets. Otherwise Unity may throw an exception when you run your project.

3) Depending on your Unity version you may get compiler errors on iOS. When you use the latest Unity version this should be no problem. On older Unity versions this problem is related to obfuscation. To resolve this please contact us directly.

4) The iOS stripping feature causes problems. It does not work when reflection gets used. The core Xml serializing engine in MatriX is build on reflection using a factory pattern. You either have to remove stripping from your complete project, or exclude the MatriX classes.
Here is an example of a linker.xml file excluding all MatriX classes:

<linker> <assembly fullname="Matrix"> <type fullname="Matrix.*" preserve="all"/> </assembly> <assembly fullname="mscorlib"> <namespace fullname="System.Security.Cryptography" preserve="all" /> </assembly> </linker>

5) Some of our users reported that connecting to an XMPP server does not work inside the Unity editor because of some networking problems of the IDE. When the code gets executed or published on a device it works fine. This is a restriction of Unity and not related to MatriX.

If you run into any other problems please contact us directly. We do our best to solve them.

Distribuir contenido