KMDI maintainership

Philippe Fremy phil at freehackers.org
Mon Dec 20 09:29:06 UTC 2004


Do you plan in your maintainership to make it compilable as a Qt only 
framework again ?

	Philippe

Matt Rogers wrote:
> Hi,
> 
> I'd like to take over KMDI maintainership. Currently, it doesn't really have a 
> maintainer since the person who imported it into kdelibs has been inactive 
> for quite some time. 
> 
> My initial actions as the new maintainer would be the following (not 
> necessarily the order i would do them in):
> 
> - Reformat the source to my liking per the attached HACKING file
> - Reassign all the KMDI bugs to and make myself the owner of the kdelibs/kmdi 
> component in bugzilla
> - start fixing bugs. Applicable fixes will go into kmdi2, albeit more slowly 
> than kmdi1. Depending on kmdi's future, kmdi2 will be phased out in favor of 
> a better behaving kmdi1 for KDE 4.
> 
> While I realize there are efforts underway to replace KMDI, I think it's 
> worthwhile to give it a chance after somebody gives it a little bit of love 
> rather than just replace it outright.
> 
> If there are no objections, I'll start immediately. (please cc me all replies 
> that only go to kwrite-devel since i'm not subscribed there)
> 
> Thanks,
> Matt
> 
> 
> 
> ------------------------------------------------------------------------
> 
> This is the oscar HACKING file. It details the current coding style that is being
> used in this plugin. Thanks to Scott Wheeler for providing the skeleton I based this
> file on
> 
> ================================================================================
> Code Documentation
> ================================================================================
> 
> Please add doxygen comments to the header files where appropriate. I don't expect
> anyone to add comments for functions that they're overriding from the base class
> but comments everywhere would be good.
> 
> Please comment parts of the code that might be unclear, need more thinking about,
> reimplementing, etc. It will help people look for things to do if they want to help
> out.
> 
> Please don't remove the kdDebug lines from any of the source files. If they're
> excessive, either wrap them in an ifdef and put the ifdef in the soon to be
> created oscardebug.h file so that they can be enabled and disabled at the will of
> other developers or users. I also tend to use kdDebug statements to document
> my code in the place of comments for the simpler sections. 
> 
> ================================================================================
> Indentation
> ================================================================================
> 
> I use tabs to indent everything. When I say tabs, I mean the 'tab' character. Please
> don't use 8 spaces to indent. Just hit the 'tab' key, and make sure that space indentation
> is turned off in whatever editor you use. However, the exception to the indentation
> rule is anything that's inside of a namespace block should not be indented.
> 
> 
> static void foo()
> {
> 	if ( bar() ) <-- 1 tab
>         	baz(); <-- 2 tabs
> }
> 
> namespace
> {
> class Foo
> {
> Q_OBJECT
> public:
> 	Foo();
> 	~Foo();
> };
> }
> 
> 
> 
> 
> vim or kate modelines that modify the way tabs are displayed are encouraged, as
> long as they don't actually change the way tabs are saved to a file.
> 
> ================================================================================
> Braces
> ================================================================================
> 
> Braces opening classes, structs, namespaces, functions, and conditionals should be
> on their own line. Here's an example: 
> 
> class Foo
> {
>     // stuff
> };
> 
> if ( foo == bar )
> {
>     // stuff
> }
> 
> while ( foo == bar &&
>       baz == quux &&
>       flop == pop )
> {
>     // stuff
> }
> 
> static void foo()
> {
>     // stuff
> }
> 
> Also conditionals / loops that only contiain one line in their body (but where
> the conditional statement fits onto one line) should omit braces:
> 
> if ( foo == bar )
>     baz();
> 
> But:
> 
> if ( baz == quux &&
>    ralf == spot )
> {
>     bar();
> }
> 
> ================================================================================
> Spaces
> ================================================================================
> 
> Spaces should be used between the conditional / loop type and the
> conditional statement.  They should also not be used after parenthesis.  However
> the should be to mark of mathematical or comparative operators.
> 
> if ( foo == bar )
>   ^ ^          ^
> 
> is correct. However:
> 
> if(foo == bar)
> 
> is not.
> 
> ================================================================================
> Header Organization
> ================================================================================
> 
> Member variables should always be private and prefixed with "m_".  Accessors may
> not be inline in the headers.  The organization of the members in a class should be
> roughly as follows:
> 
> public:
> public slots:
> protected:
> protected slots:
> signals:
> private: // member funtions
> private slots:
> private: // member variables
> 
> If there are no private slots there is no need for two private sections, however
> private functions and private variables should be clearly separated.
> 
> The implementations files -- .cpp files -- should follow (when possible) the
> same order of function declarations as the header files.
> 
> Virtual functions should always be marked as such even in derived classes where
> it is not strictly necessary.
> 
> ================================================================================
> Whitespace
> ================================================================================
> 
> Whitespace should be used liberally.  When blocks of code are logically distinct
> I tend to put a blank line between them.  This is difficult to explain
> systematically but after looking a bit at the current code organization this
> ideally will be somewhat clear.
> 
> Parenthesis should be padded by spaces on one side. This is easier to illustrate in
> an example:
> 
> void Client::foo() //correct
> void Client::foo3( int, int, int ) //correct
> 
> void Client::foo(int, int, int) //incorrect
> void Client::foo(int,int,int) //also incorrect
> 
> Operators should be padded by spaces in conditionals. Again, more examples to
> illustrate
> 
> if (foo==bar)
> m+=(n*2)-3;
> 
> should be:
> 
> if ( foo == bar )
> m += ( n * 2 ) - 3;
> 
> ================================================================================
> Pointer and Reference Operators
> ================================================================================
> 
> This one is pretty simple.  I prefer "Foo* f" to "Foo *f" in function signatures
> and declarations.  The same goes for "Foo& f" over "Foo &f".
> 
> ================================================================================
> 
> There are likely things missing here and I'll try to add them over time as I
> notice things that are often missed.  Please let me know if specific points are
> ambiguous.
> 
> Also, please note that since this library is based heavily off of Kopete's 
> libgroupwise library that the coding style in certain files may not match what's
> written in this document. Those files that don't match will be corrected eventually.
> 
> To make things easier on you, kate modelines are provided at the end of certain files
> to help enforce the coding style. If you're using the new C S&S Indenter that will be in
> KDE 3.4, I can provide a patch that will automatically implement the space padding around
> parenthesis. Please mail me so I can send it to you.
> 
> Matt Rogers <mattr at kde.org>
> 




More information about the KDevelop-devel mailing list