Hi Sharan and Everyone,

When we lost Adrian in the beginning of the rewrite project I really felt
lost. His feedback made things simple and I miss having him around for
mentoring and feedback. I think deferring the rewrite project is a good
idea for now.

I shifted my energy into just playing with the code and dabbling here and
there and I got surprised by the many problems that exist pretty much
everywhere. This would be things like:

- Extending classes from external libraries into the core APIs
- Writing to implementations instead of interfaces
- Files too long
- Different levels of abstractions mixed together
- Poor test coverage, lack of TDD
- Implicit (hidden) dependencies (I dislike this the most)

I think the above issues indicate that we really do need less energy on new
features, and much more on refactoring. We should refactor everything
including core API interfaces. Some examples of work we can do:

- EntitySaxReader implements javolution interfaces and looks hideous
- HtmlFormRenderer is 3000 lines of code and the interfaces it implements
are also huge
- XmlFormRenderer does not implement more than half of the methods
- Lots of dependencies on deprecated classes / constructors (e.g.
HtmlScreenRenderer, FoScreenRenderer)
- Start.java has some problems which I'm trying to tackle in JIRA:
OFBIZ-6783
- Lots of non-parameterized and non type checked declarations.
- Implementations with no interfaces (e.g. TemporalExpression, GroupModel,
Cache, etc ...)

The list goes on and on. Every one of the SOLID principles for Bob Martin
is violated in many places and most of the code smells in his book also
exist.

I started a thread a while back suggesting that I would like to start
refactoring without too many JIRAs because it would slow us down. However,
the feedback from the community I got is that JIRA creation is preferred.
This, however, would slow down progress especially if I'm just making minor
one-line changes. We need an efficient way to make continuous daily
improvements to the code base.

Also, we need to document our design philosophy for others to consider when
writing code. I don't mean just formatting conventions but also things like
writing to interfaces, TDD, design rules specific to OFBiz, and so on.

To summarize:
- We have a LOT of refactoring work, it's everywhere
- We need a more efficient workflow for continuous daily refactoring, the
current workflow is too bureaucratic
- We need help from everyone
- We need to expand the coding guidelines to introduce some design
concepts, not just formatting.

Those are my very long 2 cents.

Taher Alkhateeb

On Wed, Feb 3, 2016 at 8:19 PM, Sharan-F <sharan.f...@gmail.com> wrote:

> Hi Everyone
>
> A few months ago we started looking at a proposed framework re-write sub
> project with Adrian as our mentor.
>
> https://cwiki.apache.org/confluence/display/OFBIZ/Potential+Framework+Project+for+the+Foundation+Sub+Component
>
> With Adrian gone it makes it hard for us to continue so have decided to
> abandon this effort.
>
> We don't want to give up on having a better framework and know that another
> option is to tidy up our existing framework. (So yes – this means
> refactoring, and yes it will be a lot of work)
>
> In general we do sometimes tidy up or refactor as we go along and some work
> has already started with movement of entity definitions into a separate
> datamodel component. If we really do want to tidy up our framework then we
> will need as many people from the community as possible to help out.
>
> Now here comes the big question – is the community interested in really
> doing this and are there people out there willing to help out?
>
> Thanks
> Sharan
>
>
>
>
>
>
>
>
>
> --
> View this message in context:
> http://ofbiz.135035.n4.nabble.com/Framework-Cleanup-Options-Tidy-Up-Refactor-tp4676797.html
> Sent from the OFBiz - Dev mailing list archive at Nabble.com.
>

Reply via email to