View Issue Details

IDProjectCategoryView StatusLast Update
0002382ScribusInternalpublic2015-06-29 04:12
ReporterringercAssigned To 
PrioritynormalSeveritymajorReproducibilityalways
Status acknowledgedResolutionopen 
Platformx86 LinuxOSFedora CoreOS Version3
Product Version1.3.1cvs 
Summary0002382: Metabug: Code quality, structure, readability
DescriptionThere are some issues with code quality, readability and structure in Scribus. These are commonly recognisd on -dev, and I'm posting this bug as a general tracker for code quality related bugs.

I think some of these issues are major problems for getting more contribution to Scribus, especially casual bug fixes and feature offers. 0002376 is an example.

THIS IS NOT A "SCRIBUS IS CRAP" COMMENT. I'm discussing limitations and problems, but that does not detract from the functionality and the cool stuff that works well.

Here's a 10,00 foot overview of random issues:

Broad categories of issue:
  - Structure:
      = Deep nesting
      = huge classes and files
      = Strong assumptions about order of execution that can make changes difficult. Results in heavy cross dependencies.
      = direct member access all over the code; reliance on "changedBlah()" style calls rather than accessors emitting signals. This means that all code that modifies "blah" needs to know who to tell when it changed "blah" and when. Results in heavy cross dependencies.
      = Sometimes very linear/procedural where event-driven/OO would be much better. Makes it hard to re-use code, introduces tight cross-dependencies.
      = *LOTS* of mixing of GUI code with "core" code. Better separation would help quite a bit for some things. See mpalette.cpp for example.
  - Quality. Error checking/handling/reporting. Assertions and sanity checks. Testing, especially automated testing. Test suites on critical facilities like PDF export.
  - Readability. Few comments, structure issues already mentioned.
  - UI and usability tweaks and touch-ups needed in many areas. Please DO NOT link those bugs here; file a separate metabug or just search the 'usability' and 'user interface' categories.
Additional InformationSee the whole list of metabugs: http://wiki.scribus.net/index.php/Metabugs
TagsNo tags attached.
Patch

Relationships

related to 0002215 closedjghali Audit and fix text encoding handling 
related to 0002260 acknowledged Metabug: Long-running code that blocks the UI 
related to 0002251 acknowledged Metabug: Vanishing or silently disabled UI 
related to 0002161 acknowledged Re-examine copy/paste and drag & drop 
related to 0001678 closedfschmid Picture Management dialog needs a rewrite 
parent of 0001470 closedcbradney Comments on all classes and members in header files 
parent of 0001653 confirmed Convert all PageItem direct member access to use getters and setters 
parent of 0001900 assignedjghali Convert PDFOptions, PDF dialog, and related to use enums not magic numbers 
parent of 0001899 assignedjghali Clean up pdfopts.cpp / tabpdfopts.cpp 
parent of 0002383 confirmed ScribusView is too big to be comprehended by mortal minds 
parent of 0002384 closedavox PageItem::DrawObj does lots of non-drawing tasks, gets very convoluted 
parent of 0007609 new In code: Replace constant numerical values with helpful named constants 
has duplicate 0002376 closedringerc Source code requests 
related to 0002438 acknowledged Metabug: Cases of extreme memory use 
Not all the children of this issue are yet resolved or closed.

Activities

ringerc

2005-08-03 16:25

reporter   ~0005874

Discussion is probably better carried out on -dev, then this bug updated. Otherwise the history will just get excessive.

Issue History

Date Modified Username Field Change
2005-08-03 16:08 ringerc New Issue
2005-08-03 16:10 ringerc Status new => confirmed
2005-08-03 16:20 ringerc Description Updated
2005-08-03 16:21 ringerc Relationship added has duplicate 0002376
2005-08-03 16:25 ringerc Note Added: 0005874
2005-08-03 16:26 ringerc Relationship added parent of 0001470
2005-08-03 16:26 ringerc Relationship added related to 0001653
2005-08-03 16:27 ringerc Relationship replaced parent of 0001653
2005-08-03 16:27 ringerc Relationship added related to 0002215
2005-08-03 16:27 ringerc Relationship added related to 0002260
2005-08-03 16:27 ringerc Relationship added related to 0002251
2005-08-03 16:28 ringerc Relationship added related to 0001900
2005-08-03 16:29 ringerc Relationship replaced parent of 0001900
2005-08-03 16:29 ringerc Relationship added parent of 0001899
2005-08-03 16:29 ringerc Relationship added related to 0002161
2005-08-03 16:31 ringerc Relationship added related to 0001678
2005-08-03 16:33 ringerc Relationship added related to 0002383
2005-08-03 16:38 ringerc Relationship added related to 0002384
2005-08-03 16:39 ringerc Description Updated
2005-08-03 16:40 ringerc Relationship replaced parent of 0002383
2005-08-03 16:41 ringerc Relationship replaced parent of 0002384
2005-08-14 15:23 ringerc Relationship added related to 0002438
2006-07-02 22:12 mhanski Additional Information Updated
2014-07-09 15:46 Kunda Status confirmed => acknowledged
2015-06-29 04:12 Kunda Relationship added parent of 0007609