[ 
https://issues.apache.org/jira/browse/COMMONSRDF-11?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14490926#comment-14490926
 ] 

Peter Ansell commented on COMMONSRDF-11:
----------------------------------------

I would suggest that if there needs to be a simple base implementation that 
some contributors here want to reuse and extend that it be implemented outside 
of the core API project. In that project, any binary compatibility issues would 
be managed and implemented separately to enable those users to decide on the 
level of binary compatibility that they require. Even if none of the big 
implementations adopt that implementation as a basis, it would probably still 
want to internally agree on the binary compatibility that it would provide 
across its versions.

However, we require a test harness implementation here to give us a case to 
discuss issues within, without having to worry about reuse of any of the 
specific parts of the test harness by third-party users. The discussions about 
the simple module are interrupting our focus on the API module, even though its 
status as a pure test harness module has been discussed throughout the life of 
the project so far.

If necessary to clearly articulate its role, we could rename the 
commons-rdf-simple module to commons-rdf-tester to emphasise its role along 
with its performance (none) and stability guarantees, and plan to reestablish a 
separate base or abstract implementation separately at a later date once the 
base API is released and the API/tester modules exit the incubator. That module 
could then also explore threadsafe implementations, which as Stian says are 
outside of the scope of the base API contract. Any threadsafe implementations 
should be able to be implemented within the contracts that we give in the base 
API, even if we don't mention threadsafety, which leads to the assumption of 
non-threadsafe by default unless known otherwise.

However, as Sergio proposed, we could still benefit from versioning the test 
harness using patch versions (0.1.x), and versioning the API module solely 
using major and minor versions (0.1).

> Simple should be extendable classes
> -----------------------------------
>
>                 Key: COMMONSRDF-11
>                 URL: https://issues.apache.org/jira/browse/COMMONSRDF-11
>             Project: Apache Commons RDF
>          Issue Type: Improvement
>            Reporter: Stian Soiland-Reyes
>            Assignee: Stian Soiland-Reyes
>
> In my view, org.apache.commons.rdf.simple should also be a possible basis for 
> other implementations - for instance if they only need a new Graph and Triple 
> implementation, they should be able to use the other classes directly.
> Current the simple classes are defined like:
> {code}
> final class LiteralImpl implements Literal {
> {code}
> with a mixture of public and package constructors.
> I would prefer for these to all be public, non-final, so that it would be 
> easy to extend the simple* classes if so desired, and to instantiate them 
> directly without having to make a shadow of SimpleRDFTermFactory.
> (Note - SimpleRDFTermFactory is not final and so can easily be subclassed to 
> reuse some of the implementations, but constructors must be at least 
> protected to be subclassable outside this package)



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to