Skip to content

Commit 41eccbe

Browse files
Autodesk's Open RV original contribution
1 parent 3ab997d commit 41eccbe

File tree

2,974 files changed

+719562
-1
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

2,974 files changed

+719562
-1
lines changed

.clang-format

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
---
2+
Language: Cpp
3+
AccessModifierOffset: -1
4+
AlignAfterOpenBracket: Align
5+
AlignConsecutiveAssignments: false
6+
AlignConsecutiveDeclarations: false
7+
AlignEscapedNewlinesLeft: true
8+
AlignOperands: true
9+
AlignTrailingComments: true
10+
AllowAllParametersOfDeclarationOnNextLine: true
11+
AllowShortBlocksOnASingleLine: false
12+
AllowShortCaseLabelsOnASingleLine: false
13+
AllowShortFunctionsOnASingleLine: Empty
14+
AllowShortIfStatementsOnASingleLine: true
15+
AllowShortLoopsOnASingleLine: true
16+
AlwaysBreakAfterDefinitionReturnType: None
17+
AlwaysBreakAfterReturnType: None
18+
AlwaysBreakBeforeMultilineStrings: true
19+
AlwaysBreakTemplateDeclarations: true
20+
BinPackArguments: true
21+
BinPackParameters: true
22+
BraceWrapping:
23+
AfterClass: true
24+
AfterControlStatement: true
25+
AfterEnum: true
26+
AfterFunction: true
27+
AfterNamespace: true
28+
AfterObjCDeclaration: true
29+
AfterStruct: true
30+
AfterUnion: false
31+
BeforeCatch: true
32+
BeforeElse: true
33+
IndentBraces: false
34+
BreakBeforeBinaryOperators: None
35+
BreakBeforeBraces: Allman
36+
BreakBeforeTernaryOperators: true
37+
BreakConstructorInitializersBeforeComma: false
38+
BreakAfterJavaFieldAnnotations: false
39+
BreakStringLiterals: true
40+
ColumnLimit: 80
41+
CommentPragmas: '^ IWYU pragma:'
42+
ConstructorInitializerAllOnOneLineOrOnePerLine: true
43+
ConstructorInitializerIndentWidth: 4
44+
ContinuationIndentWidth: 4
45+
Cpp11BracedListStyle: true
46+
DisableFormat: false
47+
ExperimentalAutoDetectBinPacking: false
48+
ForEachMacros: [ foreach, Q_FOREACH, BOOST_FOREACH ]
49+
IncludeCategories:
50+
- Regex: '^<.*\.h>'
51+
Priority: 1
52+
- Regex: '^<.*'
53+
Priority: 2
54+
- Regex: '.*'
55+
Priority: 3
56+
IncludeIsMainRegex: '([-_](test|unittest))?$'
57+
IndentCaseLabels: true
58+
IndentWidth: 2
59+
IndentWrappedFunctionNames: false
60+
JavaScriptQuotes: Leave
61+
JavaScriptWrapImports: true
62+
KeepEmptyLinesAtTheStartOfBlocks: false
63+
MacroBlockBegin: ''
64+
MacroBlockEnd: ''
65+
MaxEmptyLinesToKeep: 1
66+
NamespaceIndentation: All
67+
ObjCBlockIndentWidth: 2
68+
ObjCSpaceAfterProperty: false
69+
ObjCSpaceBeforeProtocolList: false
70+
PenaltyBreakBeforeFirstCallParameter: 1
71+
PenaltyBreakComment: 300
72+
PenaltyBreakFirstLessLess: 120
73+
PenaltyBreakString: 1000
74+
PenaltyExcessCharacter: 1000000
75+
PenaltyReturnTypeOnItsOwnLine: 200
76+
PointerAlignment: Left
77+
ReflowComments: true
78+
SortIncludes: false
79+
SpaceAfterCStyleCast: false
80+
SpaceBeforeAssignmentOperators: true
81+
SpaceBeforeParens: Never
82+
SpaceInEmptyParentheses: false
83+
SpacesBeforeTrailingComments: 2
84+
SpacesInAngles: false
85+
SpacesInContainerLiterals: true
86+
SpacesInCStyleCastParentheses: false
87+
SpacesInParentheses: true
88+
SpacesInSquareBrackets: false
89+
Standard: Auto
90+
TabWidth: 2
91+
UseTab: Never
92+
---
93+
Language: JavaScript
94+
DisableFormat: true

.gitattributes

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
*.jpg -crlf -diff -merge
2+
*.png -crlf -diff -merge
3+
*.exr -crlf -diff -merge
4+
*.dpx -crlf -diff -merge
5+
*.cin -crlf -diff -merge
6+
*.tiff -crlf -diff -merge
7+
*.tif -crlf -diff -merge
8+
*.eps -crlf -diff -merge
9+
*.nib -crlf -diff -merge
10+
*.nib -crlf -diff -merge
11+
*.pdf -crlf -diff -merge

.gitignore

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
**/.DS_Store
2+
3+
.vscode/**
4+
.idea/**
5+
6+
# Qt generated
7+
**/*.moc
8+
**/moc_*.cpp
9+
**/ui_*.h
10+
**/qrc_*.cpp
11+
**/*.qmlc
12+
**/*.pkg
13+
**/*.dmg
14+
15+
# Windows
16+
**/*.pdb
17+
**/*.idb
18+
19+
**/*.xcodeproj/
20+
21+
compile_commands.json
22+
23+
**/__pycache__
24+
**/*.pyc
25+
26+
cmake-*/*
27+
build/*
28+
_build/*

.gitmodules

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
[submodule "src/lib/files/WFObj"]
2+
path = src/lib/files/WFObj
3+
url = https://github.com/shotgunsoftware/openrv-WFObj.git
4+
[submodule "src/pub"]
5+
path = src/pub
6+
url = https://github.com/shotgunsoftware/openrv-pub.git
7+
[submodule "src/lib/oiio"]
8+
path = src/lib/oiio
9+
url = https://github.com/shotgunsoftware/openrv-oiio.git

.pre-commit-config.yaml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
repos:
2+
- repo: https://github.com/cheshirekow/cmake-format-precommit
3+
rev: v0.6.13
4+
hooks:
5+
- id: cmake-format
6+
7+
- repo: https://github.com/psf/black
8+
rev: 22.8.0
9+
hooks:
10+
- id: black
11+
language_version: python3.10

CMakeLists.txt

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
#
2+
# Copyright (C) 2022 Autodesk, Inc. All Rights Reserved.
3+
#
4+
# SPDX-License-Identifier: Apache-2.0
5+
#
6+
CMAKE_MINIMUM_REQUIRED(VERSION 3.24)
7+
8+
SET(CMAKE_CONFIGURATION_TYPES
9+
"Debug;Release"
10+
CACHE STRING "" FORCE
11+
)
12+
13+
IF(NOT CMAKE_BUILD_TYPE)
14+
SET(CMAKE_BUILD_TYPE
15+
"Debug"
16+
)
17+
ENDIF()
18+
19+
IF(CMAKE_BUILD_TYPE
20+
AND NOT CMAKE_BUILD_TYPE MATCHES "^(Debug|Release)$"
21+
)
22+
MESSAGE(FATAL_ERROR "Invalid value for CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}")
23+
ENDIF()
24+
25+
SET(CMAKE_BUILD_TYPE
26+
"${CMAKE_BUILD_TYPE}"
27+
CACHE STRING "CMake Build Type"
28+
)
29+
30+
MESSAGE(STATUS "Build type: ${CMAKE_BUILD_TYPE}")
31+
32+
# Specify our own CMake modules so we can include them right after.
33+
SET(CMAKE_MODULE_PATH
34+
${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake/defaults ${CMAKE_SOURCE_DIR}/cmake/dependencies ${CMAKE_SOURCE_DIR}/cmake/globals
35+
${CMAKE_SOURCE_DIR}/cmake/macros
36+
)
37+
38+
SET(CMAKE_OSX_DEPLOYMENT_TARGET
39+
"10.14"
40+
)
41+
INCLUDE(rv_version) # RV's build system global variables
42+
43+
PROJECT(
44+
open-rv
45+
VERSION ${RV_VERSION_STRING}
46+
LANGUAGES CXX C
47+
)
48+
49+
INCLUDE(rv_options) # RV's build options
50+
INCLUDE(rv_targets) # RV's build platform definitions
51+
INCLUDE(rv_globals) # RV's CMake-build global variables
52+
INCLUDE(rv_stage) # RV's local appplication packaging
53+
INCLUDE(CTest)
54+
55+
# The 'cxx_defaults' module will sets global C/C++ compiler defaults Note that variable such as 'CMAKE_CXX_COMPILER_ID' is only available after the 'project'
56+
# statement just above.
57+
INCLUDE(cxx_defaults)
58+
59+
# This should handle fetching or checking then compiling required 3rd party dependencies One can simple disable processing of a given dependency by simply
60+
# commenting out the relevant line. (macOS) /usr/local/Cellar/cmake/3.20.3/share/cmake/Modules/FetchContent.cmake
61+
INCLUDE(FetchContent) # once in the project to include the module
62+
INCLUDE(ExternalProject) # once in the project to include the module
63+
64+
# Force verbosity of the FETCHCONTENT function, thus outputting some progress rather than just stalling CMake. Fetching and expanding an archive takes some
65+
# time, as an indicator that something is actually happening, we'll force verbosity of the FETCHCONTENT function thus printing some minimal progress.
66+
SET(FETCHCONTENT_QUIET
67+
OFF
68+
)
69+
70+
ADD_SUBDIRECTORY(cmake/dependencies)
71+
72+
# RV's main code
73+
ADD_SUBDIRECTORY(src)
74+
ADD_SUBDIRECTORY(packages)
75+
76+
ADD_SUBDIRECTORY(cmake/install)

COMMITERS.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# Committers
2+
3+
This is a list of commiters for the Open RV project, sorted alphabetically by first name.
4+
5+
* Alain Compagnat ([compaga](https://github.com/compaga))
6+
* Bernard Laberge ([bernie-laberge](https://github.com/bernie-laberge))
7+
* Kerby Geffrard ([geffrak](https://github.com/geffrak))
8+
* Roger Nelson ([rogernelson](https://github.com/rogernelson))

CONTRIBUTING.md

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# Contributing
2+
3+
Thank you for your interest in contributing to Open RV. We are looking forward to collaborating with the community to evolve and improve Open RV.
4+
5+
## Project Roles and Responsibilities
6+
7+
Please read this document to learn how to contribute to Open RV.
8+
9+
Start by getting familiar with the [GOVERNANCE](GOVERNANCE.md) document. It details the rules and responsibilities for Contributors, Committers, and Technical Steering Committee members.
10+
11+
## Committers
12+
13+
The RV Open Source Project Committers are listed in alphabetical order, by first name, in [COMMITERS](COMMITERS.md)
14+
15+
## Contributor License Agreement
16+
17+
Before contributing code to Open RV source code, you must sign a Contributor License Agreement (CLA).
18+
19+
You will get the opportunity to sign the CLA when you create your first pull request: the Linux Foundation's EasyCLA system will guide you through the process of signing the CLA.
20+
21+
If you can't to use the EasyCLA system, you can always send a signed CLA to `[email protected]` (making sure to include your *github username*), and wait for confirmation that we've received it.
22+
23+
Here are the two possible CLAs:
24+
25+
There are two contribution agreement types, one for individuals contributing independently, and one for corporations who want to manage a list of contributors for their organization. Please review the documents in the EasyCLA portal to determine which is the right one for you.
26+
27+
## Coding Conventions
28+
29+
Please follow the coding conventions and style in each file and in each library when adding new files.
30+
31+
## Git Workflow
32+
33+
Follow instructions from the [README](README.md).

CONTRIBUTORS.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# Contributors
2+
3+
This is a list of the people who have contributed code to the Open RV project, sorted alphabetically by first name.
4+
5+
* Alain Compagnat ([compaga](https://github.com/compaga))
6+
* Bernard Laberge ([bernie-laberge](https://github.com/bernie-laberge))
7+
* Eric Desruisseaux ([eric-desruisseaux-adsk](https://github.com/eric-desruisseaux-adsk))
8+
* Guillaume Brossard ([guillaume-brossard](https://github.com/guillaume-brossard))
9+
* Ian Savoie ([savoiei](https://github.com/savoiei))
10+
* Kerby Geffrard ([geffrak](https://github.com/geffrak))
11+
* Martin Chesnay ([mchesnay](https://github.com/mchesnay))
12+
* Nicolas Montmarquette ([nmontmarquette](https://github.com/nmontmarquette))
13+
* Roger Nelson ([rogernelson](https://github.com/rogernelson))

GOVERNANCE.md

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
# Open RV Project Roles and Responsibilities
2+
3+
Open RV is a project of the Academy Software Foundation and relies on the ASWF governance policies, supported by the Linux Foundation.
4+
5+
Open RV is overseen by the Open Review Initiative but it has its own governance.
6+
7+
There are three primary project roles:
8+
9+
* [Contributors](#contributors) submit code to the project;
10+
* [Committers](#committers) approve code to be included into the project; and
11+
* [Technical Steering Committee](#technical-steering-committee) (TSC) provides overall high-level project guidance.
12+
13+
## Contributors
14+
15+
Open RV grows and thrives from assistance from Contributors. Contributors include anyone in the community who contributes code, documentation, or other technical artifacts that have been incorporated into the project's repository.
16+
Anyone can be a Contributor. You need no formal approval from the project, beyond the legal forms.
17+
18+
### How to Become a Contributor
19+
20+
* Review the coding standards to ensure your contribution is in line with the project's coding and styling guidelines.
21+
* Sign the Individual CLA, or if you are employed by an organization that might have any claim to IP you create, have your organization sign the Corporate CLA.
22+
* Submit your code as a PR with the appropriate DCO sign-off.
23+
24+
## Committers
25+
26+
Project Committers have merge access on the Open RV GitHub repository, or repositories underneath its control, and are responsible for approving submissions by Contributors.
27+
28+
### Committer Responsibilities
29+
30+
Typical activities of a Committer include:
31+
32+
* Helping users and novice contributors.
33+
* Ensuring a response to questions posted to the Open RV-dev developer mail list
34+
* Contributing code and documentation changes that improve the project.
35+
* Reviewing and commenting on issues and pull requests.
36+
* Ensuring that changes and new code meet acceptable standards and are in the long-term interest of the project.
37+
* Participation in working groups.
38+
* Merging pull requests.
39+
40+
### How to Become a Committer
41+
42+
Any member of the Open RV community (though typically an existing Committer or TSC member) may nominate an individual making significant and valuable contributions to the Open RV project to become a new Committer. To nominate a new Committer, open an issue in the Open RV repository, send mail to the TSC mail list, or raise the issue at a TSC meeting.
43+
The TSC may periodically review the Committer list to identify inactive Committers. Past Committers are typically given Emeritus status. Emeriti may request that the TSC restore them to active Committer status.
44+
45+
## Technical Steering Committee
46+
47+
The Technical Steering Committee (TSC) has final authority over this project. As defined in the project charter, TSC responsibilities include, but are not limited to:
48+
49+
* Coordinating technical direction of the Project.
50+
* Project governance and contribution policy.
51+
* GitHub repository administration.
52+
* Maintaining the list of additional Committers
53+
* Appointing representatives to work with other open source or open standards communities.
54+
* Discussions, seeking consensus, and where necessary, voting on technical matters relating to the code base that affect multiple projects.
55+
* Coordinating any marketing, events, or communications regarding the project.
56+
57+
Within the TSC are two elected leadership roles to be held by its members and voted on annually. Any TSC member can express interest in serving in a role, or nominate another member to serve. There are no term limits, and one person may hold multiple roles simultaneously. Should a TSC member resign from a leadership role before their term is complete, a successor shall be elected through the standard nomination and voting process to complete the remainder of the term.
58+
59+
The leadership roles are:
60+
61+
* Chair: This position acts as the project manager, organizing meetings and providing oversight to project administration.
62+
* Chief Architect: This position makes all the final calls on design and technical decisions, and is responsible for avoiding "design by committee" pitfalls.
63+
64+
The chair role is assumed to rotate annually (though there are no term limits, so the TSC may reelect an existing chair). The chief architect position should be a source of stability and coherent design vision, so the TSC is encouraged to choose an architect who can serve for many years and only change architects when it is necessary for the health of the project and its community.
65+
66+
At the time of election, the TSC will also agree upon which of these two leaders will serve as the Open RV representative for the term. This member represents the project at all ASWF ORI meetings.
67+
68+
### Current TSC Members
69+
70+
Current voting members of the TSC are:
71+
72+
* Chair and Open RV representative: Alain Compagnat ([compaga](https://github.com/compaga))
73+
* Chief architect: Bernard Laberge ([bernie-laberge](https://github.com/bernie-laberge))
74+
* Roger Nelson ([rogernelson](https://github.com/rogernelson))
75+
* [Name] To be filled
76+
* [Name] To be filled
77+
78+
### TSC Nomination and Succession
79+
80+
Any proposal for additional members of the TSC may be submitted by Committers, TSC members, or other major stakeholders of the Open RV community by opening an issue outlining their case or raising the issue at a TSC meeting. New TSC members are accepted or rejected by majority vote of the TSC.
81+
82+
If a TSC member is for an extended period not regularly participating or performing the responsibilities expected of TSC members, the TSC may by majority vote request an alternate TSC member be submitted by that organization, or remove the inactive member from the TSC.
83+
A voting member of the TSC may nominate a successor in the event that such voting member decides to leave the TSC, and the TSC, including the departing member, shall confirm or reject such nomination by a vote. In the event that the departing member's nomination for successor is rejected by vote of the TSC, the departing member shall be entitled to continue nominating successors until one such successor is confirmed by vote of the TSC. If the departing member fails or is unable to nominate a successor, the TSC may nominate one on the departing member's behalf.
84+
85+
TSC membership is presumed to be retained by the individual even if they change employers. The TSC may take action to ensure that organizational stakeholder representation not become severely disproportionate, for example by urging an organization that loses its sole TSC representative to nominate a new member, or to limit the total number of voting members from any one organization if too many members all move to the same organization.
86+
87+
### TSC Meetings
88+
89+
Any meetings of the TSC are intended to be open to the public, except where there is a reasonable need for privacy. The TSC meets regularly in a voice conference call, at a cadence deemed appropriate by the TSC. The TSC Chair moderates the meeting, or appoints another TSC member to moderate in his or her absence. Meetings may also be streamed online where appropriate; connection details will be posted to the Open RV-dev mail list in advance of the scheduled meeting.
90+
91+
Items are added to the TSC agenda which are considered contentious or are modifications of governance, contribution policy, TSC membership, or release process, in addition to topics involving the high-level technical direction of the project.
92+
93+
The intention of the agenda is not to approve or review all patches. That should happen continuously on GitHub and be handled by the larger group of Committers.
94+
95+
Any community member or Contributor can ask that something be reviewed by the TSC at the meeting by logging a GitHub issue. Any Committer, TSC member, or the meeting chair can bring the issue to the TSC's attention by applying the TSC label.
96+
97+
Prior to each TSC meeting, the meeting chair will share the agenda with members of the TSC. TSC members can also add items to the agenda at the beginning of each meeting. The meeting chair and the TSC cannot veto or remove items.
98+
99+
The TSC may invite additional persons to participate in a non-voting capacity.
100+
101+
The meeting chair is responsible for ensuring that minutes are taken and archived in the project repository.
102+
103+
Due to the challenges of scheduling a global meeting with participants in several time zones, the TSC will seek to resolve as many agenda items as possible outside of meetings on the public mailing list.

0 commit comments

Comments
 (0)