Open XAL Project Architecture

Similar documents
Thomas Pelaia II, Ph.D. XAL Workshop 2012 December 13, 2012 Managed by UT-Battelle for the Department of Energy

CS 390 Software Engineering Lecture 5 More Git

Revision Control. An Introduction Using Git 1/15

Continuous Integration (CI) with Jenkins

XAL Status Report Spring, 2008

Directory structure and development environment set up

CS314 Software Engineering Configuration Management

Belle II - Git migration

Visualizing Git Workflows. A visual guide to 539 workflows

CS 390 Software Engineering Lecture 4 - Git

Version control system (VCS)

Django MFA Documentation

2 Initialize a git repository on your machine, add a README file, commit and push

Technology Background Development environment, Skeleton and Libraries

TangeloHub Documentation

Lab Objective. Lab Assignment. Downloads and Installation

GETTING TO KNOW GIT: PART II JUSTIN ELLIOTT PENN STATE UNIVERSITY

LPF Training Handbook!

Software Development I

Git Resolve Conflict Using Mine Command Line

Technology Background Development environment, Skeleton and Libraries

Tizen/Artik IoT Practice Part 4 Open Source Development

Guide to Install J Meter

How to get started using the JSL

Revision Control. How can 4. Slides #4 CMPT 276 Dr. B. Fraser. Local Topology Simplified. Git Basics. Revision Control:

About SJTUG. SJTU *nix User Group SJTU Joyful Techie User Group

GIT FOR SYSTEM ADMINS JUSTIN ELLIOTT PENN STATE UNIVERSITY

Version Control with GIT

<put document name here> 1/13

Rubix Documentation. Release Qubole

Git for Subversion users

Git tips. Some tips to use Git.

Modeling and Simulation with SST and OCCAM

Kardia / Centrallix VM Appliance Quick Reference

Packaging, automation, Continuous Integration

Version Control Systems

This assignment requires that you complete the following tasks (in no particular order).

Git tutorial. Katie Osterried C2SM. October 22, 2015

1. Which of these Git client commands creates a copy of the repository and a working directory in the client s workspace. (Choose one.

Git, the magical version control

Distributed Version Control

Introduction to Git. Database Systems DataLab, CS, NTHU Spring, 2018

git-flow Documentation

GIT. CS 490MT/5555, Spring 2017, Yongjie Zheng

MOOSE-Based Application Development on GitLab

Submitting your Work using GIT

chatterbot-weather Documentation

Outline The three W s Overview of gits structure Using git Final stuff. Git. A fast distributed revision control system

CS 261 Recitation 1 Compiling C on UNIX


Getting Started with Cisco UCS Director Open Automation

Documentation External Synchronization FirstSpirit

Github/Git Primer. Tyler Hague

Versioning with git. Moritz August Git/Bash/Python-Course for MPE. Moritz August Versioning with Git

News from Git in Eclipse. Matthias Sohn (SAP)

Version Control with Git

Managing Network Configurations with Git and GitLab

Git. A fast distributed revision control system. Nils Moschüring PhD Student (LMU)

The Old World. Have you ever had to collaborate on a project by

Object Oriented Programming. Week 1 Part 2 Git and egit

Version Control: Gitting Started

Version Control. Collaborating with git. Tim Frasier

GUIDE TO MAKE A REAL CONTRIBUTION TO AN OPEN SOURCE PROJECT 1. 1

vpp-firstcut Documentation

1. Git. Robert Snapp

CSCI 2132: Software Development. Norbert Zeh. Faculty of Computer Science Dalhousie University. Subversion (and Git) Winter 2019

Con$nuous Integra$on Development Environment. Kovács Gábor

Version control CSE 403

Tools. SWE 432, Fall Design and Implementation of Software for the Web

CS 520: VCS and Git. Intermediate Topics Ben Kushigian

Version control CSE 403

What is Maven? Apache Maven is a software project management and comprehension tool (build, test, packaging, reporting, site, deploy).

Red Hat JBoss Web Server 3.1

License. Introduction to Version Control with Git. Local Version Control Systems. Why Use Version Control?

KTH Royal Institute of Technology SEMINAR 2-29 March Simone Stefani -

Git. CSCI 5828: Foundations of Software Engineering Lecture 02a 08/27/2015

USING GIT FOR AUTOMATION AND COLLABORATION JUSTIN ELLIOTT - MATT HANSEN PENN STATE UNIVERSITY

Version Control System - Git. zswu

Python Project Example Documentation

Please see the docs for latest release in 1.99.* Some of the information below might be outdated

An Introduction to Eclipse Che Lets build a custom cloud IDE. October 2015 Tyler Jewell, Eclipse Che Project

Lab Exercise Git: A distributed version control system

How To Guide Using and Developing Custom Phases in IKAN ALM

Introduction to Version Control with Git

Software Development. Using GIT. Pr. Olivier Gruber. Laboratoire d'informatique de Grenoble Université de Grenoble-Alpes

TPS Documentation. Release Thomas Roten

G E T T I N G S TA R T E D W I T H G I T

I Got My Mojo Workin'

Git Introduction CS 400. February 11, 2018

What is version control? (discuss) Who has used version control? Favorite VCS? Uses of version control (read)

Git. A Distributed Version Control System. Carlos García Campos

CS Homework 8. Deadline. Purpose. Problem 1. Problem 2. CS Homework 8 p. 1

Software Revision Control for MASS. Git Installation / Configuration / Use

BUILD AND DEPLOY SOA PROJECTS FROM DEVELOPER CLOUD SERVICE TO ORACLE SOA CLOUD SERVICE

Lab 5 Exercise Build and continuous integration tools

GETTING STARTED WITH. Michael Lessard Senior Solutions Architect June 2017

What s NetBeans? Like Eclipse:

AgileSCM Release 4.1. AgileSCM Release 4.0. AgileSCM Release 3.2. New Features. Bug Fixes. New Features. Bug Fixes

Working in Teams CS 520 Theory and Practice of Software Engineering Fall 2018

Git. Presenter: Haotao (Eric) Lai Contact:

Transcription:

Thomas Pelaia II, Ph.D. Open XAL Meeting November 14, 2013

Motivation Common Core is too large Need support for Site Specific Extensions and Plugins Need mechanism for assembling and sharing a project Site specific applications, services, extensions and plugins IDE Configuration Identity Preservation and Independence

Goals New features Support Extensions and Plugins Smaller Common Core Mechanism for assembling and sharing projects Maintain Simple Command Line Build Clean layout

Primary Constructs Construct Description Application Launched by user, Graphical Interface Service Core Extension Plugin Runs continuously, headless, includes extension Common Open XAL library Optional addition to the Core, Core has no dependency One of each type of plugin is required by Core at runtime

Extension May depend on core, extensions and plugins Core has no dependency on extensions Apps and Services may depend on extensions May include libraries, resources and source code Libraries should be completely wrapped (e.g. jmdns) Two types Pure Service

Pure Extension Placed under top level extensions directory Package prefix: xal.extension.<extension-name> Several existing packages became extensions All extension package names changed Some packages also got reorganized Applications modified due to package changes

Service Extension Associated with a service A service s protocol is an extension A service s other supporting code may be an extension Placed at extensions directory under its service s directory Package prefix: xal.service.<service-name>

Plugin May depend on core, extensions and plugins Core has runtime only dependency on plugin families Apps and Services may depend directly on plugins May include libraries, resources and source code Libraries should be completely wrapped (e.g. jca, caj) Two types Solitary Family Member

Solitary Plugin Only one plugin for a given family may be included Core references a plugin family class to be implemented by just one plugin (e.g. channel factory) Two source code package prefixes to supply xal.<core package tree> xal.plugin.<plugin-name> Example JCA Plugin Virtual Accelerator changed to use plugin instead of underlying CAJ calls

Family Member Plugin Multiple plugins for a given family may be included Core references a plugin family indirectly through configuration files (e.g. database configuration) Only one source code package prefix to supply xal.plugin.<plugin-name> Database Adaptor Plugins oracle, mysql change database config file for adaptor class matching new package name

Build Phases and Spaces Service... Core Extensions Service Extensions Plugins Application...

Project Layout apps build config core extensions plugins scripts services test

Project Layout - Core apps build config lib core extensions resources plugins scripts src services test test

Project Layout - Core apps ca build model config core lib sim extensions resources smf plugins scripts src xal tools services test test XalException.java

Project Layout - Extensions apps application build bricks config core extensions plugins scripts services test extlatgen fit orbit scan service solver widgets

Project Layout - Extensions apps build application bricks resources src config core extensions plugins scripts services test extlatgen fit orbit scan service solver widgets

Project Layout - Extensions apps application build bricks src config core extensions plugins scripts services test extlatgen fit orbit scan service solver widgets

Project Layout - Extensions apps application build bricks config core extensions plugins scripts services test extlatgen fit orbit scan service solver widgets lib src

Project Layout - Plugins apps build config core extensions plugins jca mysql scripts services oracle test Readme.html

Project Layout - Plugins apps build lib config core jca ca extensions plugins mysql src xal scripts plugin services oracle test Readme.html

Project Layout - Plugins apps build ChannelFactoryPlugin.java lib config core jca ca extensions plugins mysql src xal scripts plugin services oracle test Readme.html

Project Layout - Plugins apps build config jca core extensions plugins mysql src xal plugin mysql scripts services oracle xal plugin src oracle test Readme.html

Project Layout - Services apps build config core extensions common.xml plugins scripts pvlogger services test worker

Project Layout - Services apps build config core extensions common.xml plugins scripts services test pvlogger worker extension src

Ant Build System Changes New intermediates build subdirectory Build jars renamed products Single shared library combining core, extensions and plugins Javadoc - entire shared library jar-resources target for each build file constructing corresponding resources.jar intermediate JUnit libraries moved from core/test to top level test

Build Directory Hierarchy Build dist doc intermediates products

Build Directory Hierarchy - Products Build dist apps doc lib intermediates scripts products services

Build Directory Hierarchy - Intermediates apps Build dist core doc extensions intermediates services products shared

Code Sharing Goals Share common core, applications, services, extensions and plugins Pick and choose among other components Add site specific components Maintain reference base for certifying code and quick start

Code Sharing Proposal Git Subtree seems well suited Each component may reside in its own branch and repository Better history management Easier task distribution Easily push and pull components Complete projects including IDE support can also be maintained

Git Subtree Mechanism Normal Git Repository (nothing special) Commands push/pull specified subdirectory files and commits to/from another repository and branch Branch commits truncated appropriate to subtree

Common Git Subtree Commands Add files and commits to the specified path from the specified repository branch: git subtree add -P <path> <repository> <branch> Pull files and commits to the specified path from the specified repository branch: git subtree pull -P <path> <repository> <branch> Push files and commits at the specified path to the specified repository branch: git subtree push -P <path> <repository> <branch> Reference: https://github.com/git/git/blob/master/contrib/subtree/git-subtree.txt

Generic Open XAL Git Subtrees Project Base Core Extensions Extension A Extension B Plugins Plugin A Plugin B Apps App A App B Services Service A Service B

Current Repository Modules Type Repository Prefix Examples Comment Project project xcode IDE Specific Base openxal Ant based Core core Stable, Common Extension extension application, bricks, extlatgen, fit, orbit, scan, service, solver, widgets Plugin plugin jca, mysql, oracle Application app bricks, dbbrowser, extlatgenerator, knobs, launcher, mtv, opticseditor, opticsswitcher, orbitcorrect, pvhistogram, pvlogger, scan1d, scan2d, scope, virtualaccelerator, xyzcorrelator Site specific additions Service service pvlogger, worker

Code Sharing Workflow Example Clone Existing Project # clone the existing project with the default components git clone ssh://yourid@git.code.sf.net/p/xaldev/project.xcode openxal-xcode # work on a new branch git checkout -b site.sns.master Directory Structure: Open XAL.xcodeproj openxal Open XAL Base utils Supporting Xcode Scripts

Code Sharing Workflow Example Add Energy Manager Application # define remote to application for convenience git remote add sf.energymanager https://yourid@git.code.sf.net/p/xaldev/ app.energymanager # define remote to Open XAL base git remote add sf.openxal https://yourid@git.code.sf.net/p/xaldev/openxal # add the Energy Manager application from the remote to our project git subtree add -P openxal/apps/energymanager sf.energymanager master # Push our new branch back to the project repository git push origin site.sns.master # Push the base back to remote repository with a new branch: site.sns.master git subtree push -P openxal sf.openxal site.sns.master

Code Sharing Workflow Example Pushing Energy Manager Changes Back After making site specific changes to the Energy Manager application: # Push changes back to the project repository git push origin site.sns.master # Push the base back to remote repository with a new branch: site.sns.master git subtree push -P openxal sf.openxal site.sns.master # Push the application back to the repository with new branch: site.sns.master git subtree push -P openxal/apps/energymanager sf.energymanager site.sns.master Now there are three remote repositories with site specific branches: - project.xcode - openxal - app.energymanager

Future Related Tasks Complete support for unit tests beyond core Add a top level directory for samples (scripts and Java source code)