:+1::tada: Thank you for your interest in contribuing to this stuff! :tada::+1:
The following is a set of guidelines for contributing to RME and its packages, which are hosted in the EDI Organization on GitHub. These are mostly guidelines, not rules. Use your best judgment, and feel free to propose changes to this document in a pull request.
What should I know before I get started?
This project and everyone participating in it is governed by the EDI Code of Conduct. By participating, you are expected to uphold this code.
RME is an General-Purpose Advanced OS that sticks to a microkernel approach. It focuses on multi-core scalability and many new features that you don't find in common operating systems. Also, it should not have package dependencies, except for the libraries that are provided by the manufacturer. If external libraries are needed for a specific project, it is the user's duty to add such packages to the system.
RME is not meant to compete with Linux or Windows. If you need a kernel that have very high performance and is very scalable, RME is your best choice.
Different from most operating systems, RME also supports MPU-based memory protection and some high-end microcontrollers. The access control is capability-based, and thus provides a better access control model when compared with Linux. Also, the RME kernel's IPC is very lightweight, very concise by design, and should have very high performance on most architectures.
Report the bugs as you come across them. Bugs are tracked as GitHub issues. Before creating bug reports, please check the list as you might find out that you don't need to create one. When you are creating a bug report, please include as many details as possible, because it can help to reproduce, locate and finally fix the bug.
Explain the problem and include additional details to help maintainers reproduce the problem:
Provide more context by answering these questions:
Include details about your configuration and environment:
This section guides you through submitting an enhancement suggestion for RME, including completely new features and minor improvements to existing functionality. Following these guidelines helps maintainers and the community understand your suggestion and find related suggestions .
Enhancement suggestions are tracked as GitHub issues. Create an issue on that repository and provide the following information:
:art:
when improving the format/structure of the code:racehorse:
when improving performance:non-potable_water:
when plugging memory leaks:memo:
when writing docs:penguin:
when fixing something on Linux or GNU toolchain:apple:
when fixing something on macOS or Clang/LLVM toolchain:checkered_flag:
when fixing something on Windows or manufacturer official toolchain:bug:
when fixing a bug:fire:
when removing code or files:green_heart:
when fixing the CI build:white_check_mark:
when adding tests:lock:
when dealing with reliability or formal proof:arrow_up:
when upgrading dependencies:arrow_down:
when downgrading dependencies:shirt:
when removing linter warningsa=b
instead of a = b
foo(a, b, c)
and foo(a,b,c)
is okay.(a==b)||(c==d)
instead of a==b||c==d
.A example C header file:
/******************************************************************************
Filename : <Filename>.h
Author : <Name>
Date : <DD/MM/YYYY>
Licence : LGPL v3+; see COPYING for details.
Description : <File description>
******************************************************************************/
/* Defines *******************************************************************/
#ifdef __HDR_DEFS__
#ifndef __<FILENAME>_H_DEFS__
#define __<FILENAME>_H_DEFS__
/*****************************************************************************/
<Place your defines here>
/*****************************************************************************/
/* __<FILENAME>_H_DEFS__ */
#endif
/* __HDR_DEFS__ */
#endif
/* End Defines ***************************************************************/
/* Structs *******************************************************************/
#ifdef __HDR_STRUCTS__
#ifndef __<FILENAME>_H_STRUCTS__
#define __<FILENAME>_H_STRUCTS__
/* Use defines in these headers */
#define __HDR_DEFS__
<Place external define import headers here>
#undef __HDR_DEFS__
/* We used structs in these headers */
<Place external struct import headers here>
/*****************************************************************************/
<Place struct definitions here>
/*****************************************************************************/
/* __<FILENAME>_H_STRUCTS__ */
#endif
/* __HDR_STRUCTS__ */
#endif
/* End Structs ***************************************************************/
/* Private Global Variables **************************************************/
#if(!(defined __HDR_DEFS__||defined __HDR_STRUCTS__))
#ifndef __<FILENAME>_MEMBERS__
#define __<FILENAME>_MEMBERS__
/* In this way we can use the data structures and definitions in the headers */
#define __HDR_DEFS__
<Place external define import headers here>
#undef __HDR_DEFS__
#define __HDR_STRUCTS__
<Place external struct import headers here>
#undef __HDR_STRUCTS__
/* If the header is not used in the public mode */
#ifndef __HDR_PUBLIC_MEMBERS__
/*****************************************************************************/
<Place private global variables here>
/*****************************************************************************/
/* End Private Global Variables **********************************************/
/* Private C Function Prototypes *********************************************/
/*****************************************************************************/
<Place private C function prototypes here>
/*****************************************************************************/
#define __EXTERN__
/* End Private C Function Prototypes *****************************************/
/* Public Global Variables ***************************************************/
/* __HDR_PUBLIC_MEMBERS__ */
#else
#define __EXTERN__ EXTERN
/* __HDR_PUBLIC_MEMBERS__ */
#endif
/*****************************************************************************/
<Place public global variables here>
/*****************************************************************************/
/* End Public Global Variables ***********************************************/
/* Public C Function Prototypes **********************************************/
/*****************************************************************************/
<Place public C function prototypes here>
/*****************************************************************************/
/* Undefine "__EXTERN__" to avoid redefinition */
#undef __EXTERN__
/* __<FILENAME>_MEMBERS__ */
#endif
/* !(defined __HDR_DEFS__||defined __HDR_STRUCTS__) */
#endif
/* End Public C Function Prototypes ******************************************/
/* End Of File ***************************************************************/
/* Copyright (C) Evo-Devo Instrum. All rights reserved ***********************/
An example C source file:
/******************************************************************************
Filename : <Filename>.c
Author : <Name>
Date : <DD/MM/YYYY>
Licence : LGPL v3+; see COPYING for details.
Description : <File description>
******************************************************************************/
/* Includes ******************************************************************/
#define __HDR_DEFS__
<Place the headers you wish to import defines here>
#undef __HDR_DEFS__
#define __HDR_STRUCTS__
<Place the headers you wish to import structs here>
#undef __HDR_STRUCTS__
/* Private include */
<Place the private headers here>
#define __HDR_PUBLIC_MEMBERS__
<Place the headers you wish to import globals here>
#undef __HDR_PUBLIC_MEMBERS__
/* End Includes **************************************************************/
/* Begin Function:<Name> ******************************************************
Description : <Description of the function>.
Input : <Type> <Argument> - <Explanation>.
Output : <Type> <Argument> - <Explanation>.
Return : <Type> - <Explanation>.
******************************************************************************/
<Type> <Name>(<Parameter-list>)
{
<Function body>
}
/* End Function:<Name> *******************************************************/
/* End Of File ***************************************************************/
/* Copyright (C) Evo-Devo Instrum. All rights reserved ***********************/
This CONTRIBUTING is adapted from the Atom project.
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。