Hi Yichun Duan,
Thanks for submitting a proposal - what you've submitted is a good start, but it needs some more detail and clarification.
4.1: You say you're going to save the database-specific tests "to another place" - Can you give specifics, or at least an idea of you current thinking? How will that chosen location allow external database backends to provide tests?
4.1 (the second one): What backend specific tests are you proposing to write? We've got a fairly well tested code base; if there's a specific area where you think more tests are required, you should be explicit about the nature of those tests.
4.2: Isn't really true. We already have database specific tests, using the @skipUnless(connection.vendor == '...') decoration on tests. What were you thinking of introducing in this step?
4.3: If I understand this, You're allocating a week to *run* a test suite? This sounds... very well padded. Unless you've got something specific in mind, I would consider "running the test suite" to be just part of normal development, not something that requires a specific time allocation.
4.4: "Solve the database problem". Sorry, but this sounds like an "underpants gnome" answer: Step one - steal the underpants, Step two...... Step three Profit! It's not clear to this proposal that you've described a single problem, let alone proposed a solution that can clearly be implemented in 2 weeks.
4.5: What constitutes a "more complex environment"? You either have a MySQL database, or you don't. What "complexity" are you referring to?
4.6-4.8 are broadly Ok - having a couple of weeks for cleanup and extension tasks at the end of your project is a good idea. However, you've allocated 1/3 of your project time to "cleanup" tasks. That seems a little excessive.
Item 4.4 is the biggest issue in my opinion. It feels like this is the real "meat" in your proposal, but it is not clear to me at all what you're planning to do here. You don't have to provide detailed specifics, and what you propose here may not end up being what is accepted -- but some broad architectural ideas would be very helpful.
It would also be helpful to think about what you can provide as interim deliverables for this project. Ideally, the result of this project wouldn't be "one big PR at the end" - it would be much better to see a number of smaller pull requests. Smaller PRs are more likely to get merged, and reduce the need for any time allocation for merge tasks.
Yours,
Russ Magee %-)