Contributing a new feature or fix and SW Tracking Report Feature Objectives Overview: Difference between pages

From JogampWiki
(Difference between pages)
Jump to navigation Jump to search
No edit summary
 
 
Line 1: Line 1:
= Overview =
Also see [[Completed Features Objectives]] ...


Contributing a new feature or bug fix is a bit more involved than just building JOGL. The main difference is that instead of pulling the code from the canonical repository on GitHub, you need to fork it, then pull it from your own repository. You create a local branch to hold your changes, then make your changes to it. Finally you push the change branch back to your repository, then create a "pull request" on GitHub for the lead developer to review.
== High DPI ==


You should already have built JOGL at least once before this, so you're sure Git and all the other tools are set up and working correctly.
;Parent Main Node
: [{{SERVER}}/bugzilla/showdependencytree.cgi?id=1373&hide_resolved=0 Dependency Tree]
<bugzilla>
    {
        "id":["1373"],
        "include_fields":"id,version,product,component,priority,severity,status,summary"
    }
</bugzilla>


= Create a free GitHub account =
;Children blocking Parent
<bugzilla>
    {
        "blocks":["1373"],
        "include_fields":"id,version,product,component,priority,severity,status,summary"
    }
</bugzilla>


Go to http://github.com/ and create a free GitHub account. We use GitHub's infrastructure to share code between developers and manage pull requests.
= Graph =


= Generate new (or use existing) SSH keys =
== Graph UI ==


You'll use these keys to access your GitHub code repositories.
''Graph UI'' is meant to be an immersive UI within the 3D scene including text and UI objects,
including user interaction.


* To generate keys, see http://help.github.com/msysgit-key-setup/.
This would allow an application to utilize one viewport or window,
* If you already have RSA keys in an .ssh directory, you can just enter one of them into GitHub.
exposing the scene including the UI w/o the need for any external toolkit.
* To test, type "ssh git@github.com" and enter your passphrase at the prompt. It should say "You've successfully authenticated, but GitHub does not provide shell access. Connection to github.com closed."


= Set your username and email in Git global settings =
Think of an integrated QT or OpenJFX in your 2D/3D application.


This is needed so your changes to the code will be attributed to you correctly.
Early examples from 2012 are available in these videos around the [https://youtu.be/7mBi7psP7VM?t=165 2:45 minute mark]
and here [https://youtu.be/4gWStKCioi8?t=16 at the 16s mark].


* Open a shell
;Parent Main Node
* Type this: git config --global user.name "Your Name"
: [{{SERVER}}/bugzilla/showdependencytree.cgi?id=803&hide_resolved=0 Dependency Tree]
* Type this: git config --global user.email "someone@wherever.com"
: [{{SERVER}}/bugzilla/buglist.cgi?bug_status=UNCONFIRMED&bug_status=CONFIRMED&bug_status=IN_PROGRESS&bug_status=RESOLVED&bug_status=VERIFIED&columnlist=product%2Ccomponent%2Cassigned_to%2Cbug_status%2Cresolution%2Cversion%2Cshort_desc%2Cchangeddate&component=core&component=Plugin&list_id=2265&product=GraphUI&query_format=advanced&resolution=---&resolution=FIXED&resolution=INVALID&resolution=WONTFIX&resolution=DUPLICATE&resolution=WORKSFORME&resolution=MOVED All GraphUI]
<bugzilla>
    {
        "id":["803"],
        "include_fields":"id,version,product,component,priority,severity,status,summary"
    }
</bugzilla>


;Children blocking Parent
<bugzilla>
    {
        "blocks":["803"],
        "include_fields":"id,version,product,component,priority,severity,status,summary"
    }
</bugzilla>


You can check the current values of these settings by typing "git config --global user.name" and "git config --global user.email".
;All of Product ''graphui''
<bugzilla>
    {
        "product":"graphui",
        "include_fields":"id,version,product,component,priority,severity,status,summary"
    }
</bugzilla>


= Fork the gluegen and jogl projects on GitHub =
== Jogl / Graph ==


This creates your initial copies of the code repositories, and gives you a place to push your change branches to.
[{{SERVER}}/bugzilla/showdependencytree.cgi?id=1064&hide_resolved=0 Dependency Tree Graph Font Issues]


* See http://help.github.com/forking/ for instructions
[{{SERVER}}/bugzilla/buglist.cgi?bug_status=UNCONFIRMED&bug_status=CONFIRMED&bug_status=IN_PROGRESS&bug_status=RESOLVED&bug_status=VERIFIED&columnlist=product%2Ccomponent%2Cassigned_to%2Cbug_status%2Cresolution%2Cversion%2Cshort_desc%2Cchangeddate&component=graph&list_id=2264&product=Jogl&query_format=advanced&resolution=---&resolution=FIXED&resolution=INVALID&resolution=WONTFIX&resolution=DUPLICATE&resolution=WORKSFORME&resolution=MOVED All Jogl Graph]
* Log into GitHub
* Go to https://github.com/sgothel/gluegen, press the "Fork" button
* Go to https://github.com/sgothel/jogl, press the "Fork" button


= Clone gluegen and jogl locally from your forks =
<bugzilla>
    {
        "product":"jogl",
        "component":"graph",
        "include_fields":"id,version,product,component,priority,severity,status,summary"
    }
</bugzilla>


This creates your local working copy of the code.
= OpenJFX =


* Open a new shell and cd to where you want your repositories
[https://jogamp.org/bugzilla//show_bug.cgi?id=607#c20 Bug report 607] describes different ways to either
* Type these commands (they'll require your SSH passphrase)
* enhance external rendering via JOGL into an OpenJFX UI elements, or
** To get gluegen: git clone git@github.com:YourGitHubName/gluegen.git gluegen
* to replace OpenJFX's Glass w/ NEWT and Prism's OpenGL coding with JOGL
** To get jogl: git clone git@github.com:YourGitHubName/jogl.git jogl


= Build the projects =
= NEWT =


This works just like the build process discussed in [[Building JOGL on the command line|"Building JOGL on the command line"]].
* [{{SERVER}}/bugzilla/showdependencytree.cgi?id=807&hide_resolved=0 Dependency Tree NEWT Input Devices]
* [{{SERVER}}/bugzilla/showdependencytree.cgi?id=814&hide_resolved=0 Dependency Tree NEWT Pointer Event]


* cd to gluegen/make, type "ant clean", then type "ant"
<bugzilla>
* cd to jogl/make, type "ant clean", then type "ant"
    {
        "product":["newt","jinput"],
        "version":["2.5.0","3.0.0","tbd"],
        "cf_type":"FEATURE",
        "include_fields":"id,version,product,component,priority,severity,status,summary"
    }
</bugzilla>


= Create a bug report at https://jogamp.org/bugzilla/ =
= Vulkan  =


This gives you a bug number, which is good to name your code branches with.
<bugzilla>
    {
        "component":"vulkan",
        "cf_type":"FEATURE",
        "include_fields":"id,version,product,component,priority,severity,status,summary"
    }
</bugzilla>


NOTE: There's currently a bug the Bugzilla "Log In" link. You can click it and type your login and password, but it doesn't log you in.
= [[SCC Overview|Source Certification Contract (SCC)]] =


So instead of clicking the "Log In" link, click the "New" link, and log in on the page that says "I need a legitimate login and password to continue". You'll need to type your full email address, then your password.
[{{SERVER}}/bugzilla/showdependencytree.cgi?id=1368&hide_resolved=0 Dependency Tree]


= Create branch for fix =
[{{SERVER}}/bugzilla/show_bug.cgi?id=1368 Root Parent Entry]


* cd jogl
<bugzilla>
* git branch bug_xxx
    {
* git checkout bug_xxx
        "id":["1368", "1369"],
        "include_fields":"id,version,product,component,priority,severity,status,summary"
    }
</bugzilla>


= Change files, test, and commit =
= Misc =


* git status (shows modified files)
<!-- bugzilla>
* git commit -a -v (commits all modified files, lets you type commit message)
    {
        "product"!=["graphui","newt"],
        "component"!=["graph","vulkan"],
        "version":["2.5.0","3.0.0","tbd"],
        "cf_type":"FEATURE",
        "include_fields":"id,version,product,component,priority,severity,status,summary"
    }
</bugzilla-->


= Push branch back to Github =
<bugzilla>
* git push origin bug_xxx
    {
 
        "version":["2.5.0","3.0.0","tbd"],
= Send pull request on Github =
        "cf_type":"FEATURE",
 
        "include_fields":"id,version,product,component,priority,severity,status,summary"
* Instructions on http://help.github.com/pull-requests/
    }
* Go to your project on Github
</bugzilla>
* Switch branch to bug_xxx
* Press "Pull Request" button
* Type comment, check diffs
* Press "Send pull request"  
 
= Wait for your pull request to be accepted =
 
This may take a while, depending on how busy the lead developer is. Also, the lead may ask you to change some aspects of your commits if they don't fit in with other code or don't work during regression testing.
 
When your pull request is accepted, update the bug status to "Resolved" on Bugzilla!

Revision as of 23:22, 2 February 2023

Also see Completed Features Objectives ...

High DPI

Parent Main Node
Dependency Tree
Full Query
ID Version Product Component Priority Severity Status Summary
1373 2.5.0 General generic P4 major VERIFIED Support High-DPI across Platforms and Modules

1 Total; 0 Open (0%); 0 Resolved (0%); 1 Verified (100%);


Children blocking Parent

No results.

0 Total; 0 Open (0%); 0 Resolved (0%); 0 Verified (0%);


Graph

Graph UI

Graph UI is meant to be an immersive UI within the 3D scene including text and UI objects, including user interaction.

This would allow an application to utilize one viewport or window, exposing the scene including the UI w/o the need for any external toolkit.

Think of an integrated QT or OpenJFX in your 2D/3D application.

Early examples from 2012 are available in these videos around the 2:45 minute mark and here at the 16s mark.

Parent Main Node
Dependency Tree
All GraphUI
Full Query
ID Version Product Component Priority Severity Status Summary
803 2.5.0 GraphUI Core --- enhancement RESOLVED Establish Graph-UI Core ..

1 Total; 0 Open (0%); 1 Resolved (100%); 0 Verified (0%);


Children blocking Parent
Full Query
ID Version Product Component Priority Severity Status Summary
801 2 Jogl graph --- enhancement RESOLVED Cleanup Graph API, Remove Redundancies.
802 2 Jogl graph --- enhancement RESOLVED Enhance Graph Performance w/ Text Rendering

2 Total; 0 Open (0%); 2 Resolved (100%); 0 Verified (0%);


All of Product graphui
Full Query
ID Version Product Component Priority Severity Status Summary
544 tbd GraphUI Core P3 enhancement UNCONFIRMED RFE for UI part of the graph package
803 2.5.0 GraphUI Core --- enhancement RESOLVED Establish Graph-UI Core ..
804 tbd GraphUI Plugin --- enhancement UNCONFIRMED Add SVG Input Specification (Curved Geometry, Object Interaction) to Graph-UI
805 2.6.0 GraphUI Core --- enhancement IN_PROGRESS Basic Graph-UI Widgets - I
1454 2.6.0 GraphUI Core P4 normal RESOLVED GraphUI Scene: Elevate active (selected) shape (add z-offset) and select (pick) in Z descending order
1456 2.6.0 GraphUI Core P4 normal RESOLVED GraphUI: Add CSS alike Layout for Group: GridLayout and BoxLayout
1457 2.6.0 GraphUI Core P4 normal RESOLVED GraphUI: Add AnimGroup, providing sets of custom animated Shapes
1458 2.6.0 GraphUI Core P4 normal RESOLVED GraphUI Z-Epsilon Support: Expose Z-Epsilon API in Scene and utilization in Button
1459 2.6.0 GraphUI Core P4 normal RESOLVED GraphUI Shape: Add active (pointer over/left) state and callback Listener
1460 2.6.0 GraphUI Core P4 normal RESOLVED GraphUI Shape: Allow keeping aspect-ratio at resize
1464 2.6.0 GraphUI Core P2 critical RESOLVED GraphUI Scene: Resolve Data Race Modding Z Position activating a shape and Arrays.sort(..)
1467 2.6.0 GraphUI Core P4 normal RESOLVED GraphUI: Don't de-activate a Shape if became active via 'mouseOver' (mouseDragged)
1483 tbd GraphUI Plugin P4 normal CONFIRMED Enhanced Graph-UI Elements - II
1489 2.6.0 GraphUI Core P1 critical RESOLVED GraphUI Group: Resolve Performance Regression in Scene.pickShape(): Drop invisible and clipped shapes
1490 2.6.0 GraphUI Core P1 critical RESOLVED GraphUI Group: Resolve Performance Issues with Shape Mv Transform -> PMVMatrix4f; Group/Scene's temp sorted arrays
1495 2.6.0 GraphUI Core P4 normal RESOLVED GraphUI Shape: Only updateMat() if marked dirty once in applyMatToMv() and getMat(*)
1496 2.6.0 GraphUI Core P4 normal RESOLVED GraphUI Shape: Allow markShapeDirty() and markStateDirty() to be lock free
1498 2.6.0 GraphUI Core P4 critical RESOLVED GraphUI: Fix Picking Traversal throughout Groups in Z-Descending Order, testing Children and fallback to Group if positive
1499 2.6.0 GraphUI Core P4 normal RESOLVED GraphUI MediaPlayer: Add Time-Code & optional Still-Images as mouse-over on time RangeSlider

19 Total; 4 Open (21.05%); 15 Resolved (78.95%); 0 Verified (0%);


Jogl / Graph

Dependency Tree Graph Font Issues

All Jogl Graph

No results.

0 Total; 0 Open (0%); 0 Resolved (0%); 0 Verified (0%);


OpenJFX

Bug report 607 describes different ways to either

  • enhance external rendering via JOGL into an OpenJFX UI elements, or
  • to replace OpenJFX's Glass w/ NEWT and Prism's OpenGL coding with JOGL

NEWT

Full Query
ID Version Product Component Priority Severity Status Summary
592 tbd Jinput core P5 enhancement IN_PROGRESS Migrate Jinput to JogAmp
595 tbd Newt core P5 enhancement CONFIRMED NEWT event propagation to Jinput
795 tbd Newt wayland --- enhancement CONFIRMED Add native Wayland Backend for NEWT
807 tbd Newt core --- enhancement UNCONFIRMED NEWT Input: Add support for more devices a.k.a (Accelerometer, GPS, Compass, Joystick ..)
808 tbd Newt core --- enhancement UNCONFIRMED NEWT Input: Add support for Gyroscope / Accelerometer Devices
809 tbd Newt core --- enhancement UNCONFIRMED NEWT Input: Add support for Compass Devices
812 tbd Newt core --- enhancement CONFIRMED Add USB Topology / Graph to query device location etc.
813 tbd Newt core --- enhancement CONFIRMED Allow InputDevice to be auto-assigned, e.g. via USB Topology (Monitor - Mouse/Keyboard)
814 tbd Newt core --- enhancement CONFIRMED Enhance PointerEvent / Deprecate MouseEvent
1178 tbd Newt embedded --- enhancement IN_PROGRESS Prevent dual mousepointers and improve raspberry pi xorg experience when using NEWT BCM VC IV on Raspberry Pi
1361 3.0.0 Newt core P4 normal CONFIRMED Remove Flickering when resizing a Newt Window

11 Total; 11 Open (100%); 0 Resolved (0%); 0 Verified (0%);


Vulkan

Full Query
ID Version Product Component Priority Severity Status Summary
1137 tbd Jogl vulkan --- enhancement CONFIRMED Add Support for Vulkan (group)
1138 tbd Jogl vulkan --- enhancement UNCONFIRMED Common Subset of OpenCL >= 2.1 / Vulkan Command API (Queue, Buffer) and Context
1139 tbd Jogl vulkan --- enhancement UNCONFIRMED Generalize high-level API GLContext, GLDrawable, GLAutoDrawable for Vulkan and OpenGL
1140 tbd Jogl vulkan --- enhancement UNCONFIRMED Add Support for SPIR-V >= 2.0 (group)

4 Total; 4 Open (100%); 0 Resolved (0%); 0 Verified (0%);


Source Certification Contract (SCC)

Dependency Tree

Root Parent Entry

No results.

0 Total; 0 Open (0%); 0 Resolved (0%); 0 Verified (0%);


Misc

No results.

0 Total; 0 Open (0%); 0 Resolved (0%); 0 Verified (0%);