Apologies in advance for the lengthy post.
Andrew Ariotti and I have sponsored the development of some extremely useful code for handling HTML tables in nodes in D6. We're prepared to contribute the code back to the community, but there is a complication.
The complication is that, by design, the code largely/wholly duplicates the functionality of an existing module called TableManager. That said, our code is for a D6 version of which there is no official release under TableManager, so it isn't actual duplication of code, but rather of concept and functionality. http://drupal.org/project/tablemanager.
We tried some months back to collaborate with the maintainer to get this code done for an official D6 release, but instead we created a big controversy. See these threads: http://drupal.org/node/234139, http://drupal.org/node/623482. As a result, we had no option but to go out on our own to produce the code independently.
The problem then, as now, being that the TableManager code has never been fully upgraded to work properly on D6 and is released only in a .dev version that is still not fully functional 2 yrs after it's original release. Even now, the maintainer has offered no definite timetable for the upgrade to D6, let alone D7. He has also introduced concerns about who even owns the code as some of it may arguably belong to clients of his company (http://drupal.org/node/599722#comment-2209146). He has also made clear he will not bring on co-maintainers (http://drupal.org/node/623482#comment-2231592) to help him.
At the time of those threads, we offered to work with the maintainer to update his excellent module - to pay to have it entirely re-written if necessary. We first offered to pay him and then when that didn't work, we offered to pay other developers who might collaborate with him. But that didn't work out either, so in the end were told to take a hike.
Since Andrew and I needed fully working TM functionality for D6 production sites, we moved forward to build out a new version of the code upgraded to D6 and with all features working. We hired two freelancers to write the code. The project has involved many manhours and a meaningful amount of our money to complete. The code is essentially completely rewritten from the ground up consistent with D6 APIs and coding standards (whereas TM has it's roots in D4 code).
While there are still some bugs to be worked out, the module substantially works now and has been tested by several people so far. We also have commitments from two developers to be co-maintainers of the module out of the gate.
We have an interest in posting it back to d.o. for use by the community. We imagine that among the hundreds of other people using the .dev version, there are others like us who could benefit from it. Here's an example from just the other day: http://drupal.org/node/771800.
What we need from webmasters is guidance on is how to move forward on this. In some sense, it should be a new version of TableManager, but the history and personalities involved makes that difficult. On the other hand, the code base is essentially completely rewritten and looks nothing like the original code, even if the functionality is similar.
Our preference is to establish a new module that starts fresh with our two co-maintainers. The project name NodeTable has been tentatively reserved.
However, we are open to working within the framework of TableManager, if we can settle on mutually agreeable terms with the current maintainer (e.g., our co-maintainers are welcomed, we take the lead on D6 version, and so forth). Obviously, things didn't go so well there the first time around, but ...
Of course, there's a 3rd option: we drop the whole thing and keep the code private. We wouldn't prefer that, but it's probably the easiest for us.
We are posting a note to the TableManager queue at the same time we are posting here to ensure the situation gets a full and open hearing. We look forward the community's suggestions as to the best way to proceed.
| Comment | File | Size | Author |
|---|---|---|---|
| #12 | nodetable.tar_.gz | 38.46 KB | john.kenney |
Comments
Comment #1
silurius commentedSubscribing.
Comment #2
Anonymous (not verified) commentedAs the code has been submitted under GPL License v2+, every person can alter the code; who created the code cannot stop others from modifying it. I am not sure what the code ownership issue should be.
Comment #3
killes@www.drop.org commentedCan I get an executive summary? :p
Anyway: there are several modules on d.o that duplicate each other and we are all still alive...
Comment #4
avpadernoAs general rule, in Drupal.org we tend to avoid duplicate modules (the duplication is about the done work, not the code).
In this case, the maintainer of the existing project seems to not accept any proposed changes to the module. Even if I understand that is good to avoid to duplicate modules, I also think that a module that is close to suggestions is even worst than a duplicated project.
Comment #5
killes@www.drop.org commentedright
Comment #6
WorldFallz commentedThough we tend to discourage duplicate modules, as others have pointed out-- there are plenty of them. The authors made efforts to collaborate, it didn't work out. That doesn't mean the community should be deprived of a perfectly good module or that contributors be turned away. I say go for it, just document the differences, if any, so users can make an intelligent choice.
And thanks for wanting to contribute and trying to be good citizens about duplicate code!
Comment #7
john.kenney commentedokay, thank you everyone. we appreciate the quick convergence on an answer.
we are moving ahead with this thing as a new module called NodeTable. http://drupal.org/project/nodetable
Comment #8
pobster commentedWow, no-one give me a chance to answer!
I've already replied on one of the numerous other threads - I've no problem with merging the two projects. I just don't read my Drupal posts every day to see what's occurring!
I'll add you both (John and Andrew) as maintainers, it's up to you whether you want to accept or not.
Pobster
Comment #9
john.kenney commentedpobster's response (actually 2) can be found here: #25: http://drupal.org/node/772536#comment-2857004, #26: http://drupal.org/node/772536#comment-2857040. my response is at: #27: http://drupal.org/node/772536#comment-2857226
I re-quote them here because this is a better thread to pursue these points.
As stated, i will refer my colleagues to these posts and we will come to a collective decision about how we would like to proceed.
If anyone on this webmasters post has an opinion on this, we are all ears.
If possible, let's contain the response here on this thread to avoid fragmenting the discussion.
----
edit:
an additional comment was posted on the other thread at #29:
Comment #10
pobster commentedApologies I'd already posted on the other thread before I saw your reply. Anyways, it's all irrelevant imo... I only said some of the things I said because I'd had enough of you and wanted to force your hand at starting from scratch. Which... You did... So... Well... Hats off to you, I'm actually fairly impressed that you've managed to pull it off, it's no small deal - I'm interested to see the codebase. To quell your fears, don't worry I will have no input to it - unless there are security issues, but that would only be in the form of reporting them which I'd do for any module I have an interest in. I've no desire to work with you at all, my decision to give you Tablemanger by name is only born from my love of the community.
Pobster
Comment #11
john.kenney commentedok, thanks, pobster. an actual compliment. i'm touched.
yes, your module is 'no small deal'. it's an impressive and extremely useful bit of functionality. it has taken many, many manhours to recreate and it still has to be battle hardened by use by the commnity.
i appreciate the fulsomeness of your offer - i hear what you are saying.
as mentioned, this is not my decision per se, but a group one, so it has to be run by the others, too. since it is the weekend, it will take a couple days to get back with a response.
john
Comment #12
john.kenney commentedalso, i've attached the latest version of the code for you. i'm not sure the others would agree with doing this right now since the code remains a work in progress, but we'll be posting it relatively soon in some fashion.
so please appreciate it is not a final product and work continues on it as we speak. that said, it works pretty darn well.
also, please note that the code was written by snufkin and zserno. i had no hand in the code, have never even opened the files, and wouldn't know what to do if i did. i just install it and test it.
point being: if you want to provide feedback on the code, please spare snufkin and zserno the vitriol that you direct at me. they've worked very hard on this and deserve to be treated with respect.
Comment #13
pobster commentedDon't worry, I'm not an angry person at all - I reserve my vitriol, as you put it, solely for you because you're so unreasonable ;o)
Anyways, yes the code looks good from first impressions - I notice that there's still a function to sort rows manually? (_nodetable_row_sort_by_weight) Is this absolutely necessary given the nodetable_rows table holds a weight? Couldn't you rely on using Drupals own tablesort functionality to pass in db parameters instead of chugging through code? I only point it out as I got so many issues in TM commenting about the slowdown when maintaining large tables, which is completely understandable owning to my misuse of serialisation (TM was the first PHP I'd ever written in my life, it was a learning thing...) Meh, it's just a suggestion - I've only scanned through the code, I haven't installed it...
Pobster
Comment #14
john.kenney commentedwell, it's nice to know i'm special. :)
good to hear that your initial reactions are positive. that's encouraging.
as to specific questions/suggestions. i haven't got a clue. i will point erno here for his comments. and we probably should move any such discussion someplace else altogether so we don't clog up this thread.
if what you are talking about relates to the drag and drop reordering of rows, that is something that comes in handy for me and i'd like to keep it. but if it doesn't relate to that and is more about the way it is done in the code, i've no opinion and defer to you, erno, et al as to the best way to accomplish it.
thank you.
Comment #15
john.kenney commentedour group has been discussing the merge idea between NodeTable and TableManager and we have unanimously decided against it.
while we do see some benefits to the community in a merge, there are a few things weighing against it. first off is that we have been working well together as a team for several months already. second is the obvious clash of personalities and the potential distraction this might cause. third is the potential for confusion about responsibilities because we'd have, in some sense, 2 teams: one handling 'existing' TM and one handling 'new' TM. if the personalities meshed better, this might not be a problem, but they don't.
to overcome the confusion this approach may generate for the community, we suggest 2 things:
1. TableManager put a notice on their project page announcing NodeTable as the recommended module for D6 and beyond and pointing people to our project page. http://drupal.org/project/nodetable.
2. TableManager marshal some resources to contribute to the build out of an upgrade path from TableManager to NodeTable on D6. Such collaboration should help us get a smooth upgrade path build out both sooner and better.
If there are other things we can do, we are open to hearing them.
regarding #1. If we receive permission from pobster, we will put up the notice ourselves. Otherwise, we will email suggested copy. This will be handled by Andrew (amariotti).
thank you for everyone's participation in this thread. if there are other points of discussions, please let us know. otherwise, we will focus on getting our code cleaned up and posted as soon as possible.