Choosing the Right Open Source Language for IBM i
All right, let’s go ahead and do this. Good morning, everyone, or good afternoon, or good evening. Welcome to webinar number two of our open source from the IBM i series. Today we focus on choosing the right open source languages as you open up the potential of this platform. My name is Mitch Hoffman, and I’ll be your moderator. Again, I’m one of the principals here at Eradani, and I’m so excited that so many of you are here. Feedback after the first webinar included, who is Eradani, and what do you guys do? We didn’t have enough of a commercial last time, so we’re going to try to stuff in a short commercial or two throughout the next hour. Speaking of which, today’s webinar is brought to you by Eradani, makers of Eradani Connect. Eradani Connect is a new, powerful, commercial software offering from our company that bridges modern code and tools to the IBM i. Businesses rely on it for website, mobile, IoT, and integration of their Node.js and C-sharp.net and Python code back to the IBM i, or from the IBM i back out to their modern languages, all without custom stored procedures or manual APIs being written. Think of Connect as a framework to open up your platform for the future. Eradani, we help you move on to an open source world. Okay, that’s the commercial. So let’s go on to our speakers. Today we have Dan Magid, known in the IBM i world for his professional achievements, such as presentations at hundreds of webinars, conference speaking globally, a regular published article, and his very popular Dan’s Tip of the Week, all related to IBM i and open source. Dan began his career at IBM working with System 34 a while ago, and eventually worked on, with his father, the Al of Al Don, to take the helm of that company before turning completely to the open source world and becoming CEO of Eradani. Aaron Magid, our second presenter, is our expert in open source technology and has been working with it for over a decade. In fact, he wrote his first open source project for IBM i at 14 years old. He is proud to be a fresh face of IBM i for 2020 and an IBM i champion. He is the third generation Magid carrying on the traditions of our great platform. Aaron is now Director of Open Source Development for IBM i at Eradani. All right, finally, a little housekeeping. Today’s webinar is being recorded and we will email a link to the webinar replay to everyone. Please share that email. Check your spam filters for it. Check your folders and wherever it might have gotten. On our last webinar, we did send out the links, and some people have said they didn’t get it. If you didn’t get it, write to me, write to any of us, and we’ll make sure that you get it. Secondly, please put all questions in the Q&A session. Try to avoid the chat window. That way afterwards, we have a record of all the good questions and we type them up and share them with everyone. The first questions were terrific. If you haven’t read them, go look at the links from the first webinar. All right, I think you’re all going to love this training today. Without further ado, I’ll kick things off by welcoming the CEO of Eradani, Dan Magid. Dan, over to you. Dan, we can’t hear you. How’s that? I bet that’s better. That’s better. All right.
So it looks like extending your RPG applications is one of the top answers. Extending RPG applications with customer and partners, building modern user interfaces, those seem to be the top answers. So we’re going to talk about – yeah, so that’s really where I like to start is what are people trying to do? What exactly is it that – what is the problem you’re trying to solve? And I always think that in any of our projects, we should be starting there. But why open-source? So why in solving these problems, why work with open-source? Well, first of all, because it’s very cost-effective. A lot of open-source is absolutely free. You can just download it and use it to solve the business problem you’re looking to resolve. It can be very, very fast to build applications in open-source, and the reason being is that in open-source, we are now assembling applications from components that have already been built by other people, so we can grab components and integrate them into our environment and build our applications by assembling components rather than writing everything from scratch. And there are literally millions of people out there testing these components and making sure they work and making sure that they are secure. There’s also sophisticated tooling available that IBM has ported to the IBM i for managing all of those open-source components. So as those open-source components get updated, you can always get the latest versions, the latest releases with the latest security patches and the latest functions and capabilities. The other thing is the open-source technologies are very, very popular. Again, millions of developers are working in these environments around the world. It makes it much, much easier to find skilled developers in those technologies. And you can choose between all the open-source technologies to decide which is the right one for the task that you have at hand, for the thing that you’re trying to do at this moment in time. And there’s easy integration with IBM i native applications and data. So you can feel free to adopt the open-source and know that you’ll be able to talk to your existing IBM i applications and data. So again, whenever I go into working on a problem like this, I always want to start with what is the problem I’m trying to solve and for whom? And a lot of what I’ve got here are things that were reflected in what people answered in the poll. So one of the things that people look at for adopting open-source is they’re concerned about what’s going to happen over the years as my RPG developers start to retire. So what’s going to happen as RPG developers start moving on, they’re leaving the companies and that pool of RPG developers shrink? Well, one of the things about adopting open-source is if you start extending your applications in open-source, you have this new pool of young developers who you can bring into your organization who can start building functions and enhancing your applications using open-source. So it’s a way of helping you with that staffing issue. A lot of our customers say they want to build modern UI, UXs for their customers. So they want to be able to build a user experience that matches how people are used to working today in today’s web environment. So how they work on their mobile phones or how they work when they’re shopping online. So they want to be able to create that same kind of experience for their internal applications or for their customer-facing applications that customers are used to using. And one of the big moves we see right now is people want to create self-service dashboards for their customers where customers can go in and see what’s the extent of my relationship with this company? How much do we order from them? What have we ordered recently? What does our business with them look like? So you can go in and actually see information about your relationship. So you can provide a customer with the dashboard to be able to look at that information. And you can also communicate out with them when you have special offers available or things you want them to know about.
So let me go back over now to the PowerPoint. And so there are lots of different repositories that you can use. So here you can see you’ve got GitHub is one, but if you’re looking particularly for Python components, you can go to PyPy, the NPM stuff, which is for Node, you can go to npmjs.com. And IBM actually has a bunch of repositories too, where you can get components that are built specifically for the IBM i. In fact, in GitHub, they’ve got applications where you can see samples of IBM i applications that are in the IBM i repository. Okay, so that’s a little bit of the high level of actually working with the repositories to do research into what components make sense. So how popular are they for the problem you’re trying to solve? And then how active is the development? How many components are available? That’s all stuff that you can do really quickly by just doing some research in the repositories. So now I’m going to turn things over to Aaron, and Aaron is going to drill down into some of the details of the languages and where their strengths and weaknesses lie. So Aaron. All right. Thank you, Dan, for that great introduction. So as Dan mentioned, what we’re going to do is we’re going to hop in and we’re actually going to talk about some of the most popular languages that we can use for these kinds of applications, and go through some of their strengths and weaknesses to give you some information about how to choose between them for a particular project. So in this particular webinar, we’re going to be looking at five technologies. We’re looking at Node.js, we’re looking at Python, we’re looking at.NET, Java, and PHP. Those are going to be the top ones we’re looking at today, but again, there are so many languages, so many technologies that are available for the IBM i that really there are a lot of open options. These are the ones that are, in our opinion, the most stable and the most promising and popular for IBM i applications. So before I get started, I just want to make a quick note that the slides that we have for this are largely meant to be a reference for everybody after the webinar. We’re going to send these out and there’s a lot of information included in these slides to help you with the decision of what technologies to use, because that question is actually a fairly complex question from an architectural standpoint that relies on a lot of information about your particular needs for your project. So we’re going to go through and we’re going to talk about the strengths and weaknesses, but know that there is also a lot more information included in these slides that you are welcome to use as a reference as you build your own actual applications. So one of the first things that I want to get out of the way here is most of the time, if you look up what language should I use, if you Google what language should I use or you go to a lot of presentations about what language should I use, what people are looking for and what the articles are all structured around, it’s looking for this one magical ultimate language that just can do everything and is perfect for every use case. And the first thing that I want to make completely clear to everyone is that that does not exist. And anybody who says it does is probably trying to sell you something. I mean, it just – there is no one language that can do everything perfectly every time. Each language was built for a particular use case and they were built because of particular problems in the existing tools at the times they were created. And so what you really need to do is use the right tools for the job. And I cannot say this enough. This is – if you take nothing else from this webinar, this is the most important piece of information. Use the right tool for the job rather than trying to hack a tool you have to do a job it wasn’t designed to do. So with that, we’re going to go in and we’re going to talk about some of those strengths and weaknesses. And the way we’re going to do that is we’re going to identify a couple of key metrics. We’re going to measure the languages against those metrics. We’re going to go in and we’re going to talk about – a little bit about the languages and their structure from a community perspective, from a syntax perspective, from a technical perspective. We’re going to go over their best and worst use cases and then we’re going to go over some sample applications and talk about, as an exercise, how you would actually pick the technologies for a real application.
So looking at key metrics – and again, in these slides there are a lot of key metrics. There’s a lot of data. So I’m going to just point out a couple of them. The first one that I want to point out, and it’s really the most important one, and we’re going to go into a lot of data about the languages, but the most important thing, really, is what skills do you have? Again, every one of the languages that we’re going to look at are technically capable of serving every use case. And while each language should be used for the use case it was designed for, you really should push to do that. A really important point here is to look at what skills do you have on your team, what developers are available in your community, and really just what technologies can you actually work with. So looking at availability of skills and the community size, another key metric that we’re going to look at is what are the constraints of our application? What are the kinds of resources we’re going to need? Is this a web API that’s a high I.O. heavy application? Is this a machine learning application that’s very CPU heavy? Is this business logic? What are we actually doing here? Is it a graphically user interface versus an API versus an IOT application? So those are some of our initial key metrics about the project. And looking at the tools, the most important metrics that we want to look at is, first of all, first and foremost, what was the language built to do? Because that’s going to color what it’s really good at and what it’s designed to its core to be good at. It’s not looking at features that are built on top of a language. We’re looking at things that go right down into the heart of the language’s philosophy. So we’re looking at its primary use case. We’re looking at the open source package availability. That’s another huge one in the open source community. Obviously, if you can download trustworthy, reliable, secure code rather than having to write everything from scratch, that’s always a plus. We’re going to look at stability versus innovation. That’s very important. Some languages are more stable. Some languages more try to stay on the cutting edge, and that makes them a little more wild. And then just finally, we’re looking at scalability, platform compatibility, and a couple other things. And again, these are the metrics we’re looking at in the slides, and we’re going to run through the languages. So first language we’re going to look at, which is a very popular and widely known language and one of my favorites is Python. So Python is a wonderful language that’s designed specifically to be readable, lightweight, and easy to learn. So this is a really important thing to understand is that Python was built to be easy to pick up. And so one of the major use cases that we look at is if your team is getting started with these applications, Python is probably the best language that you’re going to find that’s just easiest to get started with. And on top of that, it’s designed to be very, very lightweight. So if you’re looking at automation projects, if you’re looking at systems that are going to be running commands, they start up, they run their job, they shut down, Python is going to be very efficient for those kinds of projects. Taking a look at the community, Python has a massive developer community. It is one of the most popular languages in the world. Depending on the metric, some people call it the most popular language in the world. And I want to draw some attention to this. We’re looking at 8.2 million developers that use Python around the world. So when we’re talking about staffing, when we’re talking about the availability of open-source components, the availability of resources for training, you’re going to find a lot when you’re looking in the Python community. And that’s directly reflected with the stats from the Python Package Index, where you look at 231,000 open-source packages available just on PyPy for your Python projects. And one of the important things to point out here is the Python packages are largely focused around AI and machine learning and automation. So again, lightweight, easy-to-learn, automation-based projects, very, very good. So taking a quick, a little quick dive into the technical, this information here, for every language, we’ve got information on the syntax community and technical resources. Again, I’m not going to go into a lot of detail about this particular, about the technicalities here, but remember that if you’re working on an AI application, if you’re working on automation scripts, if you’re working on embedded systems too, Python is a great choice. And that’s actually, we actually use Python for a lot of our automation, a lot of our automation scripts. And we do that because we can write the scripts very, very quickly. There are a lot of packages that help us do it. And Python also is just, from a technical perspective, it’s built for those kinds of things. I actually, just to point out one technical aspect, because it differs from our next language, Python has a relatively low startup time. And when you’re running an application, when you’re running something like an automation script, it needs to start quickly and then do its job and then shut down and clean itself up. And Python does that very well. So again, AI machine learning, automation, lightweight scripts, embedded systems. And these are the focuses that we’re talking about. Again, you can do anything in Python, but these are the focuses that we’re looking at.