Replies: 4 comments 12 replies
-
Thanks, @alexdewar. It's important that as a group we all feel able to challenge big picture stuff - and it is hugely important that conversations like this happen in a collaborative and positive manner. So, no, I don't think you're being too negative and equally I don't think any of us would take this personally! Thoughts on the
|
Beta Was this translation helpful? Give feedback.
-
I'm pretty happy with a feature freeze on the I don't have all that much together in terms of the model yet, more just a sketch of which pools the soil model should probably include. Transfer between these pools will happen through a system of differential equations, but I'm far from sure which equations to use. This probably will remain the case throughout the development of the model, as there's not much agreement in the literature in terms of how transfer processes should be represented, so we might want to try out different sets to see what works best for our purposes. With that in mind I was thinking of adding some basic equations in to describe some soil processes, and then trying to develop a method to switch between different sets of process representations in a sensible manner. If that fits with the idea of a feature freeze on |
Beta Was this translation helpful? Give feedback.
-
@jacobcook1995 Yes, that sounds like the kind of thing I had in mind: I'd love to see some scientific code in the repo, even if it's only a rough sketch at this stage. And yes, I think documentation updates are fine (as are small bug fixes to core code), because other people don't have to build their work on top of the documentation in the same way they do with the code. The details are obvs up to you guys, but I think that decisions like this should be made democratically. And if you go ask the team and people say, "What's happening with the core code again? I lost track ages ago." then that's a sign that your current process isn't working. And the process is always more important than the code. You can always fix up code, but if members of your team don't feel comfortable contributing to the repo, then that's much harder to fix and will lead to crummy code in the long run. That's why I think it would be helpful to try to get everyone doing something or other in the main repo as a matter of urgency. Every month that people aren't working on anything in the repo because "we're still waiting until Feature X is done" is a month of learning that they're missing out on. It really doesn't have to be anything perfect. No one out there is looking into your repo and judging you guys, I promise. People have to tinker with things and make mistakes in order to learn. Good code is always written to do what the user needs, not what the developer wants. The "users" of the core code are the rest of the team on the project, who'll need it for their models, so it really does need to be driven by them to a large extent. A "build it and they will come" attitude always leads to crappy software. That's how we got Windows Vista. That's why I'd focus on the social/personal development aspects of the project more at this stage: once everyone's got something rudimentary up and running it'll be more apparent what they need from the core code and then you'll all be able to have a more meaningful conversation about what additional features, if any, it needs. |
Beta Was this translation helpful? Give feedback.
-
Hi all! Here I am, finally, putting my grain of sand. As it is often the case, there are good points on both sides of the discussion. I'll try to summarise my view in bullet points - rather straight to the point, don't take any comment personal!
As a final note, from the project management perspective, the time we (the RSE Team) are supposed to be involved in the project is very much underused. So, please, get in touch if you need specific support on something, one to one sessions or whatever because we can certainly invest more time in you! And that's all from my side. Happy coding! |
Beta Was this translation helpful? Give feedback.
-
I'll start off by saying that I know all of you care about the success of this project (as do we!) so I hope that none of this comes across as criticism of any individuals. However, I do have some concerns about the current direction of travel from an engineering perspective and I thought it might be helpful if I jot down my thoughts here. I'm more interested in provoking a wider discussion than I am in any particular outcome and I hope it'll be taken in that spirit 😄
I think that the work that I'm seeing in the repo is far too much skewed towards development of core code and that it needs to be balanced with other development, namely work on modelling code. I say "skewed", but at the moment actually the only code in there is core code!
Presumably this other work is made up of:
First off, it would be good to know roughly what the ratios of these categories are. But insofar as there is some work in the first two, it would be great to get it merged into the main repo in some form or other. In a sense it almost doesn't matter what gets merged, so long as you each have something in the repo that you're working on. I think the psychological impact of feeling like there's something in there that you truly own is actually really important. The danger with development being skewed heavily towards the work of a couple of individuals is that other people end up feeling like the code isn't really "theirs" and that when they submit code they're somehow treading on someone else's turf. Ideally you want PRs etc. to provoke lively, democratic discussions, at least some of the time. Otherwise code review just becomes a rubber-stamping exercise.
I think there are solid technical reasons for preferring a flatter development model, too. Really you want the core code to co-evolve with the model code; while you will need to adapt your models to fit with the core's needs, the core also needs to adapt to the models' needs -- and I actually think the latter is more important. Don't assume that you'll be able to anticipate the models' needs ahead of time: the limitations of your current APIs will become apparent when you actually try to use them for something. If you carry on building more core code based on top of these APIs, it'll just become more and more difficult to extricate yourselves from these limitations at some future date. This also goes for adding unnecessary features. It isn't just a maintenance burden for the person who writes them, it also means that everyone else has to deal with that additional complexity -- for the duration of the project. Remember, worse is better. This should be the project's new motto 😉.
I'm concerned that the core is already becoming bloated and over-engineered, before work on modelling has even begun. If people were feeling apprehensive about submitting their code before, that's only going to get worse the more that they have to build it on top of this towering behemoth. There are two risks with this sort of project: one is that you have an over-developed core that hardly anyone on the team actually understands and the other is that you have lots of disconnected model code with repetition of routines that really should be factored out into common code. And if I had to choose, honestly I'd prefer the second of these. I'm not kidding: at least if you have to factor out common code, you can have a discussion about what actual needs your actual models have and not what hypothetical needs some hypothetical models might have, which is a much larger problem space!
So, as I've written in the title for this discussion, I'm proposing a feature freeze on core code -- either now or in the very near feature -- until other people's ongoing modelling work has been upstreamed in some form, as I think that's where your priority should be for now. (All right, you might want to make an exception for bug fixes and documentation updates, but you get the idea.) You could make a
models
folder and then people could keep whatever they're working on in subfolders in there (after submitting it via a PR, of course). Or something. The important thing, as far as I'm concerned, is just that everyone gets to be involved.I'm conscious that all this work on and discussion around core code has meant that @dalonsoa and I have ended up focusing our attention on a smaller number of you than I'd like. This has been true in meetings as well as in terms of PRs etc. I feel a bit guilty about this and I want to hear from more of you: what you're working on and how we can help you integrate it with the code base. Perhaps the next meeting we have could be more of a roundtable and we could go round people one by one to talk about this?
I hope I haven't sounded too negative here. It goes without saying that there are things to like about the code base too -- there are lots of tests and documentation, for example -- and I'm sure Virtual Rainforest will end up being great. But I thought all this might be worth a discussion.
Beta Was this translation helpful? Give feedback.
All reactions