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
Wwalker (talk | contribs)
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 22:22, 2 February 2023

Also see Completed Features Objectives ...

High DPI

Parent Main Node
Dependency Tree

Bugzilla query error

Array ( [type] => error [message] => http-bad-status [params] => Array ( [0] => 503 [1] => Service Unavailable ) ) 1


Children blocking Parent

Bugzilla query error

Array ( [type] => error [message] => http-bad-status [params] => Array ( [0] => 503 [1] => Service Unavailable ) ) 1


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

Bugzilla query error

Array ( [type] => error [message] => http-bad-status [params] => Array ( [0] => 503 [1] => Service Unavailable ) ) 1


Children blocking Parent

Bugzilla query error

Array ( [type] => error [message] => http-bad-status [params] => Array ( [0] => 503 [1] => Service Unavailable ) ) 1


All of Product graphui

Bugzilla query error

Array ( [type] => error [message] => http-bad-status [params] => Array ( [0] => 503 [1] => Service Unavailable ) ) 1


Jogl / Graph

Dependency Tree Graph Font Issues

All Jogl Graph

Bugzilla query error

Array ( [type] => error [message] => http-bad-status [params] => Array ( [0] => 503 [1] => Service Unavailable ) ) 1


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

Bugzilla query error

Array ( [type] => error [message] => http-bad-status [params] => Array ( [0] => 503 [1] => Service Unavailable ) ) 1


Vulkan

Bugzilla query error

Array ( [type] => error [message] => http-bad-status [params] => Array ( [0] => 503 [1] => Service Unavailable ) ) 1


Dependency Tree

Root Parent Entry

Bugzilla query error

Array ( [type] => error [message] => http-bad-status [params] => Array ( [0] => 503 [1] => Service Unavailable ) ) 1


Misc

Bugzilla query error

Array ( [type] => error [message] => http-bad-status [params] => Array ( [0] => 503 [1] => Service Unavailable ) ) 1