What's on the Kivy Roadmap? #10
Replies: 9 comments 10 replies
-
Psssst! Comrades! Do you hear that silence? Do you know what that sounds like? Opportunity! The Core Developer(s) are too busy dealing with an upcoming release to be focussed on the big picture, so now is the time to strike! What do you WANT the Kivy Roadmap to look like? Hint: It has to be bigger than your single pet idea, and it isn't enough to make the product more versatile for expert users . Think about ideas that will relieve the most pain from current users, open it up to the most new users, and foresees where the pain points are in the future? It should look forward at least a couple of years, and consider more than just the Kivy framework. |
Beta Was this translation helpful? Give feedback.
-
My two cents: I think the next 12 months should be focussed on dot releases, addressing existing technical debt. Let's reduce the number of outstanding defects (especially the "missing stairs" that the experts no longer notice), refactor (too many God objects), and add unit tests (Coverage figures are woeful), and get it ready for some bigger changes. One broad audience that I think is being under-served is users of languages which aren't based on the Latin alphabet. A smaller one is Windows developers of mobile apps. I think the documentation needs work on: Too many missing minor details. The tutorials miss too many core concepts, and should be extended. There should be more support for people who want to implement extensions: Garden widgets, Recipes for p4a and Kivy for iOS, bootstraps for p4a. Much of support seems to be dealing with cryptic error messages - we need a better way of mapping from those to the causes - and uninstalled dependencies. None of this Big Picture enough. There are no new technologies. (Huh? I haven't even mentioned AI?!) I haven't considered what the competitors are doing. There might need to be some more pizzazz to retain developer interest. |
Beta Was this translation helpful? Give feedback.
-
To be honest, I want
|
Beta Was this translation helpful? Give feedback.
-
I will voluntarily keep myself silent on this topic until Kivy After Kivy I've already seen a lot of interesting things, so keep thinking 💭
Just consider, during this discussion, that we likely need to break the API to address some long-standing issues. |
Beta Was this translation helpful? Give feedback.
-
More proposals to think about:
|
Beta Was this translation helpful? Give feedback.
-
Why do we even need a roadmap anyway? I think it serves three key roles:
Most issues don't need to be considered or mentioned by the roadmap. If someone cares enough to fix them before a release's code freeze, they will be merged into the next minor/major release. If no-one cares enough to fix them, they will be left behind. Some issues may be severe enough that they deserve a mention: e.g. "We won't be releasing until this is fixed." and/or "Once this is fixed, it will trigger a release, to get it out as soon as possible." However, this is rare. Which leaves us with the issues that need coordinating. I just did a quick skim through Kivy, Buildozer, python-for-android and Kivy for iOS, looking for the issues that may meet those criteria. This is just one quick pass, I no doubt missed some items, I am no doubt biased towards the issues I care about, and it is probably wrong for many reasons, but I wanted to get the discussion started. I am NOT arguing that any of these are worthy, just that I suspect that, if we were to go ahead with them, we would need co-ordination.
|
Beta Was this translation helpful? Give feedback.
-
Let me dream for a second about a potential strand on the roadmap. Step 1: Imagine if the python-for-android project declared an officially supported Android emulator: AnBox, Genymotion, Android x86, NoxPlayer, LambdaTest, whatever. The tests could be slowly updated - it wouldn't be enough for a feature to build. The resulting binary would need to run on emulated Android and work as expected. Note: Tests would be slow because creating the environment and launching another OS would be slow. LambdaTest might be faster but would be less flexible in later steps. Note: There may turn out to be some weird emulation issues, where something works on real Android devices but not the emulator. We would be need to be committed to producing suitable workarounds. Advantages: Would increase python-for-android code quality - it would find bugs in existing code. Step 2: When enough tests (and work arounds) were in place, users could test their own apps on the emulator, improving the development time (and letting them try different Android versions without buying multiple hardware devices). Advantages: The code quality of users' apps would improve. Step 3: From then on, it would not be enough to create a recipe without also creating tests that the package would actually run on Android. Each recipe would need to provide a Advantages: Code quality of recipes would improve. Step 4: With smoke-tests in place, it would be easier to go through the hardcoded version numbers for recipe libraries, update them to the latest and ensure they still pass their smoke test. Advantages: Recipes wouldn't hold back users to use old libraries. Step 5: The recipe system could be refactored - recipes wouldn't need to be tied to one particular version. They could have a separate file: Advantages: Recipes wouldn't force users to arbitrarily upgrade to new libraries (at the risk of dependency hell) Step 6: Automated test systems could run recipes against every single version on PyPI, and check whether the recipe passed the smoke-test. It could generate new Advantages: Recipes that didn't need work would automatically be marked up-to-date when new library versions were released. Recipes that did need work would automatically be marked as failing when new library versions were released. Step 7: Automated doc generation systems could examine all the Similarly, reports of recipes that had stopped working and need attention. Advantages: Users could start their projects confident that their favourite libraries were supported. python-for-android developers would know where to focus their attention. |
Beta Was this translation helpful? Give feedback.
-
I plan to share a document shortly that summarises the survey suggestions. I have tried to keep my personal opinions out of it. Here are the personal opinions I have been trying not to let interfere: One-Stop Solution? Customisable infrastructure? Somewhere in between?I think a lot of the suggestions we got can be classed as either:
To me, this suggests "I should be able to find everything I need in the Kivy repository. It should be a one-stop shop." I don't think that should be the approach. Kivy should be extensible, and we should encourage extensions. I think there is room to make extensions more discoverable, although clearly there have been attempts. We could go the other direction, and say "Kivy is only the absolute fundamentals, and we should push anything we can out of the framework, to keep the code-based more agile and to avoid technical debt. You can't actually do anything with Kivy alone." Somewhere in between is probably the sweet spot. You can find just enough widgets, behaviours, recipes, and the like to build say 25% of the most basic apps, but you will need to look elsewhere, or extend it yourself, to go further. Targeting our documentationThere were many requests to improve documentation. It is worth noting that documentation is one of those areas (like database reports for managers!) where there is always demand for more. We need to focus the efforts on where we can do the most good for with the resources we have. A common theme was "Kivy is too hard for beginners." This is tricky. In order to use Kivy, you need to be on top of UI design, Python, Python packaging, concurrency, cross-platform development, the quirks of mobile platforms (where applicable). In order to contribute to Kivy, you need to be on top of Git branches, Pytesting, GitHub actions, etc. To what degree is it the job of Kivy's documentation to get new developers to understand all these other technologies? To what degree can we just say "You need to be this tall to ride. We expect you to understand these fundamentals before you read these documents." I want to be careful we don't spend our limited resources on explaining how Python works. [I think there is overlap here between the one-stop shop for widgets above and the one-stop shop for all the information you need to get a Kivy app running.] WYSIWYG EditorThere were many requests for an WYSIWYG IDE. @m1sl6 suggested that should be a separate project, and I concur. I have developed IDEs before, and my experience suggests that what people are imagining an IDE might do, and the reality of what they can do, is going to have quite a chasm. This is not a statement that it shouldn't go ahead, just a warning that it isn't going to be smooth. The biggest issue that I recommend be tackled early is: Where is the primary copy of the UI design being kept? If you are thinking that the IDE will be able to "round-trip" an existing Kivy app (with UI design stored in KV files (with embedded Python code), Python instances, third-party widgets, custom widgets) into a UI where you can edit it and regenerate the original code with modifications, you're dreaming. If you are aiming for an IDE with a short fixed list of known widgets, layouts and behaviours, that can be used to generate a KV file and some basic infrastructure, but can't handle the Python file then being modified, I think it is feasible. Existing FeaturesThere were a number of features requested that already existed. This might just be a naive user still on their Kivy learning journey. This might be that Kivy has a discoverability issue - features can't be found by motivated users trying to learn about them. This might be a user who understands exactly what is available, and is unhappy with it and wants more. This might be a user who wants something else, but I have miscategorised their request. My point is, when we see such a request, we shouldn't simply discard it as ignorant, but ask what we can do to make sure the existing feature meets peoples needs and they can learn about it. |
Beta Was this translation helpful? Give feedback.
-
Attached is a summary of the suggestions from the recent survey - I expect them to be very helpful in determining the roadmap going forward. |
Beta Was this translation helpful? Give feedback.
-
Hi,
I think it's better if there's a road map for
kivy
.Beta Was this translation helpful? Give feedback.
All reactions