Summary
Running a successful business requires some method of organizing the information about all of the processes and activity that take place. Tryton is an open source, modular ERP framework that is built for the flexibility needed to fit your organization, rather than requiring you to model your workflows to match the software. In this episode core developers Nicolas Évrard and Cédric Krier are joined by avid user Jonathan Levy to discuss the history of the project, how it is being used, and the myriad ways that you can adapt it to suit your needs. If you are struggling to keep a consistent view of your business and ensure that all of the necessary workflows are being observed then listen now and give Tryton a try.
Announcements
- Hello and welcome to Podcast.__init__, the podcast about Python and the people who make it great.
- When you’re ready to launch your next app or want to try a project you hear about on the show, you’ll need somewhere to deploy it, so take a look at our friends over at Linode. With 200 Gbit/s private networking, node balancers, a 40 Gbit/s public network, fast object storage, and a brand new managed Kubernetes platform, all controlled by a convenient API you’ve got everything you need to scale up. And for your tasks that need fast computation, such as training machine learning models, they’ve got dedicated CPU and GPU instances. Go to pythonpodcast.com/linode to get a $20 credit and launch a new server in under a minute. And don’t forget to thank them for their continued support of this show!
- You listen to this show to learn and stay up to date with the ways that Python is being used, including the latest in machine learning and data analysis. For even more opportunities to meet, listen, and learn from your peers you don’t want to miss out on this year’s conference season. We have partnered with organizations such as O’Reilly Media, Corinium Global Intelligence, ODSC, and Data Council. Go to pythonpodcast.com/conferences to learn more about these and other events, and take advantage of our partner discounts to save money when you register today.
- Your host as usual is Tobias Macey and today I’m interviewing Nicolas Évrard, Cédric Krier, and Jonathan Levy about Tryton
Interview
- Introductions
- How did you get introduced to Python?
- Can you start by describing what Tryton is and how it got started?
- What kinds of businesses is Tryton most suited to?
- What kinds of businesses is Tryton not a good fit for?
- Within a business, who are the primary users of Tryton?
- Can you talk through a typical workflow for interacting with Tryton?
- What are some of the most complex or challenging aspects of modeling a business while maintaining a high degree of customizability?
- Can you describe how Tryton is architected and how its design has evolved since it was first started?
- If you were to start over today, what would you do differently?
- There are a number of plugins for Tryton. What kinds of functionality can be customized using the available interfaces?
- What is the process for building a custom module for Tryton?
- How do you manage sustainability of the Tryton project?
- Given the criticality of the Tryton platform, how do you approach ongoing stability and security of the project?
- What is involved in deploying and maintaining an installation of Tryton?
- What are some of the most interesting, innovative, or unexpected ways that you have seen Tryton used?
- What is in store for the future of Tryton?
Keep In Touch
- Nicolas
- Cédric
- @cedrickrier on Twitter
- cedk on GitHub
- Jonathan
Picks
- Tobias
- Audio Books
- Audible free trial (Affiliate Link)
- Overdrive – ebooks and audiobooks from your local library
- Public Domain Audiobooks
- Audio Books
- Nicolas
- Cédric
- Jonathan
Links
- Tryton
- B2CK
- Tryton Foundation
- Advocate Consulting Legal Group
- Scheme
- Lisp
- Belgium
- EuroPython Conference
- Plone
- Zope
- VBA (Visual Basic for Applications)
- Django
- Odoo
- ERP == Enterprise Resource Planning
- Small/Medium Enterprise (SME)
- GTK (Gnome ToolKit)
- 3-Tier Application
- Cookiecutter
- Tryton Module Cookiecutter
- Tryton Repository
- Docker
- GNU Health
- Nereid
The intro and outro music is from Requiem for a Fish The Freak Fandango Orchestra / CC BY-SA
Hello, and welcome to podcast dot in it, the podcast about Python and the people who make it great. When you're ready to launch your next app or want to try a project you hear about on the show, you'll need somewhere to deploy it. So take a look at our friends over at Linode. With 200 gigabit in private networking, node balancers, a 40 gigabit public network, fast object storage, and a brand new managed Kubernetes platform, all controlled by a convenient API, you've got everything you need to scale up. And for your tasks that need fast computation, such as training machine learning models or running your CI and CD pipelines, they've got dedicated CPU and GPU instances. Go to python podcast.com/linode, that's l I n o d e, today to get a $20 credit and launch a new server in under a minute. And don't forget to thank them for their continued support of this show.
Your host as usual is Tobias Macy. And today I'm interviewing Nicolas Herrar, Cedric Crea, and Jonathan Levy about Triton. So, Nicolas, can you start by introducing yourself? Yes. Hello,
[00:01:09] Unknown:
everybody. Triton, and I'm also the president of the Triton. And I'm also the president of the Triton Foundation, which is the subject of today.
[00:01:24] Unknown:
And, Cedric, how about yourself?
[00:01:26] Unknown:
Hello, everybody. So I'm Cedric Pierre. I'm the coworker of Nicolas at Bido CK, and I'm currently serving as, the leader of the Triton project.
[00:01:39] Unknown:
And, Jonathan, how about you? Yes. My name is John Levy, and I am not 1 of the core devs like Nikola and Cedric. I am instead a Triton user. I am a lawyer by training with Advocate Consulting Legal Group, and we have been using Triton for 8 years. And I'm involved also with the Triton Foundation. And going back to you, Nicolas, do you remember how you first got introduced to Python?
[00:02:03] Unknown:
Oh, it's almost 20 years ago, in fact. I was at the university. I did my thesis in scheme, which is, the elect of Lisp. And, when I was job hunting, some of course, there is not many, job for Scheme programmers, but 1 guy on the mailing list told me you should be looking at, Python, and, indeed, it was a big, good idea because I I was hired by Arang, which is a company in Belgium, the 1 that organized the very first EuroPython conference, and, there I worked on Plune and Zope. So, it was in 2,001,
[00:02:54] Unknown:
I guess, something like that. And Cedric, how about you? Do you remember how you got introduced to Python?
[00:02:59] Unknown:
I'm not sure, but I think it's about 15 years ago when I started to work at a company, Tinney ERP, which was writing, an ERP in Python. So it's just I I learned from there.
[00:03:15] Unknown:
And, Jonathan, how about you? Well, so as I said before, I am a lawyer by training, but I ended up at a firm that also did some heavy accounting work. And we had a series of Excel workbooks that someone along the line had programmed some visual basic for applications, but there wasn't anyone left in the company who was able to work with that. That person had left, and so I decided to dig in and thought, well, I've always been curious about programming, so let's see if I can do this. And so I took over the visual basic for application stuff, and that got bigger and bigger over the course of some years and got to the point where that tool wasn't gonna cut it. We were gonna need a bigger bigger tool. An engineer friend of mine suggested that I should learn Python.
I did some study on that, tried to do, migrating from Excel to a Django project that that didn't go so well, and then I transitioned from the Django project to Triton.
[00:04:18] Unknown:
And so in terms of the Triton project itself, can you describe a bit about what it is and how it got started?
[00:04:25] Unknown:
So, Triton is in fact software framework, so it provides all the the required pieces that are needed to to create business applications. And in top of that, the Triton project provides also a set of modules that are covering a wide variety of use cases. It started, 11 years ago. I don't remember the date exactly. And it's a fork of tiny ERP, in fact, which is, well, better known now as Odoo. I guess that, a lot of people know Odoo already. It's, it's also a Belgian company where, Cedric and I, we both work at the time, and, we we decided to to to leave this company and to create a fork for well, I will let probably Cedric explain the the reason of the fork because he's the 1 behind.
[00:05:28] Unknown:
Okay. So indeed, it was, 10 years ago, I think, or a little bit more. Another, coworker, Bertrand Chenal and me, were working at Tinney, on the ERP, and we were not very, satisfied by the quality of the product and how the project was, manage it, manage it and how it evolved it was evolving. And so as it was, an open source project, we decided to leave the company and start our own version of this, ERP. And so we founded, B2CK as a company to provide services, and, we started to work on Triton, and redesign and change what we wanted to change. Since task we work it on was to improve the quality by adding test, We make the development more open.
So, we publish it our repository because at this time, TiniLP didn't publish this repository. And, we also improved the design of all the modules and how they communicate each other. So this took us about 1 year of work until we got the first release, the 1.0. And then, since there, we make a release
[00:07:11] Unknown:
every 6 months, new modules and so on. And you mentioned at the beginning that you're all members of the foundation for Triton. I'm curious if you can discuss the relationship between the Triton Foundation and the Triton project and the reasoning for creating that type of an entity for governing and managing the project.
[00:07:30] Unknown:
Sure. If I could jump in quickly to answer that. So the Triton project, from my view, has shown a great commitment to the principles of open source. And b 2 c k, where Cedric and Nicola are, is a company that has devoted a lot of resources to furthering, Triton. But my my feeling was that they didn't want a perception of that this was really, pigeonholed by b 2 c k. And instead, they proactively took the step of forming the foundation as a nonprofit under Belgian law and contributing all the intellectual property of the Triton project to that foundation. Now b 2 c k remains very dedicated to advancing Triton, but I think that that, the foundation exists to make sure that Triton will remain a healthy open source project into the future without relying on any specific company.
[00:08:36] Unknown:
Yes. I may add something maybe. Please, please. Indeed, it's exactly that. The in fact, as we are a fork of tiny ERP, at that time, it was open ERP, we receive a lot of request of companies that would like to invest their time in Triton, but some of those were afraid that b 2 c k was the main driving force and that's 1 day or another, we might close the the the code the source code and have a complete control over the project. And that's how, as Jonathan said, we decided to create a Belgian foundation because the those foundation, under the Belgian laws make it a requirement that you have to follow nonprofit goal.
And in this case, it's the development and publicity of Triton. And there's a small mistake. The foundation doesn't hold the copyright. In fact, every contributor still holds his copyright. So, Jonathan, for example, holds his copyright. Everybody holds his own copyright and so it make it difficult to to change the license of the project because our license is GPLv3 or later. And, you would have, if you want to change, to contact everybody. And, the fact that you have to contact so many people, it will make it difficult and it allows us to to to keep the GPL, I guess, forever.
[00:10:15] Unknown:
Yeah. I know that things like contributor license agreements
[00:10:27] Unknown:
guard against somebody relicensing the project in the future? Yes. That's exactly that. That's the contributor license agreement that we we we have some issues with and we decided to guard us against those changes by by distributing the copyright. Exactly that. You're on point. Yeah.
[00:10:49] Unknown:
Indeed, we are in the same situation as the Linux kernel, which is GPL 2, but it's also, the copyright is shared with a lot of developers. So it's a a kind of protection in some way.
[00:11:02] Unknown:
And so the project itself is focused on providing the software and the utilities necessary for being able to run and manage a business. I'm curious if you can discuss a bit about the types of businesses that Triton is most well suited to and some of the cases where it might not be a good fit for a particular type of business?
[00:11:23] Unknown:
Indeed, the the the main target of Triton is, the small and medium, enterprise. So I would say it's it goes from 1 employee to 200 employees. And for now, the functionality that has that are covered by Triton can be helpful to companies that are in the wholesale business or they that manage they have to manage a warehouse or a stock. Also, it works for service companies and for production company. The type of companies that for now we are not providing good enough features for for them is mainly the retails the small retails, companies because, mainly, we don't have a point of sale for now. And, also, what we have seen is that we don't fit well with companies that are not well organized.
When very small companies sometimes works with just papers and post it and and so on, And there are very difficulties to go with an organized tool that force them to follow some workflow and stuff like that. So, usually, it's because these kind of small companies are not mature enough for yet for an an ERP. But sometimes, going trying to implement an ERP inside the company is also a way to organize the company and follow the best practice and find workflow and so on. And and 1 is others. So the way that I would describe it is first, we have to talk about what exactly Triton is. So there's the Triton kernel,
[00:13:07] Unknown:
which interacts with the database, typically Postgres. And on top of the kernel, people implement these plugins. And so as Cedric was describing, there are excellent warehouse plugins, excellent project for service companies plug ins. And so there's a there's a divide between Triton can be fantastic for some companies that may not have premade ready to go modules available. It would just require somebody to to write the module. Okay? I would say that thinking about it broadly that way, any company that is needing a database to keep track of, you know, their internal machinations and where Postgres would be an appropriate database, any company like that, Triton would be certainly a project to consider.
And very likely, they would find that there are ready to go off the shelf modules that can take care of what they need. Now as far as where it wouldn't be a good fit, there are companies that don't use a database as try that, Cedric was saying that maybe they are small enough that they can just kinda keep track of things just personally. And, sure, if they don't need a database, Triton wouldn't be the project for them. But if you need a database and Postgres is the right scale of Triton, I guess, who is it designed to be targeted at primarily as far as the people who are going to
[00:14:37] Unknown:
to be targeted at primarily as far as the people who are going to be interacting with it on a day to day basis? And what are some of the considerations or design challenges that you face in terms of evolving the product, keeping those people in mind?
[00:14:51] Unknown:
Oh, that's a tough 1. Triton is mainly, as it is an ERP, it's mainly a a backup. It's designed it for back office users. So we have 2 2 2 clients, 1, which is the original client that was developed, which came from the fork. It's a GTK client, so based on the the the toolkit made from the Gnome project. And we have the JavaScript client, which obviously works through to your browser. And we try to make those the most ergonomic as possible, but it's not an easy task. I think that the GTK client is probably most more ergonomic than the than the JavaScript 1.
But indeed, on the other hand, the JavaScript 1 is easier to deploy and so on, so it's it has its pro, and it's quite difficult to to know which 1, to to choose, in fact. I I think people can use both. And, usually, back office user will use the GTK client that they can install, and those those back office user are accountants, purchase management people, and, account managers and people like that that that they do form filling and they they they they have to search some information in the system to see why a shipment hasn't arrived or to feel the fact that you have lost,
[00:16:25] Unknown:
10 pieces of a product or something? Yeah. And the way we try to keep the ergonomy and the satisfaction of the users, it's that we we try to make change, small step at a time and build on the existing and try to refine it and improve it progressively. This way, we we have early feedback for small change, and we try to always improve it or take the the feedback community project, we we have inputs from, the the whole community who can say the word about the the the interface and the, the algorithm and how things are are done. So
[00:17:23] Unknown:
And then as far as the actual workflow of using Triton and being able to maintain an appropriate level of structure for the workflows while providing the flexibility needed to model a given business. I'm curious if you can just talk through maybe the day to day interaction of a typical user of Triton and maybe some of the customizations that can be applied to simplify their operations or to match the specifics of their organization?
[00:17:55] Unknown:
Okay. So the main goal of, an ERP is to centralize, the data in 1 database. So this way, you don't need to to duplicate and to reenter the the data in many different software, and, also, it helps you to keep the integrity of your data. So the typical, workflow, that you you have in Triton is that you have the salesman who enter a a sale order in the application. So he will select an existing party from the address book, already stored in the the system, and he will pick some product that he sold selling. And, once he filled the the the seller there, he will, just confirm by clicking on the button.
And automatically, the system will create, the the shipment document to to ship the the product to the customer, but also the invoice, for the accounting. And, also, as you have a shipment to to send, the system will know automatically if it needs to purchase to to supply the the the warehouse from where you are shipping the product because maybe you don't have enough product for this sale order or you have a rule that you want a minimal quantity of product. And then automatically, Triton will create a purchase request for for the missing products, and the purchase manager can see those requests that that are created automatically, and he can convert into a purchase order by selecting the supplier that fits for this purchase and, make the negotiation with the the the supplier to to receive the product.
And, this document, the purchase, that will be created out of the request, will also create a shipment, but an incoming shipment from the supplier. And so when you receive the product, you will validate the incoming shipment that will fill the warehouse and you will know that your shipment for the customer, you can now process it because you have received the product. So, as all the information is stored into 1 database, the information is shared across all the documents, and they can trigger automatically some step in the workflow and and so on.
[00:20:52] Unknown:
So what was just described there was functionality that you get through a module. So that was the I I we don't use that module. Is that the product shipment module or the warehouse module? Yes. Yeah. It's for And Triton, the way I would think about it is that you have the desktop client that gives you automatically many tools for browsing or editing the data in the database as well as excellent tools for restricting access or creating groups of users that have limited access to various parts of the database, and that is just automatic self working. You get the system going and you have that layer. In addition, based on your company's specific needs, you can write workflows into modules. And so you would create a custom module for your company or maybe there's an off the shelf 1 that fits you well because there are many off the shelf ones now that will allow you to go through a workflow as was described there where you you place an order and then take it from order placement through every stage of the warehouse and the shipment out, etcetera.
But you have the flexibility to write whatever workflow you you require. Typically, how your employees are using Triton, it it depends on what the employee's role is, what what they need to do. They can use it in either way to just browse and edit the software, excuse me, the database information or to take steps through specific workflows that are written a module? Yes. Of course. Each workflow step
[00:22:26] Unknown:
can be customized, can be automated, or or not, and, you can add more steps if you want. Everything is flexible on this, side.
[00:22:37] Unknown:
So this is probably a good opportunity to talk a bit more about the architecture and the implementation of Triton and some of the ways that it has evolved since you first forked it from the parent project? So,
[00:22:52] Unknown:
the architecture of Triton is a synchronous 3 tiers application. So the the usual 3 tiers, the database, how do you say that, the the business logic, and then the the the client, which which, as I explained, is is, are both thin clients, 1 available for the desktop users and 1 for for people through their browser in JavaScript. And so so this is the the big picture. Then in Triton, you have several layers. So the first 1, which provides the access to the database, which is currently following an active record pattern. Previously, it was using a data mapper because tiny ERP at that time was using this this pattern.
They switch they switch later, but it has nothing to do with that. And thanks to the active record, we can do introspection on the classes and we infer the database schema and we create new columns in the tables. We create, of course, also the tables if it's required. Then you have all the business logic where you have, the notion of users, groups, and then everything that is needed by by your module, your own module. So, for example, if you make a module that will model a sale, you will obviously have the sale adder with the company that's that is selling something, the party you are selling to, the currency you are using, then you will have some sell lines with the quantity you sell, the unit of the product Triton module, which models the workflow, which pilots all the steps that your cell your cell will go through. So, for example, you create the in in in the start a draft sale, and then you confirm the sale after discussing it with your customers.
And afterwards, you you process the sale, and it will create shipments eventually if you are selling a product and so on. It will also also create an invoice, etcetera, etcetera. And the next step is displaying all this information to the user because we have the code that we have to to to have a user interface. And the user interface is specified also in the modules, Thanks to XML files, which defines all the fields are set up on the screens. It's it's almost like HTML if you you want, but less flexible. And we send this XML to the to the to the client.
The client display all the fields on the on the screen and the user have also the buttons so they can trigger workflow steps and so on. I just want to
[00:25:57] Unknown:
add that, a particularity of Triton and in the design, it's the the modules and the modularity. What happened is that each module can define classes. They can be base classes or a kind of partial class that would be used to construct the the main class of the active record. So depending of which module are active activated, the server will build dynamically the class by composing all the small parts of all the small classes that are disseminating different modules to construct, 1 the the the main class for a kind of document. This way, we can have a module that define a a main object.
I can keep with the the same example and have another module that extend the same model by adding, for example, a new field or a new step in the workflow or new methods and and so on. So the the server, we combine both class to create 1 main class that will be always be used by the server to manipulate the object. So, we dynamically create those base class, and this give the power of in Triton to be very flexible because, by activate a module in Triton, you can modify the behavior of existing objects directly, and you can really modify any property of the of the object.
It can be the fields or the methods on it and and so on. And, of course, thanks to the introspection to create the database schema scheme, the the activating modules that are the new field will, automatically,
[00:28:26] Unknown:
create the new columns in the in the database. Well, let me talk about that just a little bit more because the what Cedric is talking about here is 1 of the things about Triton that I just I find remarkably clever. And it's this different inheritance model where let's say that you have a a base module like the party module, k, which is a a standard module that's off the shelf, and it defines a party class. And then you have 2 other modules that you wanna rely on, and say 1 of them creates a variant of party where now they have some new database attribute, you know, let's say middle name. Let's say base party has just first and last name. Now this other module has middle name. And now you can create a second new module that also extends party, adding whatever methods or business logic or database columns you like. And you don't need to have a linear tree of inheritance where you've got base module party and then module a inherits the party model from the party module, then module b inherits it from, module a. Instead, there's this plug in logic that's used that allows you to use these modules much more flexibly and install them through PIP, and you don't and, of course, anything that is powerful, you could get yourself into trouble. Right? And so it it you you do need, of course, to be careful that you're not going to create contradictions across the modules. But it's a very clever different inheritance scheme that I I've never seen anywhere else. And Triton lets you uses that to let you use modules and it it just sort of plug them in as you like, and it provides you with some very useful hooks to take care of, things like migrations, in in the register method of models and stuff like that. I think that it is just very well designed for modularity. And and, Cedric, I have never asked you, but where did this idea for that inheritance model come from? Is that something you saw somewhere or did did you just think of that? And and the way it's done is through the it'll construct this multiple inheritance where at at startup time, you're creating a new class that's inheriting multiply from each of the declarations in each of the sub module.
[00:30:45] Unknown:
In in fact, I can reply to that because that's an idea we had with a former tiny ERP employee, Gaetan Du Menten. When I was there, we we were working together there. We had 1 month to do something that we found cool, and I I remember that we've done that together. So it's it it exists also in Odoo, in fact, and it's we we had 1 month to do it. It was a bit too short, so, the the the Fabienne, the the the guy behind Odoo finished it, but not as as cleanly as we would have done it. And so, yeah, the the idea, it's it's basically it comes from the fact that we were playing with, metaclasses in Python at that time, and we were pretty convinced that by using metaclasses, you could create classes that would do what what Triton does now and what, Odoo does also, of course. So it's a it's an idea we had, I don't know, maybe 4 14 years ago or or or or 13 years. For the records, I
[00:32:02] Unknown:
ran into a similar design, indeed, in Firefox. Yeah. But it's Oh, yeah? I think it's no more, in the current add ons because they use web extension standard. But before that, you could tune all the interface, the the dual stuff. I don't know if you can remember. And, there were also merging class kind of classes together to to compose the the interface and the and the behavior. It's the only time I see something similar a little bit similar that, depending on what is activated, you compose a class with parts partial classes around. But, yeah, for sure that's 1 of of the power of the main reason to use Triton is this powerful extension way, because it allow us to build simple blocks models with simple functionality and compose them.
You you pick the modules, you want to use by functionality, and you can just extend them or make some glue to to make them work together as you like. And this way, you you reuse a lot of existing stuff, that the project provides, and you have just some glue code or some small customization
[00:33:37] Unknown:
to to create. So for somebody who's interested in creating their own extensions and modules to plug in to Triton, what is actually the process of getting something started and getting it integrated? And what are the available extension points for Triton for them to be able to customize any particular internal behavior of it? I would say, first, to to start
[00:34:00] Unknown:
to create your own modules. What the the project provide, a cookie a cookie cutter template. I don't know if you know about it. Cookie cutter is a project to to scaffold. Scaffold. Yeah. Project. So, it asks, some questions about the name, the version you want to use, and so on. And it creates for you the the the skeleton of of the modules, and it's something already working. You can just, put it in the Triton modules folder, and you have your module. But, of course, it does nothing because you have put any new logical in it. But from there, you can define a new class that will, be registered in in in the system or or modify an existing class. So that's for the the the Python part. You write classes, in your module. And for as Nicolas said, for the view layer, you just have to write some XML layers that define the position of the fields on the screen. That's the way you start to work, to customize Triton for you. Now if you want to contribute to to Triton, the best is to first fetch the the source code from the repository.
It's on the website of Triton. And we have a procedure to submit, patches through a a code review process, and we welcome any improvement that people can provide on Triton. So, creating a patch is the the simple way when you want to fix or improve small stuff. Once you start to be confident and you think to you can contribute a full module, we first ask people to write what we call a blueprint. So it's a description of your goals and how you are going to implement it and and so on. It's on our form that you you post that, and people can discuss about the ideas and the design and so on until we reach a kind of agreement about the best solution and the best way to to implement your new the new feature. And, then once it's it's agreed, you can submit submit a a big batch with all your modules and then start the the review process from the community and so on until, again, we reach an agreement about the quality of the of the submission.
And, once it's done, 1 of the the core developers will push for you the the new module, on the Triton, repository, and it will be part of the next, release.
[00:37:15] Unknown:
Now that, of course, is the process for sort of 1 of the official core modules. You can, of course, write your own module for your own your own business or you can write, modules that you open source, and there are a significant number of modules available on GitHub or Bitbucket that are not part of the core or not officially, you know, sanctioned by the Triton project. And so, of course, use them at at your own risk and and always know what you're installing. But there there are other modules available Yeah. Of course. You just the core 1. You can publish your module on, PyPI.
[00:37:51] Unknown:
Modules is a a standard Python package, that, you you can and you can find a lot of them on PyPy. By the way, we have a classifier on PyPy, the Triton. I think it's framework Triton, so people can use it to to filter and to find Triton modules there.
[00:38:17] Unknown:
And in terms of the overall project itself, as you mentioned, it's been around for a number of years now. And I'm curious if you were to completely start the whole project over today, if there were any elements of it that you would reconsider or redesign given the current state of the art and the available libraries and ecosystem? Yes.
[00:38:38] Unknown:
Indeed, it's a it's a little bit difficult to to answer because 1 thing we do with Triton is when we think some there is something out, that exists and is better than some something we have done. We are not fear to to trash what we have done and use, the new stuff. So we the project has evolved it a lot in 10 years, and we have, included or reused existing tools or framework, that we found that are better than what we had. So, at some point, I would say, if I to start Triton now, I guess, I it will be as it is now, of course, without all the the previous version, different tools that we were using back in back at that that time.
But, at at at some point, I I have no maybe we will change something, tomorrow because we have we found something better for for our specific need. But for now, I don't see we
[00:39:56] Unknown:
have nothing in mind. When we thought about this question earlier today, we we had 1 stuff that we would probably not not include. It's the the fact that, you can have per process, a connection to multiple databases. Currently, that's what that's what we do. Probably, that's
[00:40:19] Unknown:
something that we would not do again. Right. And am I right to understand that the Docker is the big changing technology there? That when that was built, the idea was, well, you're gonna have 1 server running Triton, and it may need to connect to a lot of things. Whereas now you can spin up multiple Yes. Indeed.
[00:40:41] Unknown:
Now we most of the deployment of Triton now are just to connect to 1 database, because it's it's much it's much cheaper to to start a new process. And so this feature in Triton, indeed, is mainly used by the feature in Triton indeed is mainly used by developers, where the the they have 1 they start 1 Triton, and they switch from 1 database to another to test different case or scenario. But, in production, it's not really used, and, indeed, it adds some complexity, in some part of Triton that could be removed and simplified. That's a a point.
[00:41:37] Unknown:
And then as far as the sustainability of the project, we mentioned that there is the foundation that is there to serve as the governing agent, and b 2 c k is at least 1 company that's involved in the continued development of it. But I'm curious how you're approaching just the overall day to day of being able to ensure that necessary work gets done and that the project is evolving and some of the approach that you use to ensure the ongoing stability and security of the project given the criticality of it to a number of people's businesses?
[00:42:12] Unknown:
So for the project itself, the foundation rely on the fact that it will receive, donations from people. And, hopefully, we we are very lean, so we don't have a lot of costs. And with the few donations that we have now, it allows us to have all our servers, the trademarks that are paid, and we have also some some money to organize sometimes try to gather in some developers or unconference. And for the the project in itself, as we are a free software project, we we really really rely on the fact that people use our project and need to need it to to exist for for their for their business. So b 2 c k, for example, we have customers and they pay us to work on Triton and, there are other companies that that do that. So I mean, Spain, in Argentina, Germany, and so on, France, of course. And thanks to them, we are allowed to to dedicate some time on the free software project.
Although, we are a small project when you compare us to the Linux kernel or Firefox or, I don't know, Django. We we still can live and thanks to the dedication of some some developers that do the the work on their free time and so on and so on. Yeah. It's it's a bit tricky, but it works. And economically, it it works also. Also. We are not unicorns, but, but it works. The main business
[00:44:08] Unknown:
plan that for the companies around Triton is to sell services, on Triton. So the service they provide often involve, improving Triton itself. So, this is the main way Triton evolve and keep up to date with regulation and and so on. The the other point was about the, the maintenance and the security. We have some process that allow us to ensure that we don't break too much Triton. First is that we have, wrote on a lot of tests for every module is a set of tests by default that ensure some integrity and quality in the in, the Triton, the code, the Python code, and so on. But, also, we we write extended test, for for many key modules, like for accounting, sales, and so on.
We have 2 kind of test is the first 1 is unit test. So we test usually methods in on a class and with different values and and so on. And we have also a larger test, which is more about integration test, where we we script a full workflow, in the in the application. By workflow, I mean that, with scenario that start, create a sell order, validate the sell order, validate the shipments or and post the invoice, check that the accounting is right, ensure for the shipment that a back order is created, and so on and so on. And, we have a lot of scenario like that.
And, indeed, each time we find a bug, we try to write a scenario that showed the the the issue or a test that ensure that that the the the code is now tested for this kind of case. Then we have a continuous integration tool that build, and run the test on each commit. And so, if 1 change break the test suite, it harms the developer responsible for this, break, and, we try to fix it as soon as possible. And, of course, we don't release make a new release if there is an issue on 1 test. That's the how we keep the state of Triton as it is now, the stability. The second point about also, it's that we review all the change.
So, we try to have at least 1 review for each commit. It's not always easy to get because it takes time. And on such open projects, people don't always have the the free time to to make reviews. But we try to to to enforce that. And, of course, the the review also ensured the the security, of, Triton because we have more eyes looking at the code and they may spot weakness and issue. And, finally, for part the particularity of the security issue, we have a specific process to report security issue where they are only known by a very small set of, core developers, and they try to find the solution and provide the fix. And once we have a proper fix, we make a security release, which is coordinated with the pack the package, the packager of different distribution where Triton is packaged.
And so we set up a release date for the security issue, which goes public only after this date. That's, the point for security. And now for the people who are using Triton, the the end users, they have the choice of 2 kind of release to use. We have a long term support release that we support for 5 years. So when, you are this is, the the best choice if you don't want to upgrade frequently and have new features. This feature this series receive bug fix and security release for 5 years. And, otherwise, the normal release are supported for 1 year. So, we give the choice of for to the users to choose, which kind of frequency you want to have to upgrade.
And we try to make bug fix release every, 15 days, if, of course, there is bugs to fix. And I didn't say that, but we make a release every 6 months. It's a major a major release with new features, new modules,
[00:50:12] Unknown:
and new client, and so on. And then as far as the usage of Triton, I'm sure that it's been used in a pretty wide array of businesses. And I'm curious what you have seen to be some of the most interesting or innovative or unexpected ways that it's been used and deployed.
[00:50:27] Unknown:
1 of the most interesting news, at least from my point of view, is the 1 that Gnuels is doing of Triton. So Gluells is a project under the Glue umbrella, and their their aim is to provide
[00:50:46] Unknown:
all those An H I s, hospital
[00:50:49] Unknown:
information system. Yes. An hospital,
[00:50:52] Unknown:
information system. And sorry. Just to jump in because it it was a little hard to hear. So what he's saying here is, Gnu Health. Gnu Health. Yes. Yeah. Gnu Health. GNU Health is
[00:51:03] Unknown:
a is an hospital information system which, stores medical records of people usually from, law development countries like, Congo, Jamaica, and so on. Because in countries like Europe or guy or I guess the United States, you have to, a lot of red tapes and laws to follow and it's really difficult. Is not does not its main point is to bring computer science and and informatics to to those countries and to help them to to have a a good traceability of people. So they don't really care about all all the problem that we care about in in our in our country, but in in Google Earth, they they do they care about stuff that are really vital. And so they they have a lot of, of modules for, obstetrics and, I don't know, anything that goes with the medicine and, it's it's really a a nice project. There's also the the the project of John, which is something that I didn't expect it. So Sure. I'd be happy to describe our implementation. So we are a law firm that services the aviation industry,
[00:52:23] Unknown:
and the aviation industry is very heavily regulated and record intensive. And so we have a web portal side that is built basically using Flask, actually using a slightly different project called NERID. And our clients use that to input all of their data through web forms, and it goes into our Triton database. And then we have also, in terms of our internal workflow, a large number of discrete sort of small tasks that we need to do for each of these clients. And so we have Triton handling our web front end and then also handling our flow of tasks and sort of assignments and delegations of tasks to people inside the company so that we can make sure that we've got a good audit trail and clarity that each and every item is getting done. That's how we use Triton. This is
[00:53:23] Unknown:
far away from all usual cases, which are more web shops and sales related or purchase related implementation.
[00:53:31] Unknown:
That's And, indeed, we we have we had also a project that was a little bit different than the usual. It's a it was for it's a project we developed for a company where the main goal was, to provide an application, on the, on the cell phone. Smartphones? Yeah. Where people could buy more stuff like, sand sandwich sandwiches from their, the local grocery. And they could order it when they were at work, in the morning and, schedule the time when they want the the sandwich. And so, the payment was collected by the application. And, behind, there was a Triton server receiving the orders and dispatch the orders to printers in the shop of different grocery everywhere in the city and and so on. And so they receive the the ticket with the number and the orders, and they prepare it for the time it was specified.
And so the the guy who ordered it with this application can go to the shop and take directly the back with shop the the the cart with the the the shopping item and, without having to pay because it was already paid by the electronically and so on. And so it was a way to to skip the lane in such a shop where everybody goes at the same time, get this food directly. And so the, the commission could organize the the work, prepare in advance the the orders, and and so on. So that was a nice project where Triton was involved to follow the the orders you received from the application, dispatch to the right shop, and, make a a small accounting about how much was sell and that's what. At the end, send the total money, order it for for to each, shop. That's, yeah, that was an astonishing way of using Triton.
[00:56:00] Unknown:
And then in terms of the future of the Triton project, I'm curious what you have in store in terms of new feature capabilities or future direction for the project. The Triton project is no real road map because it's built by the the community,
[00:56:16] Unknown:
for the community. And so each 1 come with his own needs and own targets and own goals and, try to, to push it in the the project. So this we cannot guide, which direction we go or which feature we want to implement for the next 3 d's and so on because it depend on what the community
[00:56:48] Unknown:
ideas that are lingering and that we would like to implement. So, for example, we we are thinking a lot about, creating creating, more specific applications. Right now, we have an application named Kronos, which is a browser plugin, which allows you to input your timesheets. That's also the scratch your own itch because we use it to to to invoice our customers at b to c k, and I guess other people in the Triton community use it because we know a lot of people that work the same way as we do. But those applications, they they they use specific, path in every modules.
So if you want a module, you can open a path, an entry point, yes, in in the in the, in the HTTP server, which you can put or pull data from. And thanks to this entry point, you can enter directly into Triton with, of course, your credentials and so on and have some specific actions. So for example, for the timesheets, you can fetch the timesheets of specific days, but you can also push a new a new line in your time sheet and or or you can edit a new line a line an existing line. And we would like to have more application like that, for example, to do the shipping in the warehouses.
[00:58:32] Unknown:
Yeah. It's dedicated application. So, in some way, it's a way to hide Triton behind a very, stellar user interface.
[00:58:46] Unknown:
I think that something big for the future of Triton is the LTS, the long term support, which was just added maybe about a year ago. And as we've talked about, Triton has been around for around 10 years and has had this philosophy of we are willing to break things to improve things. And so the as Cedric was saying, there's a new release every 6 months. Traditionally, those releases had only received a year of support, and so there was some aspect of conveyor belt of needing to upgrade to the new versions. But now we have gotten to where the core Triton functions, I think, are pretty stable. I mean so for example, Nicholas described earlier that it transitioned to the active record model a few years ago, and that that was quite a bit of API changes. But I don't there haven't been any changes like that in since then or in in quite a while, and I think that Triton is now stable enough that as you can hear from, what Cedric and Nicholas are describing as new additional features, I think, like support for browser plug ins, that's not going to be sort of breaking changes that would threaten existing, installs. And so I think that a big driver of more people starting to use Triton is knowing that they have LTS, that they have 5 years of support in the version that they install, and greater stability to the API. And the the fact that, the core devs have been willing to make such changes has gotten Triton to where it is now, which I think that there are very elegant idioms that it's using. It it it it's a very nice system to code in. And now that that's not changing so much, long term support is possible. And I like I said, I think that that's going to be a big driver of more and more people using Triton. Yep. Indeed.
[01:00:57] Unknown:
Another point that we are working is to include a a web shop directly. So for now, there there is many solution, but, external solution to plug a web shop to Triton. BduCK have developed it, some, but others also have developed it, web shop extension and so on. And for now, there is a work, going on to support, Vue storefront, which is a new webshop, front end that is
[01:01:39] Unknown:
Based Based on Fuse. Yes. Yes. So it's
[01:01:42] Unknown:
an SPA, single page application, that support also the progressive application.
[01:01:50] Unknown:
PWA, it's progressive
[01:01:53] Unknown:
web application. So it can work offline and so on. And, so there is a module in review for now to plug Triton and, view storefront. And this could be also, once it's, polished and, in credit, a big change for for for Triton because it will provide out of the box a webshop, to to small business, and that can be very helpful for many Economies. Companies. Yes. There's also the ergonomy that we would like to make be better, but it's difficult. Yes. We have to work that we try to to display the the right data at the right time to the user. So it's a little bit, mix of, having a dashboard, but tailor it for the type of user you are depending of your access and permissions and so on, but also to try to provide you the next task you should work on. So we have some blueprints going in in this direction.
So probably in the next years, we will have a better way
[01:03:07] Unknown:
of pushing the work. Alright. Well, for anybody who wants to follow along with the work that you're doing or get involved, I'll have you each add your preferred contact information to the show notes. And so with that, I'll move us into the pick. And this week, I'm going to choose audiobooks because I've been listening to them more with my kids as a way to keep them busy and as a way to keep us all entertained. So definitely recommend finding some good audiobooks whether through your local library or through a service such as Audible. And so with that, I'll pass it to you, Nicolas. Do you have any picks this week?
[01:03:38] Unknown:
Yes, indeed. As everybody, I tried to to have something to to think that is a bit joyful. So I started to play Civilization 6. There has been years since, I haven't been playing Civilization. In fact in fact, my first contribution to to open source was to FreeSieve, the the free software clone of Civilization civilization 2. And now I started to play again to civilization 6. So if you have some tags, you can start to play civilization 6 or read a book. I read an excellent book from from an author of China, U16. It's the 3 body problem. It's science fiction, but from the point of view of China, so it's a bit bit different than than usual. And I found that the the liberty of speech of the author was quite surprising to me because he he described, in the first chapters the cultural revolution of China, and, it was awful.
But I was surprised to read that in a Chinese book. So if you if you like science fiction but with a twist because it comes from another cultural background,
[01:04:58] Unknown:
I I I really recommend it. Alright. And how about you, Cedric? Do you have any pics this week?
[01:05:05] Unknown:
Indeed, I started to read the integral of Valerien et Laurelin. It's a French comic from 17th. Seventies. Yeah. It's it's a big influential, in science fiction culture. Indeed, it seems there there is, they influence it, the Star Wars movies and and many other stuff. So, yeah, it's, old comics, but, I enjoy reading
[01:05:38] Unknown:
those. And Jonathan, how about yourself? Well, my pick for this week, I think, has to be hand sanitizer as we are all hunkered down dealing with the coronavirus and waiting to see what's gonna happen in the next few weeks. But no. The, the thing I I'm I'll give a shout out to is it's not exactly a pick, but it is a new project or start up that I've been trying to get going for the last year, and I think that we're set to launch hopefully in the next 2 months. It is royal.com. Royal spelled r o I l as in roiling river, and it is a better way to interact with RSS feeds, a better way to enjoy content on the Internet.
So been working hard to get that going, and, hopefully, we're rounding the final turn and should have a public release in the next couple months.
[01:06:30] Unknown:
Alright. Well, thank you all very much for taking the time today to join me and share your work and experience with Triton. It's definitely an interesting project and 1 that, number of people obviously rely on. So I appreciate all of your time and effort on that front, and I hope you each enjoy the rest of your day. Yeah. Thank you. Thank you. Thank you, Tobias. Thank you. Thank you. Thank you for listening. Don't forget to check out our other show, the data engineering podcast at dataengineeringpodcast.com for the latest on modern data management.
And visit the site at python podcast dotcom to subscribe to the show, sign up for the mailing list, and read the show notes. And if you've learned something or tried out a project from the show, then tell us about it. Email host at podcastinit.com with your story. To help other people find the show, please leave a review on Itunes and tell your friends and coworkers.
Introduction and Guest Introductions
First Encounters with Python
Overview of Triton Project
Triton Foundation and Its Role
Target Audience and Use Cases for Triton
Typical Workflow and Customizations in Triton
Architecture and Implementation of Triton
Creating Extensions and Modules for Triton
Sustainability and Security of Triton
Interesting Use Cases and Deployments of Triton
Future Directions and Features for Triton
Closing Remarks and Picks