Merken

Developing the Prosody Xmpp server in Lua

Zitierlink des Filmsegments
Embed Code

Automatisierte Medienanalyse

Beta
Erkannte Entitäten
Sprachtranskript
change the color of the knowledge that you have a reasonable you want to find so I could think and so many the of
land and that the developer of the year for the project and which I found in
2008 is actually these the written and and before I go into the specifics and this is where we get the bit of background about about was the project then back in 2008 when I was working on developing location and which have an exceedingly act in and occasionalism familiarity pig is an open standard communication protocol that's it's messaging but also machine-to-machine communication and such as an Internet of Things so um the peridotite application are you build very quickly and it was a it was working great and um without getting into the details it was just gives consumers the messages that were coming in about 1 per 2nd and and is applying some of the logic of transformation and then it's just displaying them in the 1st and but soon after the 1st type of missions complete I succeeded in like say in the morning I went to bed I woke up in the morning it wasn't working anymore I realize it's the sum of those using it crashed
and and so the on in the living world at the start of it and then it happened again in the late in the day and I've realizes running out of memory and and I have to users not many messages 1 message per 2nd not of messages
and so on started looking for an alternative and and at the cost of a few days I went through all the different services and each 1 has problems and and failed in its and spectacular and the short story of own and that's uh right I went to the mall in was depressed for about a week before and the idea of writing the inside that the critical mass so I just started think how hard could it possibly be so way back in 2008 when the project started in the common question we got was while the white on the floor and owns an obscure scripting language mostly 1 unit and is the language used to stick world war craft and the game and developing an application the whole application in the not embedding is inside an existing applications to the of and especially in network services for a while and and and the loss of resources and things so we got a lot of fun X and people saying all this is just a hobbies our and so on and so on kind of look the beginning it was an types so bitter and much more than that and I've been using the already so it's a royal and Fabian using an insight into the BOP framework and the arrays in C + + and those using C + plus a lot of the time that asserted gets stated and with so compilation times and C +
+ telling me how to write my friend structure and a tendency for the applications of hybrid just become very very quickly I felt needlessly and so no simplicity appealed to me quite a bit and it has obviously many people and and the primary reason for developing there was a time at the development and I felt like to get something off the grand much more easily and and I wasn't planning spend years of my life working on several that's exactly what did happen and and I just wanted something simple weight and just worked as follows using a so the 1st body and mind was the performance of a scripting language and specific language is generally a category of language that an you used to get things done but not necessarily for file and uh so it wasn't a natural choice that sentence others joins resulted project by a couple of friends next PP community and 1 of them also saw the need for next to the south and to be but he wanted and seems faster performance reasons some interfacing with is 1 of the strong conferences of you know and and so it was a compromise we write this and and then 1 by 1 down the road we will rewrite each model in
C for performance and then we have an 11 that never happens as early on we benchmarks discuss curiosity to compare ourselves to the competition and and we were very close to the other and and that was the most popular several times and so you know we develop as graph defined optimize this applies that have like me get in the benchmark and that soon
after reading each of the bonds will margin and this one's two-dimensional and yes I know benchmarks on real world and that it was consistent in language succeed so effectively and next to a service and I'm so as about is that when you consider that there is commonly used in games and often with code running many times between frames and the 2nd and many not fighting after all um want a low-latency garbage collector for example and so it is a real-time applications and services so the it was a good fit my god games also want and I'm time overhead physical the colossal something at the service that have a lot of connections cost hate that kind of thing and so if yeah she wasn't that surprising when when you thought about so obvious worry performance wasn't actually problem and to the next biggest was ecosystem and as many of you will know lose standard library is very thin and intentions and we knew that depending on the loss of third-party models would be the natural cross and but modules were a relatively late addition in those history and With allergenicity skewed towards an embedding into applications have existing 80 hours there wasn't much further developing out exactly part of models and there was some that and it just wasn't generally the way that you know intended to be and and you have a attracted kind of chicken and egg effect which is you know not of models and people just stuck to embedding and not writing all applications in industry and and and because of that no 1 with models because they didn't as opposed this primary dependencies were uh of little socket and the trees the networking is not part of the standard and so there doesn't include about wonderful and Lu that is a streaming smell positive the light right and in the sector which is a wrap around missile and use of a cell us could you corrections that we had for every 1 of these at some point in the project history and we had to implement IV 6 and those socket and they will then they have at
time even we just have to take a carrier and we had on the states and we tried to get mad but it was too slow we had our own cycles to me and say readers release Lewis socket prosody and very original name but always with the goal of getting measurements and eventually did and a said the security library encryption didn't support certificate verification and it did supposed to be a verification and and so we connect some and can talk that we had no idea if we were talking to the NSA onto the 1st we really want to talk to and so it was the best and so we implemented as as well and so you can get details of this to
get you thinking too and matched up with you expected to be connected and limits that we had medieval features all improvements and it was a wrapper around the ecstatic guided the underlying C library and we needed uh over the course of time to expose more of expressing the Eiffel security reasons for example and so in the limit on how far it was willing to parse of of the stream so we can just edit using less memory and
things we need those pullbacks and I still maintain that the extract because not ourselves to it was years since the demise of the project and um and so the have mainly east because when I'm working on positive and and so it's not like maintaining of by choice I feel like you could have a more active and maintain a ship that so there we go later on we added support for SQL databases and the time the DBI supported multiple databases we wanted spot and arrangement the simply and with the pets statements so the learners girls part of us and that's it only supported the statements to the petition documented API and only worked with
some of the supported inductance and and so if you want it to be portable you had to rely on string concatenation and SQL statements turns that was just more half if than so things are much better today and the rocks obviously happened and the thing has a change in in how the community communities structures and I'm in its it's really a lot different now and when we have so many modules easily available to users and for the 1st time in based which means what we depend on interest itself you can start naming it is an honor the models and the model available on the system then the user has to go compilers and edit Make file is most known and Towltime is known and and and then compile from source and exchanges a lot and this cross-platform which is great then but still like to see more collaborative maintenance of the core libraries and the socket is obviously a big 1 and I think there is too important to the community to rely on a single individual spare time and I know that some arguments against picking up set modules but I don't say like that I I think just as a group people what these models to to work and and we need to move from all collaborative intention and begin to maintain a little bit more than 1 someone else may take some of its history don't happen under the thing will talk about that and but I think it's something we really need to really be to work and I want to get the expert of a conscience and so the other way is often raised and do we suffer from contributions because poses numbers in popular language java scripts page the Python whatever and also something everyone knows an Luo has been of the obscure language sort of people that source language and I think it's a lot more popular now than it was in 2008 and but so I say the answer to that question is quite the opposite and we've had but few people come along and say well you know I don't really know what constantly but we have far more people come along and then just like that and they figure out there to get what they need and really easily the models pretty good about programming those that that and it's accessible and and they they just come to the entire funding sometimes and the influence of each wanted and some of them wanted varanus it's here it's it was really good to see that happen and that's I haven't because that's the kind of environment of trying to create the museum's intending to program is obviously that and the fact that someone could just pick up prosody in an extended the way they wanted and it was great policy because it wasn't great and in all cases and but you know that's not that's not the point and our 1st budding for example translated and messages to the Swedish Swedish sex readers from the markets and with a lot of fun where
so the phone that's and not as fun that um using the there's some features that know all languages have so readily available in the western languages but and their houses those and so some interesting things the frozen project we we define and measure table for all functions and that means that when people to stay I think Senators rare to find a set of getting some obscure and which is really taken learning and we also allow indexing function so that you can look up the values inside a closed and use it to tables and again as really debugging and um indication architecture of of sorts and we can also restrict the global environment and prosody by default that enforces a clean Guatemala include global environment and it addresses some stuff but and modules Venice books and so that and the cons for each of the states and
things that could actually fighting this in front of because and you can end up making data between different user sessions and that become a security problem etc. and we set a metastable and prevent certain globals unless you go a special status set and and that's called a lot of mistakes and is innocent mistakes that would be caught without hitting actual but and lots of there's an so the other interesting thing we did was good we created telecoms also when you're positive instance you can have to tell us into the cell and you can actually request any variable many fractional just program and you can even as we defined functions and and it's really great debugging and yes it has been used to all expression systems before and it was inevitable and we also working on adopting low-tech as part of our workflow and and probably that produces a lot of false alarms and other warnings on convincing innocent could um so this could be cleaned up sometimes it's good that it actually find is put an
annotation that that having code that will run through the text cleanly means we can catch a lot of books before they happen and and and learns that is also useful in that regard that sometime before as well and then there is useful so that are trade and
we address these coders splits into 4 main sections and call it is where we put the mental processes specific business logic and and uh such that this is useful in euros net and involves all of network level handling and and that actually provides quite a nice library for and implementing various protocols asynchronous I also using event and by the event binding and a the and both experiments experimentally seek cues as well and it has implementations of different processes which should be in WebSocket on the client and server side and plug-ins is prosody specific buttons and that we supply some and also on users contribute often and the they can either be bundled with positive and can also installed all installed separately and that is specific prosody and we have a defined API and we run each 1 in a self-contained sandbox also interesting willful hosts if a mortal but focused in Annex B then then each post with this article copy the model and that we can still circulated things between them but not the data which is really useful and the tail directory we foreign loads of stuff learned that is just used by the other parent mostly this is things like and data structures that we find useful and also algorithms and
things for example off the top of my head selecting a direct and an outgoing address when we want make so we must choose between multiple before and I use expresses that's all defined in our in our city so we just have this user library implement that and just show all the addresses and that they use this form and and there's a lot of stuff in there that uh you and in Internet the directory that we think would apply outside of posting we try to keep it cleanly separated and and we'd like to work towards releasing those somehow from really rocks now and unnecessary the and and that would be nice to see we just want to do it in a way that doesn't take away from the prosody development time and also if you have a question of where they're going to maintain these things so that's something we want to work tools and that found see some useful if you want us to release the chapter that might encourage us to the point and Plooij it I have to say a word about
and it's an amazing technological achievement and then it does make some different comments passing and it's better if I also allows us to quickly right binding the libraries and things that we and system platforms that we are not only because we then and have immediate access to without having to compiling the and is quite useful but overall we have had a good fit for prosody and on production systems at least every 5 failures tends to be more dangerous to run its print aggression so and something goes wrong and then just and but also the problem plugin has a 1 gigabyte memory cap and because the just doesn't use much CPU and that uses all around when you have lots of people connected so you want to you is always connect on them accidental CPU you want to handle hundreds of thousands of connections you cannot do that among the but you won't scale as high as your father wants to go and so the just those things combined we decided just focus on standard and speaking of memory usage of was done there's being great resting and turning is really helpful and we uh we find it helps memory usage and also with speeding up we have a lot of short strings and annex pp that we to compare and such so and the the only place it is obtained is in and on network buffers and things go handling just arbitrary
data that has been identified with will result and which we haven't moved to and secure future what would we change the answer is not a lot and I'm quite happy with what of language and I think the benefits of using the part where it and all the problems with had and they have been reminded us anything quite varies from there are the related changes on that for example changing interventional imaging but not yet on 5 . 2 and this been difficult I know doesn't believe that often and that migration mostly base we use the model functions in basically every single file and reveal that 5 . 2 has been relied on in some places and things like just tests have been ident using model to some books and things we can formalize but that we had the conundrum of do we support 5 . 0 5 . 1 of them support for every school and 5 . 2 and we got work on the digit and all these things that the answers said where it will gradually 520 would probably because the issues I mentioned not going to worry too much about the logic probability and and so the only other change this important is we want to move away from using standard insensitive to exceed prosody for the main script is just a little script and you just like with the 5 . 1 that in top H top and PSC just appears look like point 1 which is very useful to set of means and so we're planning to use a binary that links to the library
and and look probably new some things in that part of his that is more easily ordered and because the kind of thing a higher level languages of history and by so there isn't much of the time but but that's basically it than any questions think thank
you what if
Server
Projektive Ebene
Kantenfärbung
Softwareentwickler
Computeranimation
Umwandlungsenthalpie
Server
Bit
Gewichtete Summe
Kartesische Koordinaten
Transformation <Mathematik>
Internet der Dinge
Extrempunkt
Mathematische Logik
Computeranimation
Offene Menge
Datentyp
Projektive Ebene
URL
Message-Passing
Kommunikationsprotokoll
Standardabweichung
Umwandlungsenthalpie
Videospiel
Server
Bit
Topologische Einbettung
Einfügungsdämpfung
Gewicht <Mathematik>
Datennetz
Kategorie <Mathematik>
Compiler
Formale Sprache
Kartesische Koordinaten
Elektronische Publikation
Framework <Informatik>
Computeranimation
Einheit <Mathematik>
Spieltheorie
Datentyp
Server
Skript <Programm>
Projektive Ebene
Softwareentwickler
Datenstruktur
Auswahlaxiom
Array <Informatik>
Randverteilung
Server
Einfügungsdämpfung
Punkt
Rahmenproblem
Natürliche Zahl
Minimierung
Formale Sprache
Zellularer Automat
Kartesische Koordinaten
Extrempunkt
Code
Computeranimation
Netzwerktopologie
Informationsmodellierung
Spieltheorie
Reelle Zahl
Programmbibliothek
Benchmark
Soundverarbeitung
Einfach zusammenhängender Raum
Addition
Topologische Einbettung
Oval
Graph
Datennetz
Modul
Echtzeitsystem
Grundsätze ordnungsmäßiger Datenverarbeitung
Mereologie
Server
Projektive Ebene
Socket
Speicherbereinigung
Overhead <Kommunikationstechnik>
Fitnessfunktion
Standardabweichung
Server
Digitales Zertifikat
Freier Ladungsträger
Computersicherheit
Programmverifikation
Computeranimation
Streaming <Kommunikationstechnik>
Chiffrierung
Dreiecksfreier Graph
Wrapper <Programmierung>
Programmbibliothek
Inverser Limes
Socket
Einflussgröße
Aggregatzustand
Server
Bit
Punkt
Compiler
Applet
Formale Sprache
Gruppenkeim
Zahlenbereich
Extrempunkt
Computeranimation
Homepage
Informationsmodellierung
Programmbibliothek
Skript <Programm>
Datenstruktur
Optimierung
Auswahlaxiom
Expertensystem
Parametersystem
Befehl <Informatik>
Datenhaltung
Quellcode
Physikalisches System
Elektronische Publikation
Modul
Quick-Sort
Portabilität
Softwarewartung
Mereologie
Projektive Ebene
Socket
Speicherabzug
Programmierumgebung
Message-Passing
Zeichenkette
Lineares Funktional
Telekommunikation
Server
Subtraktion
Computersicherheit
Formale Sprache
Zellularer Automat
Quick-Sort
Computeranimation
Menge
Automatische Indexierung
Mereologie
Projektive Ebene
Indexberechnung
Computerarchitektur
Optimierung
Default
Programmierumgebung
Instantiierung
Tabelle <Informatik>
Umwandlungsenthalpie
Schnelltaste
Server
Subtraktion
Gewicht <Mathematik>
Prozess <Physik>
Datennetz
Protokoll <Datenverarbeitungssystem>
Implementierung
Plug in
Mathematische Logik
Code
Computeranimation
Übergang
Client
Last
Code
Server
Vererbungshierarchie
Datenstruktur
Steuerwerk
Verzeichnisdienst
Server
Punkt
Adressraum
Hochdruck
Sprachsynthese
Extrempunkt
Zentraleinheit
Systemplattform
Computeranimation
Internetworking
Puffer <Netzplantechnik>
Code
Programmbibliothek
Softwareentwickler
Gammafunktion
Schreib-Lese-Kopf
Einfach zusammenhängender Raum
Zentrische Streckung
Datennetz
Güte der Anpassung
Plug in
Physikalisches System
Biprodukt
Kugelkappe
Diskrete-Elemente-Methode
Festspeicher
Verzeichnisdienst
Fitnessfunktion
Zeichenkette
Softwaretest
Lineares Funktional
Server
Punkt
Formale Sprache
Mathematisierung
Automatische Handlungsplanung
Extrempunkt
Mathematische Logik
Binärcode
Computeranimation
Übergang
Arithmetisches Mittel
Informationsmodellierung
Migration <Informatik>
Digitalisierer
Mereologie
Programmbibliothek
Skript <Programm>
Bildgebendes Verfahren
Server
E-Mail
Computeranimation

Metadaten

Formale Metadaten

Titel Developing the Prosody Xmpp server in Lua
Alternativer Titel What We Learned Developing The Prosody Xmpp Server in Lu
Serientitel FOSDEM 2016
Teil 105
Anzahl der Teile 110
Autor Wild, Matthew
Lizenz CC-Namensnennung 2.0 Belgien:
Sie dürfen das Werk bzw. den Inhalt zu jedem legalen Zweck nutzen, verändern und in unveränderter oder veränderter Form vervielfältigen, verbreiten und öffentlich zugänglich machen, sofern Sie den Namen des Autors/Rechteinhabers in der von ihm festgelegten Weise nennen.
DOI 10.5446/31020
Herausgeber FOSDEM VZW
Erscheinungsjahr 2016
Sprache Englisch

Inhaltliche Metadaten

Fachgebiet Informatik

Zugehöriges Material

Ähnliche Filme

Loading...