On Thu, Feb 10, 2011 at 15:53, Caleb James DeLisle <[email protected]> wrote: > You make a good point about not touching anything. I agree totally about not > modifying the behavior > of storage without a configuration switch but to not modify the code at all > has a few other > consequences. > > 1. xwiki-core is serving a dual purpose, it is the client of all the services > provided by the > modules and it is the grave yard for dead and deprecated code. I would like > the idea much better if > we could usher the dead code from xwiki-core to another module so that core > of the application is > not the dead code cemetery.
Note that there is xwiki-legacy project and aspect in xwiki-core to remove deprecated code from project or java files we want to cleanup. > > 2. The point about custom storage implementations could be applied to any old > code, any line we > change might be breaking someone who depends on it, this is especially true > because groovy allows > access to private fields and methods without even a warning. > From the community standpoint, people who make patch sets and keep them > secret are harming the > community by keeping their (potentially very good) modifications to > themselves, this is the same > discussion which goes on with the Linux kernel and closed source modules, I > agree with Linus here > that although we should not try to stop this practice we should also not > protect it by preserving > internal APIs. > > The approach I have thus far taken has been to remove unused code, implement > APIs externally, and > move things over one at a time. This gives us results right away and makes > xwiki-core less bloated > but it leaves behind sub-optimal APIs which still need to be rewritten again > and introduces more > bugs since every interface is at some point reimplemented. > > Your method (as I understand it) is to rewrite things in large chunks but (at > least with rendering) > never to break the old API. Reimplementing storage this way would mean we > need the thing to store > (XWikiDocument) and the objects and properties which amounts to a total > rewrite of core before the > first result comes in. > > If we are to keep deprecated code such as rendering1.0 (forever?) I think we > need to move it out of > the core where it confuses attempts to fix core bugs. > > > Caleb > > > On 02/09/2011 09:21 AM, Vincent Massol wrote: >> +0 for the idea but I don't know that part of the code enough to know what >> problems this is going to cause (custom storage implementations out there, >> etc). >> >> Personally I'd have preferred to not touch a single bit at any existing >> storage interfaces and instead introduce new storage APIs in the new >> xwiki-store module and have a flag to direct to the old or new >> implementations. This is basically the strategy we followed with the new >> rendering engine and that has allowed us to keep 100% backward compat for >> the XWiki 1.0 syntax. > > > >> >> Thanks >> -Vincent >> >> On Feb 9, 2011, at 2:20 PM, Caleb James DeLisle wrote: >> >>> I would like to propose another round of storage deprecations, the goal of >>> these is to remove and >>> decrease visibility of code in order to simplify storage and move as much >>> as possible over from API >>> to implementation details. I am proposing deprecation of each of the >>> following, after 2 releases >>> this may be revisited and they may be removed or altered. The following are >>> changes I have made >>> locally and found xwiki-core does compile and test with those changes. >>> For now I propose adding deprecation comments and annotations to each class >>> or method. >>> >>> WDYT? >>> >>> Caleb >>> >>> >>> XWikiAttachmentStoreInterface.java >>> saveAttachmentContent(XWikiAttachment attachment, XWikiContext context, >>> boolean bTransaction) >>> remove >>> >>> cleanUp(XWikiContext context) >>> remove >>> >>> XWikiBatcher.java >>> remove entirely >>> >>> XWikiBatcherFactory.java >>> remove entirely >>> >>> XWikiBatcherStats.java >>> remove entirely >>> >>> XWikiDefaultStore.java >>> remove entirely >>> >>> XWikiHibernateBaseStore.java >>> getDatabaseProductName(XWikiContext context) >>> public --> protected >>> >>> shutdownHibernate(XWikiContext context) >>> remove >>> >>> updateSchema(XWikiContext context) >>> public --> private >>> >>> getSchemaFromWikiName(String wikiName, DatabaseProduct databaseProduct, >>> XWikiContext context) >>> protected --> private >>> >>> getSchemaFromWikiName(XWikiContext context) >>> protected --> private >>> >>> getSchemaUpdateScript(Configuration config, XWikiContext context) >>> public --> private >>> >>> updateSchema(String[] createSQL, XWikiContext context) >>> public --> private >>> >>> updateSchema(BaseClass bclass, XWikiContext context) >>> remove >>> >>> isVirtual(XWikiContext context) >>> public --> protected >>> >>> beginTransaction(SessionFactory sfactory, XWikiContext context) >>> public --> protected >>> >>> beginTransaction(SessionFactory sfactory, boolean withTransaction, >>> XWikiContext context) >>> public --> protected >>> >>> endTransaction(XWikiContext context, boolean commit, boolean >>> withTransaction) >>> public --> protected >>> >>> execute(XWikiContext context, boolean bTransaction, boolean doCommit, >>> HibernateCallback<T> cb) >>> public --> private >>> >>> XWikiHibernateStore.java >>> getContent(XWikiDocument doc, StringBuffer buf) >>> remove >>> >>> public List search(Query query, int nb, int start, XWikiContext context) >>> remove >>> >>> injectCustomMappingsInSessionFactory(BaseClass bclass, XWikiContext >>> context) >>> public --> private >>> >>> injectCustomMappingsInSessionFactory(XWikiContext context) >>> public --> private >>> >>> XWikiHibernateVersioningStore.java >>> loadAllRCSNodeInfo(XWikiContext context, final long id, boolean >>> bTransaction) >>> protected --> private >> >> _______________________________________________ >> devs mailing list >> [email protected] >> http://lists.xwiki.org/mailman/listinfo/devs >> > > _______________________________________________ > devs mailing list > [email protected] > http://lists.xwiki.org/mailman/listinfo/devs > -- Thomas Mortagne _______________________________________________ devs mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/devs

