7MFQRKKB7Y54BZCCXAHA64BK7DRH54F7XCQTD2KAI3A5XXVS2YTQC
TUF73VRY7WQPF7VQKVBWHR2GPWFMAFRTVWT4L5WNX2SPLKRJLBCQC
B7LX4UQGKIMNDG6GIRQ2NXYBGRCFJ3KRYMRPS3S6GK2BY5V2HK4AC
TUQ2GTHHD6JCSWUDQE47N6LT74ERUP5G2L46BG57IPZPM7HHDERQC
PMBAMPBILIG73B7YUGBDXLEUDMEHIUBL3SO72WMWSRLFYNNB43EAC
IYB7IPPJU7FBTQHVU5JQRDKXRXSANGAPYMURMCI4LXTM6GK7FZJAC
ARAFRHKULUG66WDRPKJB4GL5WCMP4LD2TRTYO3RA2T3XZDRLXEUQC
CBUCBYTVFSAQ3GYIJBE7MGYCEQ3SPDYVJ3OZ4JM2QM4TM6H6GFSQC
5LKTNB6ODFPX45VJBT5H34WZFJBVWWYSCS2HRMKKJPPO3M2M75NAC
UXLO2KVDT7D5HJSSRWQHWAY2M6K57HWBKL45TDIXYJODEK57AB5AC
73PQOETUBJ2H5A6B3YW3KJ5C2TGOBUXXXSIVWPHCFVC5J3PNQGMQC
NYFLNSVVETUQ6ODIEMFKWUXPLWM2XQNSKLO5J7ZHCHP6L5JQLSEQC
7RVMAQLPBTL46TDHWJM4RSSB6PUZVLNRQW4CZ6FH6OMAVFCHCUMAC
SQWPGFUETQPYAW2VZRIDZWGXQN4GCMSPHYQ4PLWMESLDJTPACGXAC
F3AD6JXXPNTLIUXPX7CUPZCD53SLZFKCSSNVQDW6Q32BUIT2RNWAC
UYGSVBN7QR3YK6LTBMYIHDDVZPG25MBKPN2JLFDVCY3NEEPCQBAQC
4AZS4L6BP7TTCR5RUB36TG5PTEEIMSTGKB5IVB5QNHJVMRF7LMZQC
36IPNPISP2QHGNUC73DWTSC2HH6PKKMD7KBRWC2GABY5D5IZ5BLAC
WYULWETJ4VKT2UOTKJWJTBO7W2TDXUWMLCN7WT5543H7VQ57FGRQC
ISYGO74Y272CLCGQBX4SLPAREK5223WH74O5RMWD5I7GQSA7T2BAC
QEKU5M3OVXXVOSJUAXAL63VSYARZPXYMZRXPO73BVB574C4JDW7AC
W7EIQGVREWJ4PVVOITTPG2WXRO4IJFX3UDX2FAEM3DTPKFEYWZLAC
GHBCQL5FK2IN6TI2FR47ZLDEUFKXAWZWSZK64AMNDW7BVC7KQ5QAC
NF72HNAAXQFBQAEQ273EC3EMKOGJVEKJJIF7ZOPT6XD6MKRL7HJQC
S55XICBMLEIJNISCTFHJNSQ35TO7OHKF43X6LHH6JDTUOJMEYV2AC
6IUUMFCCMAVMHZH5DYEIACUZSFN4HIIZLIOTDLPYCYLWJVD2ZSFAC
YFZRGWH3QDMTJLPZEYGWBVUTI42GEBGKMUP7OCQOQIWTTETJXNLAC
UH3YXOLFMHJD6GJOW6P5BSHAM5XVV623ZBEYNKSF5YFFSGC7UWPAC
* Killer features. <!-- .element: class="fragment fade-in-then-semi-out" -->
* Hosting platform support. <!-- .element: class="fragment fade-in-then-semi-out" -->
* Open-source community support. <!-- .element: class="fragment fade-in-then-semi-out" -->
* The handicap of a head start. <!-- .element: class="fragment fade-in-then-semi-out" -->
* Killer features.
* Hosting platform support.
* Open-source community support.
* The handicap of a head start.
<li class="fragment fade-in-then-semi-out">No merges or rebases; applying a patch is like <code>git cherry-pick</code>.</li>
<li class="fragment fade-in-then-semi-out">No rebases, and merges are hardly needed; applying a patch is like <code>git cherry-pick</code>.</li>
Previous version of the talk I used v0.12, which was clearly labeled as a preview version for research purposes.
v1.0 uses a complete rewrite of the patch format, amongst other things.
A few months after the release of Pijul 0.12, a user reported a defect regarding the unrecording of patches that were previously involved in a conflict.
After some time a solution was found, but it meant that a new patch format was needed, along with a few new algorithms.
So, Pijul had to be rewritten from scratch to make it all work, which obviously resulted in a lot of breaking changes.
### Up and running
cd ~/development/fossil
mkdir demo
fossil new demo.repo
cd demo
fossil open ../demo.repo
dotnet new console -o .
touch Sample.java
public class Sample {}
fossil add .
fossil changes
fossil commit -m "Initial commit"
### Using the web interface
fossil ui
### Retrieving descendants of a checkin
fossil branch new feature current
/* JAVA */
vi Sample.java
// roll the die on stage!!
public static void main(String... args) {
System.out.println(random());
}
private static int random() {
// Chosen by fair dice roll; guaranteed to be random.
return 4;
}
static int Random() {
// chosen by fair dice roll; guaranteed to be random
return 2;
}
fossil add .
fossil commit -m "Implement random"
fossil ui
/* C-sharp */
static int BetterRandom() {
return new Random().Next(1, 6);
}
/* Java */
private static int randomThreadLocalRandom() {
return ThreadLocalRandom.current().nextInt(1, 7);
}
fossil add .
fossil commit -m "Implement a better random"
fossil ui
---
Anyway, apart from the fact that this slide causes your eyes to sting, it also shows that the Internet Explorer browser family was VERY dominant in 2005.
Anyway, apart from being ugly, this slide also shows that the Internet Explorer browser family was VERY dominant in 2005.
And I think we can discover them quickly by gathering information on the 'current big thing'.
And how 'the current big thing' became 'the big thing' in the first place.
And I think we can discover these variables quickly by gathering information on the 'current big thing'.
And how it became 'the big thing' in the first place.
* Distributed <!-- .element: class="fragment fade-in-then-semi-out" -->
* Free & open-source <!-- .element: class="fragment fade-in-then-semi-out" -->
* Fast <!-- .element: class="fragment fade-in-then-semi-out" -->
* Optimized for branching <!-- .element: class="fragment fade-in-then-semi-out" -->
* Distributed
* Free & open-source
* Fast
* Optimized for branching
Let's introduce another one, while we`re at it!
Your version control system may be supported by a hosting provider, but that doesn't necessarily mean that said hosting provider supports the open-source community.
Lots of hosting providers primarily offer private repositories.
Also, not all version control systems focus as much on supporting open-source development as Git does, for example.
Let's introduce another one, while we're at it!
Because not all version control systems focus as much on supporting open-source development as Git does.
After all, we all know there are only two types of people in the world.
1. Those who can extrapolate from incomplete data.
So, let's take some existing data and extrapolate it!
"Extrapolate from incomplete data"
So, let's do that!
Now at Info Support, besides doing consultancy work, I also teach a few courses.
We offer a wide range of courses.
And they exist mainly to get our junior colleagues up to speed with important concepts or products they'll need for their daily work.
They address base software development topics such as object-orientation, automated testing, continuous delivery, containerisation and so on.
And I also teach a few courses at Info Support, from time to time.
Our courses address basic software development topics such as object-orientation, automated testing, continuous delivery, containerisation and so on.
Among other things, we discuss the pros and cons of distributed version control systems and how they compare to the earlier version control system, like CVS and Subversion.
We discuss the pros and cons of distributed version control systems and how they compare to the earlier version control system, like CVS and Subversion.
Well, BitKeeper happened.
BitKeeper always was a proprietary piece of software, so a paid product.
But Linux got a special deal.
The deal is simple, the Linux community could use Bitkeeper for free in exchange for some metadata and an agreement for Linux contributors not to work on competing version control systems.
No other distributed version control systems existed at the time.
Eventually however, in March 2005, Bitkeeper informs teh Linux Kernel Development Team that they will have to start to pay to continue using Bitkeeper.
* BitKeeper changed its licensing model for Open Source users
* In a nutshell: the Linux community could no longer use BitKeeper for free
So **I** thought the year 2005 really stood out in this graphic.
Of course, that doesn't necessarily mean everyone thought so.
In fact, at the end of one particular course day, a student came to me with a question.
And her question proved that she had noticed an **entirely** different thing than I had.
She came to me after class and said: "Git is great and all that, but what's gonna be the **next** big thing?"
* The year 2005 caught my attention.
* But one of my students had noticed something entire different in this graphic.
At the end of one particular course day, this student came to me with a question.
And she said: "Git is great and all that, but what's gonna be the **next** big thing?"
"It looks like nothing has happend in Version Control world for over ten years!"
I told her:
* we're quite sure that distributed version control systems like Git and Mercurial will be around for much longer.
And what started out as finding the answer to a simple question turned into an investigation.
And the investigation turned into a conference talk.
Which is the one you're attending right now!
And the research got out of hand and eventually turned into this conference talk.
* VSCode, geopend op pad `/Users/hanno/development/talks/reveal.js-4.1.0/slide-decks/will-git-be-around-forever-slides/demo`
* Terminal ernaast in Split Screen-configuratie
* Tabje voor fossil
* Tabje voor pijul - verbonden met Docker-container
* Nieuwe tab voor Fossil UI
Now I have been a Java developer for over 14 years.
And at my first job, about 14 years ago, we did a revolutionary thing regarding version control.
At my first job, about 15 years ago, we did a revolutionary thing regarding version control.
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/java.iml" filepath="$PROJECT_DIR$/.idea/java.iml" />
</modules>
</component>
</project>
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" project-jdk-name="16" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/fossil/demo" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/pijul/demo" isTestSource="false" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<bytecodeTargetLevel target="12" />
</component>
<component name="JavacSettings">
<option name="ADDITIONAL_OPTIONS_OVERRIDE">
<module name="java" options="--add-modules java.base" />
</option>
</component>
</project>
<li class="fragment">Git's snapshotting might be too technical for the average Git user. <strong>So try Pijul for a change!</strong></li>
<li class="fragment">Git's snapshotting might be too technical for the average user. <strong>So try Pijul for a change!</strong></li>