Problem/Motivation
As discussed in a comment in another issue, the maintainers agreed last spring that Evoc should be deprecated. I believe this discussion took place as part of this Linked Data Sprint.
People do not understand why they should use the module, it causes conflicts with other things, and doesn't work for the target use case much of the time. It has a highly normalized database structure, which makes for a lot of unnecessary tables in the database. It was committed to the project without proper review, so it doesn't have key things such as uninstall functions.
Maintainers themselves have circumnavigated using the functionality; for example, by creating modules that add user interfaces for individual vocabularies (eg Schema.org).
Proposed resolution
This should be handled in two phases.
Deprecate
Formally post notice of deprecation and provide proper uninstall functions.
Remove
Remove code from both the evoc module and the code that handles vocabulary management in RDFx. Add uninstall functionality from deprecation phase to an update to RDFx.
| Comment | File | Size | Author |
|---|---|---|---|
| #11 | 1448370-11-deprecate-evoc.patch | 4.52 KB | linclark |
| #8 | 1448370-08-deprecate-evoc.patch | 25.88 KB | linclark |
Comments
Comment #1
scor commentedyes, we never ended up cleaning that up... +1
Comment #2
Anonymous (not verified) commentedWhat do you think of this plan:
Comment #3
scor commentedplan sounds good. Maybe we could allow a few more weeks buffer time, like 6 weeks? or we could also ask anyone who needs more than 3 weeks to just say so... either way, +1!
Comment #4
Anonymous (not verified) commentedI think it should be ok since we will have a point release which people can use until they are ready to change, but if we get pushback when we announce the deprecation, we can figure out whether an extension would help with anything.
Comment #5
Anonymous (not verified) commentedWhat do you think of this?
Comment #6
scor commentedLooks good. you might also want to mention that the removal of evoc will only affect the autocomplete of RDF UI, but people will still be able to add namespaces manually and set their mappings as long as they know what terms they want to use.
Related issue re future of RDF UI: #1130598: Make the RDF UI autocomplete more extensible.
Comment #7
scor commentedPlease also point to the service based approach wiki on gdo: Architecture of the centralized vocabulary republishing service
Comment #8
Anonymous (not verified) commentedOk, I think I got all of it, but I need a break and haven't checked for sure yet.
In the patch I move the autocomplete functions to RDFx. However, these will move to RDFui with Kelly's patch. We will also need to do a clean up at some point to see which admin screens should be in RDFui instead of RDFx.
Comment #9
scor commentedThanks Lin for working on this. Uninstalling evoc works, and namespaces which were imported in evoc are preserved during the uninstallation.
any reason for removing this key? I guess we would need an update function as well. but don't we want to keep this unique key anyways?
This function assumes evoc has been uninstalled. If people apply this patch (or upgrade rdfx after this patch has been committed), and don't uninstall evoc, their namespaces will be messed up because it will include all the namespaces of the imported vocabularies, with conflicts etc. I think that until evoc is completely removed, we need to check in this function whether evoc is still enabled (if the rdfx_vocabulary_graphs table exists) and keep the old query if it's the case. This is the old code which joins with the evoc table
maybe I'm confused, but I thought in the first patch/phase, we would provide the uninstall function for evoc, while leaving the evoc functionality in the module.
I thought this was the plan - let me know if I'm missing something:
7.x-2.0-alpha5 (next release): this is the last release of RDFx to include evoc. it also comes with uninstall function to cleanly remove evoc, if you don't use or need evoc, you might want to uninstall it.
7.x-2.0-alpha6: this release no longer includes evoc functionality. rdfx.install includes update function to force people to uninstall evoc if they haven't done so already. that's when the evoc code is being remove.
Comment #10
Anonymous (not verified) commentedThe graph ID is no longer a meaningful value. There's no reason to enforce the URI constraint, since you can have two prefixes that point to the same URI.
Good point about assuming that Evoc has been uninstalled... I think I got distracted during the sprint started just removing it totally.
Comment #11
Anonymous (not verified) commentedI made the change to rdfx_rdf_namespaces and reinstated the terms file. I think that's everything that needed to change to make this deprecation instead of removal.
I have to run and will be on deadline over the weekend and early next week, but if this works feel free to commit.
Comment #12
scor commentedI just tried this patch and it doesn't work because _rdfx_extract_schema() is undefined. If you try to reinclude rdfx.terms.inc, then rdfx_rdf_namespaces() is defined twice. If you remove the old rdfx_rdf_namespaces(), then you still need to take care of returning empty autocomplete results when evoc is disabled... I feel like we're wasting too much time trying to fix some code that's going to be discarded in a few weeks. Lin, if you agree, let's just call 7.x-2.0-alpha4 the latest version including evoc, and let's commit something close to your first patch that will remove evoc and force people to uninstall its tables when they upgrade to alpha5. We're only in alpha anyways, so I don't think anyone will mind if we deprecate this functionality. I'd much rather spend time on more promising patches which will improve the module...
new suggested plan:
- post deprecation notice (#5 + #6)
- commit patch for evoc removal (most of the code is ready, uninstall function works well)
- roll a new release
Comment #13
Anonymous (not verified) commentedSounds good to me, I'll post the deprecation notice tomorrow.