|
74 | 74 |
|
75 | 75 | 00:03:25 I just updated Flutter on my Mac mini.
|
76 | 76 |
|
77 |
| -00:03:29 I had out of date CocoaPods and Ruby and there's a whole tool chain that people need to know about. |
| 77 | +00:03:29 I had out of date Cocoa Pods and Ruby and there's a whole tool chain that people need to know about. |
78 | 78 |
|
79 | 79 | 00:03:35 Maybe we can talk a little bit about the tool chain, but yeah, you're constantly chasing versions and releases and updates.
|
80 | 80 |
|
|
84 | 84 |
|
85 | 85 | 00:03:46 There's a lot there.
|
86 | 86 |
|
87 |
| -00:03:46 We recently started using Flutter version manager FBM and it's pretty good. |
| 87 | +00:03:46 We recently started using Flutter version manager FVM and it's pretty good. |
88 | 88 |
|
89 | 89 | 00:03:52 Yeah, because the updating is so fast, you know, it's really hard to catch up.
|
90 | 90 |
|
|
138 | 138 |
|
139 | 139 | 00:06:11 My name is Peter Fitzner.
|
140 | 140 |
|
141 |
| -00:06:13 I'm the founder and developer of a flat framework, like Flutter for Python, for Flutter, yeah, it's been two and a half years since we released the first version. It's not like the first release of web and since that time we gained really great traction. To my mind like we got 12,000 stars on github, 72 contributors, 5k members on discord channel and I found the statistics for PyPy. It's like almost 3 million downloads from PyPy of web package. So It's a great community, great people, a lot of feedback, a lot of issues. |
| 141 | +00:06:13 I'm the founder and developer of a flat framework, like Flutter for Python, for Flutter, yeah, it's been two and a half years since we released the first version. It's not like the first release of web and since that time we gained really great traction. To my mind like we got 12,000 stars on Github, 72 contributors, 5k members on discord channel and I found the statistics for PyPI. It's like almost 3 million downloads from PyPI of web package. So It's a great community, great people, a lot of feedback, a lot of issues. |
142 | 142 |
|
143 | 143 | 00:07:03 So it's pretty nice.
|
144 | 144 |
|
|
172 | 172 |
|
173 | 173 | 00:08:15 I think Also, the interesting part about Flutter is that it has a painted UI.
|
174 | 174 |
|
175 |
| -00:08:22 So it started from the Skia engine and now they have their own engine in Palo Alto. |
| 175 | +00:08:22 So it started from the Skai engine and now they have their own engine in Palo Alto. |
176 | 176 |
|
177 | 177 | 00:08:28 So the UI is basically painted on the canvas.
|
178 | 178 |
|
|
392 | 392 |
|
393 | 393 | 00:16:46 We started from a simple design.
|
394 | 394 |
|
395 |
| -00:16:49 it was pre-built executable for every platform, mostly like for desktop platform, which is able to display all controls we have. And that executable was an ease part of a wheel, flat wheel you install. So if you do heap install flat, you install this executable with the Python API itself. But then we started getting more and more requests like asking Like, how would I put all this beautiful stuff to a mobile device? |
| 395 | +00:16:49 it was pre-built executable for every platform, mostly like for desktop platform, which is able to display all controls we have. And that executable was an ease part of a wheel, flet wheel you install. So if you do heap install flet, you install this executable with the Python API itself. But then we started getting more and more requests like asking Like, how would I put all this beautiful stuff to a mobile device? |
396 | 396 |
|
397 | 397 | 00:17:23 Or how do I do a standalone app?
|
398 | 398 |
|
|
430 | 430 |
|
431 | 431 | 00:20:34 And also the biggest issue with Kairi's approach was you have to build all the Python runtime and all the modules like packages by yourself all the time.
|
432 | 432 |
|
433 |
| -00:20:48 If you're a user, it's kind of pain. So you should enjoy SDK installed and all environment wearables in place you know like and I mean it could be a real struggle to build and it takes time sometimes like if you add NumPy pandas to your app as a dependencies it could take like like half an hour to build all the packages and fingers crossed you know like whether it finishes okay you know or you get some weird pre-prepare yeah it wasn't nice it wasn't nice. I mean, it worked, this approach worked for simple things, you know, with the way your app requires fewer Python packages. But if it's not something trivial, it's either no recipe or outdated recipe, or you have to build your own recipe, etc, etc. |
| 433 | +00:20:48 If you're a user, it's kind of pain. So you should enjoy SDK installed and all environment wearables in place you know like and I mean it could be a real struggle to build and it takes time sometimes like if you add NumPy pandas to your app as a dependencies it could take like half an hour to build all the packages and fingers crossed you know like whether it finishes okay you know or you get some weird pre-prepare yeah it wasn't nice it wasn't nice. I mean, it worked, this approach worked for simple things, you know, with the way your app requires fewer Python packages. But if it's not something trivial, it's either no recipe or outdated recipe, or you have to build your own recipe, etc, etc. |
434 | 434 |
|
435 | 435 | 00:21:44 And a recipe is basically saying how to build some particular library or Python itself for Android or for iOS or something, is that right?
|
436 | 436 |
|
|
452 | 452 |
|
453 | 453 | 00:22:08 Yeah.
|
454 | 454 |
|
455 |
| -00:22:08 It's it's C, C++. |
| 455 | +00:22:08 It's C, C++. |
456 | 456 |
|
457 | 457 | 00:22:11 Yeah.
|
458 | 458 |
|
|
492 | 492 |
|
493 | 493 | 00:23:48 For mobile, now we use a different approach and I can talk about this.
|
494 | 494 |
|
495 |
| -00:23:53 For web we use Pylodyte. |
| 495 | +00:23:53 For web we use Pyodide. |
496 | 496 |
|
497 | 497 | 00:23:55 Yeah.
|
498 | 498 |
|
|
530 | 530 |
|
531 | 531 | 00:25:33 Yeah, you just put the WebAssembly files there and it just picks it up and goes, right?
|
532 | 532 |
|
533 |
| -00:25:36 It's Flutter itself and Python, PyDyn, which is WebAssembly, which is Python and WebAssembly. |
| 533 | +00:25:36 It's Flutter itself and Python, Pyodide, which is WebAssembly, which is Python and WebAssembly. |
534 | 534 |
|
535 | 535 | 00:25:45 So we don't compile Flutter part into WebAssembly yet because we have a lot of dependencies and not all of them support Wasm.
|
536 | 536 |
|
|
580 | 580 |
|
581 | 581 | 00:27:40 It's really great.
|
582 | 582 |
|
583 |
| -00:27:42 I mean, like the way producing binary libraries, you know, like for, and packaging them, it's really good because we can use dynamic libraries versus static libraries entirely. Like entirely everything, like all these third-party modules you can file on your machine every time they produce static libraries. Basically like.a files for iOS. And finally, and they like the entire code base is like single executable at the end, you know, like everything like NumPy, like all this stuff is a single file. |
| 583 | +00:27:42 I mean, like the way producing binary libraries, you know, like for, and packaging them, it's really good because we can use dynamic libraries versus static libraries entirely. Like entirely everything, like all these third-party modules you can file on your machine every time they produce static libraries. Basically like a files for iOS. And finally, and they like the entire code base is like single executable at the end, you know, like everything like NumPy, like all this stuff is a single file. |
584 | 584 |
|
585 | 585 | 00:28:20 I mean, you cannot reuse some of those libraries, you know, like when you package them into iOS app, I really love the approach and I understood, you know, that it's probably the way going forward, you know, and you see it's kind of like it's getting like a standard now and it allows this approach allows you to have binary wheels that are prebuilt and put somewhere on not on PyPy.org yet.
|
586 | 586 |
|
|
596 | 596 |
|
597 | 597 | 00:29:30 Excellent.
|
598 | 598 |
|
599 |
| -00:29:31 But NumPy folks, for example, as you said, they could use their expertise to get NumPy, this NumPy C code and Python code to build for WebAssembly and just put that in as automation and GitHub and everyone else in the world doesn't have to solve it over and over. |
| 599 | +00:29:31 But NumPy folks, for example, as you said, they could use their expertise to get NumPy, this NumPy C code and Python code to build for Web Assembly and just put that in as automation and GitHub and everyone else in the world doesn't have to solve it over and over. |
600 | 600 |
|
601 | 601 | 00:29:47 Right?
|
602 | 602 |
|
|
620 | 620 |
|
621 | 621 | 00:30:45 They're pretty powerful, you know?
|
622 | 622 |
|
623 |
| -00:30:46 And I remember there were a lot of like those times, like 2012, 2010, when Kylie and VWare started, there were a lot of issues trying to squeeze this desktop C code into a mobile processor. |
| 623 | +00:30:46 And I remember there were a lot of like those times, like 2012, 2010, when Kylie and VMware started, there were a lot of issues trying to squeeze this desktop C code into a mobile processor. |
624 | 624 |
|
625 | 625 | 00:31:04 Now it's much easier. Most of those packages could be compiled as is without any tweaks, without any pictures, you know, so it's pretty, it's pretty nice.
|
626 | 626 |
|
|
686 | 686 |
|
687 | 687 | 00:33:33 So what's the process?
|
688 | 688 |
|
689 |
| -00:33:35 This is one of those rough questions, you know, it's, and you should have a list of rough questions. |
| 689 | +00:33:35 This is one of those ruff questions, you know, it's, and you should have a list of ruff questions. |
690 | 690 |
|
691 | 691 | 00:33:41 You're ready to answer.
|
692 | 692 |
|
|
770 | 770 |
|
771 | 771 | 00:36:52 There is, by those scripts, which are part of Python 3.13.
|
772 | 772 |
|
773 |
| -00:36:58 So like, theoretically, if you go there to Python repository and look into those, folders you will see instructions you can you can follow those instructions and build runtime like build CPython for both iOS and Android but yes this is it's not blossom it's CPython compiled into native iOS or Android code like platform for platform not like code assemble and binary packages yes you have to repackage, you have to build binary packages targeting those platforms as well. And for that purposes we use MobileForge project by DeWare. |
| 773 | +00:36:58 So like, theoretically, if you go there to Python repository and look into those, folders you will see instructions you can you can follow those instructions and build runtime like build CPython for both iOS and Android but yes this is it's not blossom it's CPython compiled into native iOS or Android code like platform for platform not like code assemble and binary packages yes you have to repackage, you have to build binary packages targeting those platforms as well. And for that purposes we use Mobile Forge project by DeWire. |
774 | 774 |
|
775 | 775 | 00:37:41 It's pretty nice, it's an awesome project, it's a brainchild of Malcolm and Russell.
|
776 | 776 |
|
777 |
| -00:37:48 And yeah, in its turn it uses cross-env package, which is basically the way to simulate, like it allows you to create a virtual environment and Python thinks that it's being run on a mobile device, you know. So it's like basically MobileForge is like you do people install something and it feels like for Python it feels like it's being run this command on a mobile device and you it uses like if it's binary package and there is setup.py or pyproject.toml It uses mobile compilers, cross compilers to build.so file and produce a build. |
| 777 | +00:37:48 And yeah, in its turn it uses cross-env package, which is basically the way to simulate, like it allows you to create a virtual environment and Python thinks that it's being run on a mobile device, you know. So it's like basically Mobile Forge is like you do people install something and it feels like for Python it feels like it's being run this command on a mobile device and you it uses like if it's binary package and there is setup.py or pyproject.toml It uses mobile compilers, cross compilers to build.so file and produce a build. |
778 | 778 |
|
779 | 779 | 00:38:33 So if a pip install action requires a local build of something, it will use the mobile compilers with the target platform being like iPhone or whatever.
|
780 | 780 |
|
|
868 | 868 |
|
869 | 869 | 00:43:54 For macOS, it's a bundle.
|
870 | 870 |
|
871 |
| -00:43:56 Is that a.app bundle? |
| 871 | +00:43:56 Is that app bundle? |
872 | 872 |
|
873 | 873 | 00:43:57 Yeah.
|
874 | 874 |
|
|
924 | 924 |
|
925 | 925 | 00:46:06 So yeah, definitely. It's our next step. Yeah. We, as you see, we're getting closer and closer to building real apps and we're getting more and more developers building real apps and they want to publish them. It's not just experimental, you know, anymore, like they want to publish them.
|
926 | 926 |
|
927 |
| -00:46:26 And we are working on that right now, like publishing. And it's actually, it's our number number one priority for the next year. |
| 927 | +00:46:26 And we are working on that right now, like publishing. And it's actually, it's our number one priority for the next year. |
928 | 928 |
|
929 | 929 | 00:46:35 I'll tell you, if you had that, that dialed, I mean, that means that that opens up desktop apps completely.
|
930 | 930 |
|
|
1168 | 1168 |
|
1169 | 1169 | 00:55:01 So maybe tell us what's in the future.
|
1170 | 1170 |
|
1171 |
| -00:55:03 What's what's in the near term that people can count on and then we'll wrap up. |
| 1171 | +00:55:03 What's in the near term that people can count on and then we'll wrap up. |
1172 | 1172 |
|
1173 | 1173 | 00:55:06 Yeah, maybe this roadmap is already outdated, but yeah, first of all, we want to have this 1.0 because it's maybe it's a psychological thing, you know, it's like people, developers feel stability and all that.
|
1174 | 1174 |
|
1175 |
| -00:55:23 When there is 1.0, it says that the framework is ready for for SilverSaps. |
| 1175 | +00:55:23 When there is 1.0, it says that the framework is ready for Silver Saps. |
1176 | 1176 |
|
1177 | 1177 | 00:55:29 It's a commitment to sustainability.
|
1178 | 1178 |
|
|
1202 | 1202 |
|
1203 | 1203 | 00:57:07 And so now I can't, you know, like that, what you're saying is there's a lot of stuff that you could help out with and make that smoother, but it's challenging.
|
1204 | 1204 |
|
1205 |
| -00:57:14 Yeah. And still, it's still, you need Android Studio or Xcode or Visual Studio. |
| 1205 | +00:57:14 Yeah. And still, it's still, you need Android Studio or XCode or Visual Studio. |
1206 | 1206 |
|
1207 | 1207 | 00:57:21 Yeah. You can spend a lot of time configuring those things.
|
1208 | 1208 |
|
1209 |
| -00:57:24 You know what, maybe next year we're going to, we're going to work, start working on on the service, you know, like I call it packaging and publishing service. |
| 1209 | +00:57:24 You know what, maybe next year we're going to, we're going to work, start working on the service, you know, like I call it packaging and publishing service. |
1210 | 1210 |
|
1211 | 1211 | 00:57:34 So you could somehow link a GitHub branch, like a production branch or something.
|
1212 | 1212 |
|
|
1304 | 1304 |
|
1305 | 1305 | 00:59:33 We should be right at the top.
|
1306 | 1306 |
|
1307 |
| -00:59:34 You can also find the iTunes feed at /itunes, the Google Play feed at /play, and the Direct RSS feed at /rss on talkpython.fm. |
| 1307 | +00:59:34 You can also find the iTunes feed at /iTunes, the Google Play feed at /play, and the Direct RSS feed at /rss on talkpython.fm. |
1308 | 1308 |
|
1309 | 1309 | 00:59:43 We're live streaming most of our recordings these days.
|
1310 | 1310 |
|
|
1317 | 1317 | 00:59:57 I really appreciate it.
|
1318 | 1318 |
|
1319 | 1319 | 00:59:59 Now get out there and write some Python code.
|
1320 |
| - |
0 commit comments