Tracing Software Build Processes to Uncover License Compliance InconsistenciesShane McIntosh
Open Source Software (OSS) components form the basis for many software systems. While the use of OSS components accelerates development, client systems must comply with the license terms of the OSS components that they use. Failure to do so exposes client system distributors to possible litigation from copyright holders. Yet despite the importance of license compliance, tool support for license compliance assessment is lacking. In this paper, we propose an approach to extract and analyze the Concrete Build Dependency Graph (CBDG) of a software system by tracing system calls that occur at build-time. Through a case study of seven open source systems, we show that the extracted CBDGs: (1) accurately classify sources as included in or excluded from deliverables with 88%-100% precision and 98%-100% recall, and (2) can uncover license compliance inconsistencies in real software systems - two of which prompted code fixes in the CUPS and FFmpeg systems.
Identifying Hotspots in the PostgreSQL Build ProcessShane McIntosh
Software developers rely on a fast and correct build system to compile their source code changes and produce modified deliverables for testing and deployment. The scale and complexity of the PostgreSQL build process makes build performance an important topic to discuss and address.
In this talk, we will introduce a new build performance analysis technique that identifies "build hotspots", i.e., files that are slow to rebuild (by analyzing a build dependency graph), yet change often (by analyzing version control history). We will discuss the identified hotspots in the 9.2.4 release of PostgreSQL.
This work presents the evaluation of the two classic workstealing algorithms (FIFO and LIFO) together with a new proposed implementation based on the priority of tasks calculated using the longest path as a metric
Diapositivas de la charla dada por la gente de uno21.com.ar (@luke_ar y @matitanio) en la UP, el día 21/08/2012. Próximamente en otras universidades :)
Tracing Software Build Processes to Uncover License Compliance InconsistenciesShane McIntosh
Open Source Software (OSS) components form the basis for many software systems. While the use of OSS components accelerates development, client systems must comply with the license terms of the OSS components that they use. Failure to do so exposes client system distributors to possible litigation from copyright holders. Yet despite the importance of license compliance, tool support for license compliance assessment is lacking. In this paper, we propose an approach to extract and analyze the Concrete Build Dependency Graph (CBDG) of a software system by tracing system calls that occur at build-time. Through a case study of seven open source systems, we show that the extracted CBDGs: (1) accurately classify sources as included in or excluded from deliverables with 88%-100% precision and 98%-100% recall, and (2) can uncover license compliance inconsistencies in real software systems - two of which prompted code fixes in the CUPS and FFmpeg systems.
Identifying Hotspots in the PostgreSQL Build ProcessShane McIntosh
Software developers rely on a fast and correct build system to compile their source code changes and produce modified deliverables for testing and deployment. The scale and complexity of the PostgreSQL build process makes build performance an important topic to discuss and address.
In this talk, we will introduce a new build performance analysis technique that identifies "build hotspots", i.e., files that are slow to rebuild (by analyzing a build dependency graph), yet change often (by analyzing version control history). We will discuss the identified hotspots in the 9.2.4 release of PostgreSQL.
This work presents the evaluation of the two classic workstealing algorithms (FIFO and LIFO) together with a new proposed implementation based on the priority of tasks calculated using the longest path as a metric
Diapositivas de la charla dada por la gente de uno21.com.ar (@luke_ar y @matitanio) en la UP, el día 21/08/2012. Próximamente en otras universidades :)
Working with Git – a simple introduction for those used to working with a VCS like Subversion. Explains concepts and shows examples. Feel free to steal slides for your own purposes.
Git and github - Verson Control for the Modern DeveloperJohn Stevenson
An introduction to Git and Github, tools for distributed version control that give an easy to use and highly collaborative approach to version code and configuration.
One of the most important benefits of automated testing is to ensure a fast and safe code refactoring to evolve our system architecture. The main problem is how to write tests that are easy to write, easy to follow and not time consuming during development nor execution time. In this session, we are going to explore some powerful Java testing libraries that will help you write better (unit) tests focusing on the main Unicorns architecture challenges such as validating microservices endpoints, remote calls to other microservices or just asynchronous/reactive code.
Working with Git – a simple introduction for those used to working with a VCS like Subversion. Explains concepts and shows examples. Feel free to steal slides for your own purposes.
Git and github - Verson Control for the Modern DeveloperJohn Stevenson
An introduction to Git and Github, tools for distributed version control that give an easy to use and highly collaborative approach to version code and configuration.
One of the most important benefits of automated testing is to ensure a fast and safe code refactoring to evolve our system architecture. The main problem is how to write tests that are easy to write, easy to follow and not time consuming during development nor execution time. In this session, we are going to explore some powerful Java testing libraries that will help you write better (unit) tests focusing on the main Unicorns architecture challenges such as validating microservices endpoints, remote calls to other microservices or just asynchronous/reactive code.
La presentación adjunta incluye un breve resumen de la evolución del papel y rol en sociedad de la mujer venezolana, entre fines del siglo XIX y mediados del siglo XX. Se tomó en cuenta la promulgación del voto universal, directo y secreto en 1947, y cómo este hecho influyó en la vida la mujer de la época.
La presentazione di Marco Ieva e di Cristina Ziliani dell'Osservatorio Fedeltà UniPR alla XVI Edizione del Convegno Osservatorio Fedeltà "Loyalty Disruption: Emotion, Big Data & New Players", tenutosi venerdì 21 ottobre 2016.
Translation and Transcription Process | Medical Transcription Service Company amar519
Translation and Transcription Process System information. Medical Transcription Service Company. Affordable transcription and accurate translation services
Nicola Iarocci - Git stories from the front line - Codemotion Milan 2017Codemotion
In the years spent on the front line managing open source projects and applications developed by distributed teams, I've managed to gather quite a few Git stories from the trenches. In this practically oriented talk, I will share some patterns and practices I have collected while on the front. We will first go through some useful git aliases, then touch on topics such as the various git branching models, long-running branches, conflict management, the rewriting of project history, etcetera. Oh and yes, the (in)famous Git rebase will be covered too.
Matthew McCullough of GitHub presented on why Java developers have so many reasons to explore Git and Git, including productivity gains, easy OSS contributions, the eGit Eclipse plugin, and JGit, the underlying Java cleanroom implementation that powers https://android.googlesource.com.
Delivered on June 9, 2012
Każdy developer zna Gita lub przynajmniej słyszał o nim. Oferuje on wiele możliwości, które pozwalają na tworzenie pełnej historii kodu w projekcie. Aby jednak historia była przyjazna i przejrzysta, dobrze jest stosować kilka zasad podczas korzystania z Gita. W czasie prezentacji przedstawię te zasady i omówię kilka sposobów na efektywne wykorzystanie tego systemu kontroli wersji do trzymania historii "w ryzach".
Kazdy developer zna Gita lub przynajmniej slyszal o nim. Oferuje on wiele mozliwosci, które pozwalaja na tworzenie pelnej historii kodu w projekcie. Aby jednak historia byla przyjazna i przejrzysta, dobrze jest stosowac kilka zasad podczas korzystania z Gita. W czasie prezentacji przedstawie te zasady i omówie kilka sposobów na efektywne wykorzystanie tego systemu kontroli wersji do trzymania historii "w ryzach".
Git is a version control system. We can look at it from that high level. Git is a content tracking system. Some teachers advise us to look at it from that lowered elevation. But I will take you to the very bottom. The floor. The code. The algorithms. The directed acyclic graph of hashed bit sequences made efficient through LZW compression and deferred garbage collection determined by node reachability via hash relationships.
“But why?”, you may ask. “Why go this deep?”" Git is a tool that works so well for so many. It mystically corrects anticipated `merge` conflicts. It’s “where did code come from” results from `blame` are impressive. The ability to re-write history through `rebase` is awesome. The globally unique identifier nature of a hash-produced ref is revolutionary.
Uber-geeks are magic-slayers. We want and need to know precisely how things work. Like a hard 50 push-up workout, this study will make working with Git at the daily developer level a fraction of the effort — like a mere ten push-ups. Join Matthew McCullough of GitHub and let’s dig into the guts of Git.
Delivered on June 17, 2012
Git, the widely popular version control tool that just about everyone who works on the web seems to use, is powerful, scalable, flexible. . .and difficult to learn. If you’ve used Git for any amount of time, you’ve probably gotten yourself into some confusing, frustrating, or downright terrifying situations. But don’t panic. You are not alone. Katie Sylor-Miller explains how to avoid getting into Git messes in the first place, demonstrating how the fundamental structures in Git actually work under the hood and sharing best practices, workflows, and tools that will keep your commits in order and reduce the panic caused by merge conflicts. Katie then shows you how to leverage Git’s powerful features to save yourself when everything seems to go wrong.
Training: Day Two - Eclipse, Git, MavenArtur Ventura
This is the second in our four part training sessions introducing FenixEdu development for new collaborators.
In this second session, we introduce some of the tools used in FenixEdu development, Eclipse, Git and Maven
Most people understand the basics of git. Creating a repository, branching, merging... those are all pretty simple tasks. Part of the power of git resides in its ability to actually manipulate the history of a repository and clean things up, remove things that should not have been there, and do detective work. Let's spin up our time machine and mess around with the past.
Dynamic programming for machine learning: Hidden Markov ModelsAvik Das
Dynamic programming turns up in many machine learning algorithms, maybe because dynamic programming excels at solving problems involving "non-local" information. I explore one technique used in machine learning, Hidden Markov Models, and how dynamic programming is used when applying this technique. Then, I'll show a few real-world examples where Hidden Markov Models are used.
Visual programming has been confined to a 2D world for decades, but with virtual reality, we can see code the way our brains think: in 3D.
Today, it's hard to understand how different pieces of a single codebase fit together. IDEs excel at showing one piece of code at a time, and static analysis tools only help so much. At Primitive, we're rethinking the problem by putting *all* of your code in a 3D environment for you to explore. This exercises your natural pattern recognization abilities and engages your spatial memory. Retention and recall of information learned is improved. The effect is amplified when the environment is shared with teammates locally, and around the globe.
If we then bring in data captured by executing the code, we can show patterns: what parts of the codebase are active, and which code calls which other code. Together, this data can be woven into a story telling us how the code functions. We will show how our visualization enables this storytelling.
With the ability to rapidly make sense of complex, dynamic code, software teams can improve their productivity with a few simple practices:
- Adopting a training protocol, making use of virtual reality to expedite ramp-up time.
- Sharing knowledge of code with teammates using 3D visualizations.
- Frequently visualizing your own changes in the context of the larger application, making sure new changes fit the existing architecture.
asm.js allows developers to run native applications on the web at nearly native speeds. This talk explores how this is possible and how you can take advantage of it.
Sepia: How LinkedIn Mobile Made Integration Testing Fast and Reliable in Node.jsAvik Das
LinkedIn Mobile runs a node.js server powering clients on three platforms: iPhone, Android and mobile web. The server aggregates data from downstream services using HTTP, services such as Voldemort data stores and rest.li web services. At first, emulating a client and exercising the server API made sense to validate the server. As the integration test suite expanded to over 200 tests, and the number of developers grew, the test suite became too slow and unreliable to depend on. The downstream HTTP requests incurred network latencies and were subject to the health of the downstream services. This talk walks through how LinkedIn is addressing the challenges of scaling a complex testing infrastructure in order to release quality code, and how we developed a open-source tool called sepia to help other companies do the same.
29. TREE
blob 5b1d3 README
tree 03e78 lib
tree cdc8b test
blob cba0a test.py
blob 911e7 xdiff BLOB
Lorem ipsum dolor
sit amet,
consectetur
adipiscing elit.
Morbi efficitur ex
ex, ac lobortis
velit scelerisque
BLOB
Lorem ipsum dolor
sit amet,
consectetur
adipiscing elit.
Morbi efficitur ex
ex, ac lobortis
velit scelerisque
BLOB
Lorem ipsum dolor
sit amet,
consectetur
adipiscing elit.
Morbi efficitur ex
ex, ac lobortis
velit scelerisque
TREE
blob 5b1d3 README
tree 03e78 lib
tree cdc8b test
blob cba0a test.py
blob 911e7 xdiff
TREE
blob 5b1d3 README
tree 03e78 lib
tree cdc8b test
blob cba0a test.py
blob 911e7 xdiff
30. TREE
blob 5b1d3 README
tree 03e78 lib
tree cdc8b test
blob cba0a test.py
blob 911e7 xdiff BLOB
Lorem ipsum dolor
sit amet,
consectetur
adipiscing elit.
Morbi efficitur ex
ex, ac lobortis
velit scelerisque
BLOB
Lorem ipsum dolor
sit amet,
consectetur
adipiscing elit.
Morbi efficitur ex
ex, ac lobortis
velit scelerisque
BLOB
Lorem ipsum dolor
sit amet,
consectetur
adipiscing elit.
Morbi efficitur ex
ex, ac lobortis
velit scelerisque
TREE
blob 5b1d3 README
tree 03e78 lib
tree cdc8b test
blob cba0a test.py
blob 911e7 xdiff
TREE
blob 5b1d3 README
tree 03e78 lib
tree cdc8b test
blob cba0a test.py
blob 911e7 xdiff
ac72efa71e90424bdb41dc795609d572ddd88643
33. COMMIT
tree ac72e
parent 84ce1
author Avik Das
committer Avik Das
Commit message
COMMIT
tree ac72e
parent 84ce1
author Avik Das
committer Avik Das
Commit message
34. COMMIT
tree ac72e
parent 84ce1
author Avik Das
committer Avik Das
Commit message
COMMIT
tree ac72e
parent 84ce1
author Avik Das
committer Avik Das
Commit message
TREE
blob 5b1d3 README
tree 03e78 lib
tree cdc8b test
blob cba0a test.py
blob 911e7 xdiff
35. COMMIT
tree ac72e
parent 84ce1
author Avik Das
committer Avik Das
Commit message
COMMIT
tree ac72e
parent 84ce1
author Avik Das
committer Avik Das
Commit message
TREE
blob 5b1d3 README
tree 03e78 lib
tree cdc8b test
blob cba0a test.py
blob 911e7 xdiff
3f34c01a210400daf86c479b243fe50078c279c1
49. A B
git clone <url>
git pull
origin/master
master
HEAD
C
50. A B
git clone <url>
git pull
git checkout -b mine
origin/master
master
HEAD
C
mine
51. A B
git clone <url>
git pull
git checkout -b mine
git commit
origin/master
master
HEAD
C
mine
X
52. A B
git clone <url>
git pull
git checkout -b mine
git commit
git commit
origin/master
master
HEAD
C
mine
X Y
53. A B
git clone <url>
git pull
git checkout -b mine
git commit
git commit
git checkout master
origin/master
master
C
mine
X Y
HEAD
54. A B
git clone <url>
git pull
git checkout -b mine
git commit
git commit
git checkout master
git pull
origin/mastermaster
C
mine
X Y
HEAD
D E
55. A B
git clone <url>
git pull
git checkout -b mine
git commit
git commit
git checkout master
git pull
git checkout mine
origin/mastermaster
C
mine
X Y
D E
HEAD
56. A B
git clone <url>
git pull
git checkout -b mine
git commit
git commit
git checkout master
git pull
git checkout mine
git merge master
origin/mastermaster
C
X Y
D E
M
mine HEAD
57. A B
git clone <url>
git pull
git checkout -b mine
git commit
git commit
git checkout master
git pull
git checkout mine
git merge master
git commit
origin/mastermaster
C
X Y
D E
M Z
mine HEAD
58. A B
git clone <url>
git pull
git checkout -b mine
git commit
git commit
git checkout master
git pull
git checkout mine
origin/mastermaster
C
mine
X Y
D E
HEAD
59. A B
git clone <url>
git pull
git checkout -b mine
git commit
git commit
git checkout master
git pull
git checkout mine
git rebase master
origin/mastermaster
C
X Y
D E
X’
mine
Y’
HEAD
60. A B
git clone <url>
git pull
git checkout -b mine
git commit
git commit
git checkout master
git pull
git checkout mine
git rebase master
git commit
origin/mastermaster
C
X Y
D E
X’ Y’
mine
Z
HEAD
61. A B
git clone <url>
git pull
git checkout -b mine
git commit
git commit
git checkout master
git pull
git checkout mine
git rebase master
git commit
origin/mastermaster
C
X Y
D E
X’ Y’
mine
Z
HEADOnly reachable by SHA1
64. A B
master
C1 C2 C3 C4 C5
mine
Main changes, split upover two WIP commits
65. A B
master
C1 C2 C3 C4 C5
mine
Main changes, split upover two WIP commits
Needs some
minor touch ups
66. A B
master
C1 C2 C3 C4 C5
mine
Main changes, split upover two WIP commits
Needs some
minor touch ups
Not actually
needed anymore
67. A B
master
C1 C2 C3 C4 C5
mine
Main changes, split upover two WIP commits
Needs some
minor touch ups
Commit message
needs work
Not actually
needed anymore
68. A B
master
C1 C2
git rebase -i master
C3 C4 C5
mine
Main changes, split upover two WIP commits
Needs some
minor touch ups
Commit message
needs work
Not actually
needed anymore
69. pick 8af53d3 main feature WIP
pick 76d8150 Refactor
pick dd69f0c main feature WIP 2
pick 974b13e On second thought, not needed
pick 508fe0d Build on top of refactor
70. pick 8af53d3 main feature WIP
pick 76d8150 Refactor
pick dd69f0c main feature WIP 2
pick 974b13e On second thought, not needed
pick 508fe0d Build on top of refactor
71. pick 8af53d3 main feature WIP
pick 76d8150 Refactor
pick dd69f0c main feature WIP 2
pick 508fe0d Build on top of refactor
72. pick 8af53d3 main feature WIP
pick 76d8150 Refactor
pick dd69f0c main feature WIP 2
pick 508fe0d Build on top of refactor
73. pick 8af53d3 main feature WIP
pick dd69f0c main feature WIP 2
pick 76d8150 Refactor
pick 508fe0d Build on top of refactor
74. pick 8af53d3 main feature WIP
squash dd69f0c main feature WIP 2
pick 76d8150 Refactor
pick 508fe0d Build on top of refactor
75. pick 8af53d3 main feature WIP
squash dd69f0c main feature WIP 2
edit 76d8150 Refactor
pick 508fe0d Build on top of refactor
76. pick 8af53d3 main feature WIP
squash dd69f0c main feature WIP 2
edit 76d8150 Refactor
reword 508fe0d Build on top of refactor
77. # This is a combination of 2 commits
# The first commit's message is:
main feature WIP
# This is the 2nd commit's message:
main feature WIP
# Please enter the commit message for your changes.
SQUASH