Access to add and change pages is restricted. See: https://cwiki.apache.org/confluence/display/OFBIZ/Wiki+access

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 17 Next »

Based on the feedback raised in on the mailing list discussion. http://ofbiz.135035.n4.nabble.com/Framework-Cleanup-Options-Tidy-Up-amp-Refactor-tt4676797.html#none . We would like to start some refactoring work to tidy and clean up areas of the framework.

What is the overall goal and what do we want to achieve?

Our overall goal is to tidy up the existing code to make it easier for us to maintain and improve.

What is re-factoring?

Refactoring is the cleaning, tidying or improving the existing code yet keeping the same functionality.

Why do we want to do this re-factoring?

Refactoring is something that tends to happen naturally over time as code evolves. We have identified some key areas that could really benefit from an refactoring effort so would like to promote these areas for active clean up and refactor.

The key benefits of any refactor is cleaner, neater and simpler code.

What sort of issues have been identified that the re-factoring could help with?

Looking at some of the OFBiz code we have identified some of the following:

  • Some of the classes have been extended from external libraries into the Core APs
  • Some of the files are too long
  • Different levels of abstractions are mixed together
  • Poor test coverage, lack of Test Driven Development
  • Implicit (hidden) dependencies

It looks like a lot of work - is it worth it?

Yes, it will be a lot of work . There are a lot of areas that could do with re-factoring but if we can engage the community to help then this workload can be shared.

Yes, we do believe that it is worth the effort. The main benefit will be a cleaner, tidier code base that will allow us a lot the flexibility to grow and interface to a range of technologies easily. 

Planning and Approach

The re-factor covers the whole OFBiz code base so we need a simple approach that makes it easy for people to pick up, re-factor and improve an area. This means that we probably wont be able to run it as a traditional linear project. Instead we will look to highlight areas of work where the community can help.

Main Approach

  • Identify a list of 5 possible key re-factoring areas
  • Ask the Community for volunteers to help re-factor in these 5 selected areas
  • As one area is completed, we will top up the list of with another area so that the total will remain at 5
  • Use of JIRA for tracking work (e.g open a master issue for each area identified and include individual sub-tasks)

Reasoning

  • A short list of 5 is good number to highlight the key areas
  • A  list will help focus the community
  • As one area is finished we can easily move to another
  • Over time the initial re-factoring will make further re-factoring easier

People Available to Help

If you are interested in being part of the working group on this please add your details to the table below.

NameContact DetailsLocation
Taher Alkhateebtaher at apache dot orgKuwiait
Jacques Le Rouxjleroux at apache dot orgFrance
Nicolas Malinnmalin at apache dot orgFrance
Julien Nicolasjnicolas at apache dot orgFrance
Gil Portenseignepgil at apache dot orgFrance
Sharan Fogasharan at apache dot orgCzech Republic
Hotwax Team ??  
   

Current Top 5 Re-factoring Focus Areas

The table below includes the list of the 5 areas we currently want to re-factor.

If you are interested in working (or are in the process of working) on any of these areas then please add your name in the column below.

 

 AREAREASON FOR RE-FACTORSTATUSWHO IS WORKING ON IT?JIRA MASTER ISSUE LINKCOMMENTS
1EntitySaxReader EntitySaxReader implements javolution interfaces and looks hideous     
2HtmlFormRendererHtmlFormRenderer is 3000 lines of code and the interfaces it implements
are also huge
    
3 XmlFormRendererXmlFormRenderer does not implement more than half of the methods     
4Dependencies on Deprecated Classes / ConstructorsLots of dependencies on deprecated classes / constructors (e.g.
HtmlScreenRenderer, FoScreenRenderer)
    
5Start.java  This has some problems which I'm trying to tackle in JIRA:
OFBIZ-6783
In ProgressTaher AlkhateebOFBIZ-6783 


Not sure where to start? Need more information?

 If you'd like to help out but are not sure where to start then please contact our development mailing list or leave a comment on this page.

 

  • No labels