-
Notifications
You must be signed in to change notification settings - Fork 9
Split into separate packages #64
Comments
I have been thinking more about our decision to break this package up, and, for my sake, we need to rehash the reasons for it. First I will go over my understanding of the reasons for the splitting up, and then I will outline my current thoughts. Reasons and ChallengesOriginal Reasons for Splitting Up
Difficulties encountereda) Delays in registering on METADATA Potential future problemsc) It will be more confusing to users and more difficult to find tools if there are many packages My ThoughtsI think reason (1) can be addressed by better documentation using Documenter.jl and some cleanup of the code. (2) is actually not that big of a problem in my opinion - the only important dependencies are ProgressMeter and DataFrames, and these do not seem too problematic. If I had foreseen (a) and (b), I definitely would have recommended not to split up. I think we would have been done with the whole process a week ago; At present, we are less than half way through (we have not started on documentation). Today I have been considering the idea that, given (b) and (c), it would actually be better to reverse course and go back to a single POMDPToolbox package with good documentation. I think a single big package is actually easier to maintain with a high level of quality in this case. What are the thoughts of everyone else (especially @MaximeBouton since you will play the biggest role maintaining it)? If there are better reasons for splitting up, can we outline them here? Thanks for your patience with me. |
Reasons to split up
We just need more documentation and examples. Having obviously named packages for obvious things is good. |
Ok, thanks Jayesh. Where should this documentation reside? In each package? Then it will be harder to find things |
|
Regarding the difficulties encountered: Documentation:
|
@rejuvyesh I don't think VisualRegressionTests does what you're describing. It just has functions for testing plotting packages. The actual tests are still in Plots.jl. Can you outline the reasons (or point to someone else's writing) that kitchen sink packages are harder to maintain? I really don't know what the right decision is now. |
If the julia leadership really does think smaller packages are better, why do people seem to be pushing back against it (e.g. https://discourse.julialang.org/t/registering-a-new-package-in-general/13900) |
No one seems to be pushing against it. Someone is stating their personal opinion also basing on the fact that we used to use Submodules which we didn't because hardly anyone seems to use submodules in their projects. I'll put up a longer explanation for other things soon. Don't despair 😄 |
So the main question is, why modularity? As a user, I understand the gripe. I don't like writing Maybe starting off things are all good. It's a small function that you added that lets you do a thing. Later on you have an idea to tweak, may be add a feature here or there. However, there's a flip side to it. Packages need to be maintained. Breaking the codebase into modules therefore helps. It forces us to think about how these different modules are going to interact. The tests for individual components should not depend on other packages. It's our fault that they do right now, partly because everything was in the toolbox. We want the APIs to be flexible enough that if someone wants to swap out our simulators for their own, things should still work. The only reason we are trying different packages is because Julia projects don't seem to prefer submodules which could have been okay too. |
This package contains a lot of useful tools but they are very different and poorly documented which makes it hard to maintain.
It would be good to split the POMDPToolbox module into several smaller modules:
Policies
: would contain useful policy types such as alpha-vector policy, epsilon-greedy ...BeliefUpdater
: would contain useful belief updaters and belief types such as discrete belief, previous observation ...Simulators
: simulation helpers such as history recorder and rolloutThe existing POMDPToolbox would contain the remaining functions that cannot be obviously separated into their own module.
As a first step for transitioning into the new code structure we could add deprecation warnings on the existing functions exported by POMDPToolbox.
#63
The text was updated successfully, but these errors were encountered: