WEBVTT

1
00:00:04.955 --> 00:00:05.975
<00:00:04.955>So <00:00:05.414>hello <00:00:05.872>everybody.

2
00:00:06.025 --> 00:00:08.455
<00:00:06.025>First <00:00:06.152>of <00:00:06.279>all, <00:00:06.406>I'm <00:00:06.534>very <00:00:06.661>happy <00:00:06.788>to <00:00:06.915>be <00:00:07.043>with <00:00:07.170>you <00:00:07.297>here <00:00:07.425>today.

3
00:00:08.965 --> 00:00:11.775
<00:00:08.965>It's <00:00:09.105>one <00:00:09.245>of <00:00:09.385>the <00:00:09.525>rare <00:00:09.665>Android <00:00:09.805>talks, <00:00:09.945>I <00:00:10.084>think <00:00:10.225>mobile <00:00:10.365>talks

4
00:00:11.775 --> 00:00:13.055
<00:00:11.775>that <00:00:12.005>we <00:00:12.235>are <00:00:12.466>developers <00:00:12.696>in <00:00:12.927>general.

5
00:00:13.395 --> 00:00:15.215
<00:00:13.395>So <00:00:13.628>very, <00:00:13.861>very <00:00:14.094>happy <00:00:14.328>to <00:00:14.561>be <00:00:14.795>here.

6
00:00:15.995 --> 00:00:18.495
<00:00:15.995>So <00:00:16.150>what <00:00:16.306>I'm <00:00:16.461>going <00:00:16.617>to <00:00:16.772>talk <00:00:16.928>about <00:00:17.083>today <00:00:17.239>is <00:00:17.395>mainly

7
00:00:18.495 --> 00:00:20.055
<00:00:18.495>architectural <00:00:19.195>related <00:00:19.895>topics

8
00:00:20.245 --> 00:00:22.175
<00:00:20.245>because <00:00:20.595>I <00:00:20.945>really <00:00:21.295>personally <00:00:21.645>believe

9
00:00:22.175 --> 00:00:23.695
<00:00:22.175>that <00:00:22.631>architecture <00:00:23.087>in <00:00:23.543>Android

10
00:00:23.755 --> 00:00:26.295
<00:00:23.755>or <00:00:23.910>in <00:00:24.066>mobile <00:00:24.221>in <00:00:24.377>general <00:00:24.532>is <00:00:24.688>very, <00:00:24.843>very <00:00:24.999>underrated <00:00:25.154>topic

11
00:00:26.315 --> 00:00:28.815
<00:00:26.315>to <00:00:26.490>talk <00:00:26.665>about <00:00:26.840>and <00:00:27.015>I <00:00:27.190>think <00:00:27.365>it's <00:00:27.540>very <00:00:27.715>important,

12
00:00:28.815 --> 00:00:30.095
<00:00:28.815>especially <00:00:29.199>for <00:00:29.583>big <00:00:29.967>projects.

13
00:00:33.245 --> 00:00:35.945
<00:00:33.245>So <00:00:33.478>I <00:00:33.711>am <00:00:33.945>mainly <00:00:34.178>concerned <00:00:34.411>about <00:00:34.644>architecture,

14
00:00:35.945 --> 00:00:39.265
<00:00:35.945>but <00:00:36.085>you <00:00:36.225>can <00:00:36.365>also <00:00:36.505>find <00:00:36.645>me <00:00:36.785>sometimes <00:00:36.925>play <00:00:37.065>paddle <00:00:37.205>uh, <00:00:37.345>squash.

15
00:00:39.485 --> 00:00:40.905
<00:00:39.485>And <00:00:39.740>I <00:00:39.996>like <00:00:40.251>also <00:00:40.507>techno <00:00:40.763>music

16
00:00:40.905 --> 00:00:42.585
<00:00:40.905>that's <00:00:41.138>a <00:00:41.371>little <00:00:41.605>bit <00:00:41.838>hint <00:00:42.071>about <00:00:42.305>myself.

17
00:00:43.805 --> 00:00:46.505
<00:00:43.805>And <00:00:43.960>the <00:00:44.116>first <00:00:44.271>thing <00:00:44.427>we <00:00:44.582>start <00:00:44.738>with <00:00:44.893>is <00:00:45.049>everyday <00:00:45.205>story

18
00:00:46.565 --> 00:00:48.465
<00:00:46.565>of <00:00:46.845>any <00:00:47.125>Android <00:00:47.405>developer, <00:00:47.684>at <00:00:47.964>least

19
00:00:49.325 --> 00:00:51.505
<00:00:49.325>how <00:00:49.558>do <00:00:49.791>gradle <00:00:50.025>builds <00:00:50.258>get <00:00:50.491>us <00:00:50.725>closer.

20
00:00:52.525 --> 00:00:55.265
<00:00:52.525>So <00:00:52.725>it <00:00:52.925>happens <00:00:53.125>really <00:00:53.324>on <00:00:53.525>a <00:00:53.725>daily <00:00:53.925>basis.

21
00:00:55.405 --> 00:00:57.545
<00:00:55.405>Uh, <00:00:55.638>you <00:00:55.871>try <00:00:56.105>to <00:00:56.338>think <00:00:56.571>the <00:00:56.805>project,

22
00:00:58.055 --> 00:01:00.545
<00:00:58.055>then <00:00:58.230>the <00:00:58.405>belt <00:00:58.580>failed <00:00:58.755>while <00:00:58.930>you <00:00:59.105>just <00:00:59.280>sink <00:00:59.455>it.

23
00:01:00.545 --> 00:01:02.225
<00:01:00.545>Two <00:01:00.778>hours <00:01:01.011>ago, <00:01:01.245>you <00:01:01.478>didn't <00:01:01.711>change <00:01:01.945>anything

24
00:01:02.245 --> 00:01:03.585
<00:01:02.245>and <00:01:02.546>it <00:01:02.848>was <00:01:03.149>working <00:01:03.451>perfectly.

25
00:01:04.365 --> 00:01:07.625
<00:01:04.364>You <00:01:04.492>start <00:01:04.619>maybe <00:01:04.746>to <00:01:04.874>like, <00:01:05.001>okay, <00:01:05.128>I <00:01:05.255>don't <00:01:05.383>know <00:01:05.510>what's <00:01:05.637>going <00:01:05.765>on,

26
00:01:07.965 --> 00:01:09.545
<00:01:07.965>but <00:01:08.198>I <00:01:08.431>will <00:01:08.665>do <00:01:08.898>some <00:01:09.131>random <00:01:09.365>stuff.

27
00:01:10.115 --> 00:01:11.225
<00:01:10.115>Maybe <00:01:10.448>it'll <00:01:10.780>work <00:01:11.113>out.

28
00:01:11.525 --> 00:01:13.825
<00:01:11.525>Mainly <00:01:11.700>you <00:01:11.875>clean <00:01:12.050>the <00:01:12.225>belt <00:01:12.400>and <00:01:12.575>you <00:01:12.750>sink <00:01:12.925>again

29
00:01:14.525 --> 00:01:17.065
<00:01:14.525>and <00:01:14.805>finally, <00:01:15.085>sometimes <00:01:15.365>it <00:01:15.645>just <00:01:15.925>works.

30
00:01:18.055 --> 00:01:22.325
<00:01:18.055>Sometimes <00:01:18.335>this <00:01:18.615>is <00:01:18.895>a <00:01:19.175>really <00:01:19.455>scenario

31
00:01:22.325 --> 00:01:23.605
<00:01:22.325>that <00:01:22.555>happens <00:01:22.785>to <00:01:23.016>us <00:01:23.246>every <00:01:23.477>day.

32
00:01:23.665 --> 00:01:25.685
<00:01:23.664>So <00:01:23.865>I <00:01:24.065>think <00:01:24.264>because <00:01:24.464>we <00:01:24.664>all <00:01:24.865>suffer <00:01:25.065>together

33
00:01:25.685 --> 00:01:28.685
<00:01:25.685>with <00:01:25.885>gradual <00:01:26.085>builds, <00:01:26.285>that <00:01:26.485>makes <00:01:26.685>lots <00:01:26.885>of <00:01:27.085>sense.

34
00:01:28.785 --> 00:01:31.045
<00:01:28.785>And <00:01:29.018>also <00:01:29.251>once <00:01:29.485>a <00:01:29.718>wise <00:01:29.951>man <00:01:30.185>said,

35
00:01:31.355 --> 00:01:34.605
<00:01:31.355>nothing <00:01:31.555>brings <00:01:31.755>developers <00:01:31.955>closer <00:01:32.155>than <00:01:32.355>slow, <00:01:32.555>gradual <00:01:32.755>build,

36
00:01:35.295 --> 00:01:38.085
<00:01:35.295>which <00:01:35.761>unfortunately <00:01:36.228>the <00:01:36.695>case,

37
00:01:38.385 --> 00:01:40.005
<00:01:38.384>but <00:01:38.585>why <00:01:38.785>the <00:01:38.984>belts <00:01:39.184>are <00:01:39.384>slow <00:01:39.585>in <00:01:39.785>general.

38
00:01:40.145 --> 00:01:44.005
<00:01:40.145>And <00:01:40.285>that's <00:01:40.425>the <00:01:40.565>reason <00:01:40.705>why <00:01:40.845>we <00:01:40.985>are <00:01:41.125>here <00:01:41.265>now <00:01:41.405>about, <00:01:41.545>like

39
00:01:44.005 --> 00:01:46.565
<00:01:44.005>to <00:01:44.205>talk <00:01:44.405>about <00:01:44.604>this <00:01:44.804>mainly <00:01:45.005>gradle <00:01:45.205>being <00:01:45.405>gradle.

40
00:01:46.565 --> 00:01:47.765
<00:01:46.565>So <00:01:46.745>this <00:01:46.925>we <00:01:47.105>cannot <00:01:47.285>solve <00:01:47.465>a <00:01:47.645>lot,

41
00:01:48.905 --> 00:01:52.725
<00:01:48.905>but <00:01:49.080>we <00:01:49.255>can <00:01:49.430>also <00:01:49.605>solve <00:01:49.780>our <00:01:49.955>modular <00:01:50.130>modular <00:01:50.305>project.

42
00:01:55.105 --> 00:01:58.085
<00:01:55.104>So <00:01:55.260>here <00:01:55.416>we <00:01:55.571>talk <00:01:55.727>about <00:01:55.882>the <00:01:56.038>modularization <00:01:56.193>in <00:01:56.349>general, <00:01:56.505>how

43
00:01:58.085 --> 00:01:59.205
<00:01:58.085>to <00:01:58.589>approach <00:01:59.093>modularization.

44
00:01:59.205 --> 00:02:01.005
<00:01:59.205>This <00:01:59.360>is <00:01:59.516>gonna <00:01:59.671>be <00:01:59.827>like <00:01:59.982>five <00:02:00.138>minutes <00:02:00.293>we <00:02:00.449>go <00:02:00.605>fast.

45
00:02:01.585 --> 00:02:04.325
<00:02:01.585>And <00:02:01.759>then <00:02:01.934>how <00:02:02.110>to <00:02:02.285>optimize <00:02:02.460>the <00:02:02.634>relations <00:02:02.809>between <00:02:02.985>modules

46
00:02:05.105 --> 00:02:08.805
<00:02:05.105>and <00:02:05.280>then <00:02:05.455>a <00:02:05.630>little <00:02:05.805>bit <00:02:05.980>advanced <00:02:06.155>gradle, <00:02:06.330>uh, <00:02:06.505>modularization,

47
00:02:09.185 --> 00:02:11.765
<00:02:09.185>mainly <00:02:09.384>gradle <00:02:09.585>plugins, <00:02:09.785>version <00:02:09.985>catalogs <00:02:10.185>and <00:02:10.384>so <00:02:10.585>on.

48
00:02:14.145 --> 00:02:17.765
<00:02:14.145>So <00:02:14.345>any <00:02:14.545>Android <00:02:14.745>project <00:02:14.945>consists <00:02:15.145>of <00:02:15.345>some <00:02:15.545>files,

49
00:02:17.905 --> 00:02:21.205
<00:02:17.905>the <00:02:18.185>source <00:02:18.465>code <00:02:18.745>resources <00:02:19.025>manifest <00:02:19.305>greater

50
00:02:21.205 --> 00:02:22.485
<00:02:21.204>build <00:02:21.493>files <00:02:21.781>and <00:02:22.069>so <00:02:22.357>on.

51
00:02:23.065 --> 00:02:24.805
<00:02:23.065>And <00:02:23.345>the <00:02:23.625>modularization <00:02:23.905>I <00:02:24.185>is <00:02:24.465>just

52
00:02:24.805 --> 00:02:28.005
<00:02:24.805>to <00:02:24.980>split <00:02:25.155>this <00:02:25.330>project <00:02:25.505>into <00:02:25.680>smaller <00:02:25.855>projects, <00:02:26.030>sub <00:02:26.205>projects

53
00:02:28.075 --> 00:02:30.465
<00:02:28.075>that <00:02:28.308>each <00:02:28.541>of <00:02:28.774>them <00:02:29.008>can <00:02:29.241>work <00:02:29.475>along.

54
00:02:30.465 --> 00:02:32.945
<00:02:30.465>Like <00:02:30.592>you <00:02:30.719>have <00:02:30.846>the <00:02:30.974>app <00:02:31.101>module, <00:02:31.228>you <00:02:31.355>have <00:02:31.483>the <00:02:31.610>bank <00:02:31.737>module, <00:02:31.865>each

55
00:02:32.945 --> 00:02:34.065
<00:02:32.945>of <00:02:33.281>them <00:02:33.617>can <00:02:33.953>compile.

56
00:02:34.805 --> 00:02:37.065
<00:02:34.805>And <00:02:35.085>then <00:02:35.365>when <00:02:35.645>you <00:02:35.925>have <00:02:36.205>subprojects

57
00:02:37.125 --> 00:02:39.865
<00:02:37.125>and <00:02:37.300>you <00:02:37.475>have <00:02:37.650>smaller <00:02:37.825>components, <00:02:38.000>you <00:02:38.175>tell <00:02:38.350>Gradle, <00:02:38.525>okay,

58
00:02:39.895 --> 00:02:41.825
<00:02:39.895>compile <00:02:40.095>this <00:02:40.295>for <00:02:40.495>me, <00:02:40.695>compile <00:02:40.895>that <00:02:41.095>for <00:02:41.295>me.

59
00:02:42.045 --> 00:02:43.465
<00:02:42.045>It <00:02:42.227>depends <00:02:42.410>on <00:02:42.592>the <00:02:42.775>code <00:02:42.957>you <00:02:43.140>change <00:02:43.323>it

60
00:02:43.465 --> 00:02:44.825
<00:02:43.465>and <00:02:43.771>what <00:02:44.077>you <00:02:44.382>didn't <00:02:44.689>change.

61
00:02:44.885 --> 00:02:46.785
<00:02:44.885>And <00:02:45.165>then <00:02:45.445>gradle <00:02:45.725>have <00:02:46.005>incremental <00:02:46.285>builds.

62
00:02:47.485 --> 00:02:50.665
<00:02:47.485>So <00:02:47.660>it <00:02:47.835>doesn't <00:02:48.010>matter <00:02:48.185>where <00:02:48.360>really <00:02:48.535>these <00:02:48.710>subprojects <00:02:48.885>live

63
00:02:50.665 --> 00:02:54.585
<00:02:50.665>because <00:02:50.945>it <00:02:51.225>can <00:02:51.505>be <00:02:51.785>mainly <00:02:52.065>monolith,

64
00:02:54.835 --> 00:02:56.985
<00:02:54.835>which <00:02:55.010>is <00:02:55.185>like <00:02:55.360>when <00:02:55.535>you <00:02:55.710>start <00:02:55.885>any <00:02:56.060>Android <00:02:56.235>project,

65
00:02:57.005 --> 00:02:59.325
<00:02:57.005>you <00:02:57.180>have <00:02:57.355>a <00:02:57.530>monolith <00:02:57.704>that <00:02:57.880>has <00:02:58.055>all <00:02:58.230>your <00:02:58.405>uh,

66
00:02:59.325 --> 00:03:01.045
<00:02:59.325>source <00:02:59.605>code <00:02:59.885>modules <00:03:00.165>and <00:03:00.445>so <00:03:00.725>on.

67
00:03:01.705 --> 00:03:04.045
<00:03:01.705>It <00:03:01.938>can <00:03:02.171>be <00:03:02.405>of <00:03:02.638>course <00:03:02.871>a <00:03:03.105>monorepo

68
00:03:04.195 --> 00:03:06.925
<00:03:04.195>that <00:03:04.370>has <00:03:04.545>different <00:03:04.720>projects <00:03:04.894>in <00:03:05.070>the <00:03:05.245>same <00:03:05.420>repository <00:03:05.595>get

69
00:03:07.125 --> 00:03:09.565
<00:03:07.125>repository, <00:03:07.325>but <00:03:07.525>in <00:03:07.725>the <00:03:07.925>end <00:03:08.125>they're <00:03:08.325>separate <00:03:08.525>projects.

70
00:03:10.105 --> 00:03:12.965
<00:03:10.105>Or <00:03:10.244>you <00:03:10.385>can <00:03:10.524>have <00:03:10.665>the <00:03:10.804>modules <00:03:10.945>separated <00:03:11.084>already <00:03:11.225>in <00:03:11.364>poly <00:03:11.505>repo

71
00:03:12.965 --> 00:03:16.005
<00:03:12.965>projects <00:03:13.092>that <00:03:13.219>has <00:03:13.346>many <00:03:13.474>repos <00:03:13.601>as <00:03:13.728>the <00:03:13.855>case <00:03:13.983>around <00:03:14.110>and <00:03:14.237>so <00:03:14.365>on.

72
00:03:16.505 --> 00:03:19.525
<00:03:16.505>But <00:03:16.680>it <00:03:16.855>doesn't <00:03:17.030>matter <00:03:17.204>in <00:03:17.380>the <00:03:17.555>end <00:03:17.730>sub <00:03:17.905>projects

73
00:03:19.525 --> 00:03:20.965
<00:03:19.525>of <00:03:19.957>sub <00:03:20.389>gradled <00:03:20.821>projects.

74
00:03:22.145 --> 00:03:23.485
<00:03:22.145>Why <00:03:22.446>we <00:03:22.748>need <00:03:23.049>to <00:03:23.351>modularize.

75
00:03:23.745 --> 00:03:25.525
<00:03:23.745>I'm <00:03:23.945>sure <00:03:24.145>you <00:03:24.345>read <00:03:24.545>this <00:03:24.745>many <00:03:24.945>times <00:03:25.145>before,

76
00:03:25.665 --> 00:03:28.325
<00:03:25.665>but <00:03:25.820>we <00:03:25.976>are <00:03:26.131>mainly <00:03:26.287>concerned <00:03:26.442>today <00:03:26.598>about <00:03:26.753>the <00:03:26.909>faster <00:03:27.065>belts

77
00:03:28.325 --> 00:03:31.205
<00:03:28.325>and <00:03:28.558>how <00:03:28.791>the <00:03:29.024>modularization <00:03:29.258>affects <00:03:29.491>our <00:03:29.725>belts.

78
00:03:31.585 --> 00:03:35.245
<00:03:31.585>So <00:03:31.760>we <00:03:31.935>tell <00:03:32.110>gradle, <00:03:32.285>please <00:03:32.460>compile <00:03:32.635>only <00:03:32.810>what's <00:03:32.985>necessary

79
00:03:35.245 --> 00:03:36.565
<00:03:35.245>to <00:03:35.641>compile <00:03:36.037>and <00:03:36.433>instead

80
00:03:36.565 --> 00:03:38.805
<00:03:36.565>of <00:03:36.845>compiling <00:03:37.125>everything <00:03:37.405>every <00:03:37.685>single <00:03:37.965>time

81
00:03:39.185 --> 00:03:40.285
<00:03:39.185>you <00:03:39.383>try <00:03:39.581>to <00:03:39.779>run <00:03:39.977>the <00:03:40.175>project.

82
00:03:41.345 --> 00:03:43.885
<00:03:41.345>So <00:03:41.625>how <00:03:41.905>to <00:03:42.185>optimize <00:03:42.465>the <00:03:42.745>relations.

83
00:03:45.005 --> 00:03:48.405
<00:03:45.005>I <00:03:45.144>will <00:03:45.285>give <00:03:45.424>you <00:03:45.565>a <00:03:45.704>snapshot, <00:03:45.845>quick <00:03:45.984>snapshot <00:03:46.125>about <00:03:46.265>sum <00:03:46.405>up,

84
00:03:48.405 --> 00:03:51.245
<00:03:48.405>like <00:03:48.560>it's <00:03:48.716>very <00:03:48.871>small <00:03:49.027>snapshot <00:03:49.182>of <00:03:49.338>the <00:03:49.493>sum <00:03:49.649>up <00:03:49.805>ecosystem,

85
00:03:51.345 --> 00:03:55.535
<00:03:51.345>the <00:03:51.500>project <00:03:51.656>itself, <00:03:51.811>uh, <00:03:51.967>which <00:03:52.122>we <00:03:52.278>have <00:03:52.433>like <00:03:52.589>one <00:03:52.745>monolith

86
00:03:55.535 --> 00:03:58.455
<00:03:55.535>that <00:03:55.768>has <00:03:56.001>some <00:03:56.234>modules, <00:03:56.468>some <00:03:56.701>features, <00:03:56.935>invoices,

87
00:03:58.455 --> 00:04:01.535
<00:03:58.454>bank <00:03:58.654>commons, <00:03:58.855>the <00:03:59.054>app <00:03:59.255>of <00:03:59.454>course <00:03:59.654>post <00:03:59.855>SDK.

88
00:04:01.755 --> 00:04:03.295
<00:04:01.755>And <00:04:01.953>we <00:04:02.150>also <00:04:02.349>have <00:04:02.547>a <00:04:02.745>little <00:04:02.942>bit <00:04:03.141>of

89
00:04:05.125 --> 00:04:06.695
<00:04:05.125>poly <00:04:05.405>repo <00:04:05.685>patterns <00:04:05.965>that <00:04:06.245>we <00:04:06.525>have.

90
00:04:06.765 --> 00:04:10.175
<00:04:06.765>Observability, <00:04:06.940>SDK, <00:04:07.114>design <00:04:07.290>lab, <00:04:07.464>S, <00:04:07.640>DK, <00:04:07.815>and <00:04:07.989>so <00:04:08.165>on.

91
00:04:10.175 --> 00:04:11.815
<00:04:10.175>These <00:04:10.525>leave <00:04:10.875>in <00:04:11.225>different <00:04:11.575>repositories.

92
00:04:12.205 --> 00:04:13.775
<00:04:12.205>Just <00:04:12.555>giving <00:04:12.905>a <00:04:13.255>small <00:04:13.605>intro

93
00:04:13.775 --> 00:04:15.295
<00:04:13.775>because <00:04:13.970>all <00:04:14.165>the <00:04:14.361>talk <00:04:14.556>will <00:04:14.752>be <00:04:14.947>about <00:04:15.143>this.

94
00:04:16.355 --> 00:04:19.415
<00:04:16.355>So <00:04:16.495>if <00:04:16.635>we <00:04:16.775>zoom <00:04:16.915>in, <00:04:17.055>so <00:04:17.195>here <00:04:17.335>we <00:04:17.475>have <00:04:17.615>the <00:04:17.755>monolith.

95
00:04:20.455 --> 00:04:24.305
<00:04:20.454>When <00:04:20.582>we <00:04:20.709>zoom <00:04:20.836>in <00:04:20.964>the <00:04:21.091>monolith, <00:04:21.218>we <00:04:21.345>find, <00:04:21.473>okay, <00:04:21.600>we <00:04:21.727>have <00:04:21.854>app.

96
00:04:24.445 --> 00:04:26.865
<00:04:24.445>The <00:04:24.645>app <00:04:24.844>depends <00:04:25.045>on <00:04:25.245>bank <00:04:25.445>invoices, <00:04:25.645>post <00:04:25.844>SDK,

97
00:04:27.085 --> 00:04:29.145
<00:04:27.085>and <00:04:27.260>all <00:04:27.435>of <00:04:27.609>them <00:04:27.784>depend <00:04:27.960>on <00:04:28.135>some <00:04:28.310>module <00:04:28.484>calls.

98
00:04:29.145 --> 00:04:33.425
<00:04:29.145>Common <00:04:29.320>comments <00:04:29.495>and <00:04:29.669>the <00:04:29.844>comments <00:04:30.020>depend <00:04:30.195>on <00:04:30.370>design <00:04:30.544>comments.

99
00:04:33.535 --> 00:04:35.945
<00:04:33.534>This <00:04:33.662>is <00:04:33.789>a <00:04:33.916>snapshot <00:04:34.044>that <00:04:34.171>we <00:04:34.298>are <00:04:34.425>gonna <00:04:34.553>take <00:04:34.680>as <00:04:34.807>the <00:04:34.934>example

100
00:04:36.165 --> 00:04:37.945
<00:04:36.165>to <00:04:36.445>see <00:04:36.725>what <00:04:37.005>are <00:04:37.285>the <00:04:37.565>problems.

101
00:04:38.525 --> 00:04:42.305
<00:04:38.525>So <00:04:38.724>if <00:04:38.924>the <00:04:39.125>app <00:04:39.325>changed <00:04:39.525>any <00:04:39.724>single <00:04:39.924>line

102
00:04:42.305 --> 00:04:43.385
<00:04:42.305>of <00:04:42.548>code <00:04:42.791>change <00:04:43.034>it <00:04:43.277>there,

103
00:04:44.165 --> 00:04:46.345
<00:04:44.165>the <00:04:44.365>app <00:04:44.565>module <00:04:44.765>will <00:04:44.965>need <00:04:45.165>to <00:04:45.365>be <00:04:45.565>recompiled.

104
00:04:46.345 --> 00:04:47.745
<00:04:46.345>But <00:04:46.525>does <00:04:46.705>it <00:04:46.885>mean <00:04:47.065>that <00:04:47.245>all <00:04:47.425>the <00:04:47.605>other

105
00:04:47.745 --> 00:04:49.145
<00:04:47.745>modules <00:04:48.165>will <00:04:48.585>be <00:04:49.005>recompiled?

106
00:04:49.605 --> 00:04:50.745
<00:04:49.605>No. <00:04:49.861>In <00:04:50.118>this <00:04:50.374>case, <00:04:50.631>no,

107
00:04:50.775 --> 00:04:52.705
<00:04:50.775>because <00:04:50.950>you <00:04:51.125>only <00:04:51.299>change <00:04:51.474>it <00:04:51.650>in <00:04:51.825>the <00:04:52.000>top <00:04:52.174>level

108
00:04:52.925 --> 00:04:54.505
<00:04:52.925>and <00:04:53.158>the <00:04:53.391>other <00:04:53.625>modules <00:04:53.858>are <00:04:54.091>not <00:04:54.325>affected.

109
00:04:54.505 --> 00:04:56.185
<00:04:54.505>There <00:04:54.705>is, <00:04:54.905>there <00:04:55.105>are <00:04:55.305>no <00:04:55.505>relations <00:04:55.705>between <00:04:55.905>them.

110
00:04:57.205 --> 00:04:58.905
<00:04:57.205>If <00:04:57.555>the <00:04:57.905>bank <00:04:58.255>something <00:04:58.604>changed,

111
00:04:59.165 --> 00:05:01.265
<00:04:59.165>of <00:04:59.365>course <00:04:59.565>the <00:04:59.765>app <00:04:59.965>will <00:05:00.165>be <00:05:00.365>recompiled <00:05:00.565>again,

112
00:05:01.265 --> 00:05:03.625
<00:05:01.265>because <00:05:01.420>you <00:05:01.576>change <00:05:01.731>it, <00:05:01.887>the <00:05:02.042>inputs <00:05:02.198>of <00:05:02.353>the <00:05:02.509>app <00:05:02.664>module,

113
00:05:04.295 --> 00:05:07.745
<00:05:04.295>then <00:05:04.528>it <00:05:04.761>needs <00:05:04.995>to <00:05:05.228>be <00:05:05.461>recompiled <00:05:05.695>commons.

114
00:05:08.165 --> 00:05:09.785
<00:05:08.165>If <00:05:08.515>everything <00:05:08.865>depends <00:05:09.215>on <00:05:09.565>it,

115
00:05:09.785 --> 00:05:11.985
<00:05:09.785>everything <00:05:10.135>will <00:05:10.485>be <00:05:10.835>recompiled <00:05:11.185>again.

116
00:05:12.405 --> 00:05:14.105
<00:05:12.405>And <00:05:12.871>it <00:05:13.338>means <00:05:13.804>slower.

117
00:05:14.205 --> 00:05:16.585
<00:05:14.205>But <00:05:14.360>build <00:05:14.516>time <00:05:14.671>because <00:05:14.827>you <00:05:14.982>changes <00:05:15.138>something <00:05:15.293>in <00:05:15.449>the <00:05:15.604>core

118
00:05:16.855 --> 00:05:18.545
<00:05:16.855>that <00:05:17.135>all <00:05:17.415>other <00:05:17.695>modules <00:05:17.975>depend <00:05:18.255>on.

119
00:05:19.885 --> 00:05:21.105
<00:05:19.885>If <00:05:20.251>design <00:05:20.617>common <00:05:20.983>changes,

120
00:05:21.205 --> 00:05:23.465
<00:05:21.205>of <00:05:21.405>course <00:05:21.604>only <00:05:21.805>common <00:05:22.005>will <00:05:22.205>be <00:05:22.405>changed, <00:05:22.604>uh,

121
00:05:23.465 --> 00:05:27.785
<00:05:23.465>will <00:05:23.698>be <00:05:23.931>recompiled <00:05:24.164>because <00:05:24.398>only <00:05:24.631>the <00:05:24.864>input

122
00:05:27.785 --> 00:05:29.225
<00:05:27.785>of <00:05:28.217>the <00:05:28.649>commons <00:05:29.081>changed.

123
00:05:29.405 --> 00:05:31.785
<00:05:29.405>But <00:05:29.604>the <00:05:29.804>input <00:05:30.005>of <00:05:30.205>other <00:05:30.405>modules <00:05:30.604>didn't <00:05:30.804>change

124
00:05:31.785 --> 00:05:33.865
<00:05:31.785>because <00:05:31.960>it <00:05:32.135>relies <00:05:32.310>on <00:05:32.485>the <00:05:32.660>API <00:05:32.835>of <00:05:33.010>the <00:05:33.185>commons.

125
00:05:34.085 --> 00:05:36.745
<00:05:34.085>So <00:05:34.240>it <00:05:34.396>doesn't <00:05:34.551>need <00:05:34.707>to <00:05:34.862>be <00:05:35.018>recompiled <00:05:35.173>in <00:05:35.329>this <00:05:35.484>case,

126
00:05:37.445 --> 00:05:40.785
<00:05:37.445>but <00:05:37.645>only <00:05:37.844>in <00:05:38.045>case <00:05:38.245>we <00:05:38.445>use <00:05:38.645>implementation <00:05:38.844>function

127
00:05:40.805 --> 00:05:42.025
<00:05:40.805>in <00:05:41.079>a <00:05:41.354>seed <00:05:41.628>of <00:05:41.902>API.

128
00:05:42.645 --> 00:05:45.785
<00:05:42.645>And <00:05:42.800>I <00:05:42.956>will <00:05:43.111>explain <00:05:43.267>why, <00:05:43.422>why <00:05:43.578>it's, <00:05:43.733>why <00:05:43.889>it's <00:05:44.044>different.

129
00:05:46.835 --> 00:05:49.745
<00:05:46.835>First <00:05:47.114>of <00:05:47.395>all, <00:05:47.674>API <00:05:47.955>leaks <00:05:48.234>dependencies.

130
00:05:49.925 --> 00:05:53.705
<00:05:49.925>So <00:05:50.125>if <00:05:50.325>all <00:05:50.525>these <00:05:50.725>modules, <00:05:50.925>bank <00:05:51.125>app <00:05:51.325>invoices

131
00:05:53.705 --> 00:05:57.445
<00:05:53.705>who <00:05:53.880>rely <00:05:54.055>on <00:05:54.229>commons <00:05:54.405>using <00:05:54.580>API <00:05:54.755>function, <00:05:54.930>it <00:05:55.104>means

132
00:05:57.445 --> 00:05:59.805
<00:05:57.445>that <00:05:57.678>commons <00:05:57.911>will <00:05:58.145>leak <00:05:58.378>its <00:05:58.611>own <00:05:58.844>dependencies

133
00:06:00.025 --> 00:06:01.365
<00:06:00.025>to <00:06:00.426>these <00:06:00.829>modules <00:06:01.231>directly.

134
00:06:01.625 --> 00:06:04.325
<00:06:01.625>It <00:06:01.765>means <00:06:01.905>that <00:06:02.045>it'll <00:06:02.185>leak <00:06:02.325>the <00:06:02.465>design <00:06:02.605>commons <00:06:02.745>also <00:06:02.885>to <00:06:03.025>all

135
00:06:04.325 --> 00:06:06.325
<00:06:04.325>of <00:06:04.675>these, <00:06:05.025>uh, <00:06:05.375>uh, <00:06:05.724>modules.

136
00:06:07.235 --> 00:06:11.895
<00:06:07.235>Meaning <00:06:07.410>that, <00:06:07.585>oh, <00:06:07.760>we <00:06:07.935>need <00:06:08.110>to <00:06:08.285>be <00:06:08.460>there, <00:06:08.635>okay?

137
00:06:12.205 --> 00:06:14.095
<00:06:12.205>Meaning <00:06:12.484>that <00:06:12.765>if <00:06:13.044>the <00:06:13.325>commons <00:06:13.604>changed,

138
00:06:14.195 --> 00:06:15.975
<00:06:14.195>of <00:06:14.474>course <00:06:14.755>everything <00:06:15.034>will <00:06:15.315>be <00:06:15.594>recompiled,

139
00:06:16.275 --> 00:06:18.095
<00:06:16.275>the <00:06:16.508>bank <00:06:16.741>app <00:06:16.974>invoices <00:06:17.208>and <00:06:17.441>so <00:06:17.674>on.

140
00:06:18.635 --> 00:06:20.895
<00:06:18.635>But <00:06:18.810>in <00:06:18.985>this <00:06:19.159>case, <00:06:19.335>if <00:06:19.510>the <00:06:19.685>design <00:06:19.860>commons <00:06:20.034>changed,

141
00:06:21.805 --> 00:06:24.135
<00:06:21.805>also <00:06:21.980>everything <00:06:22.155>will <00:06:22.330>be, <00:06:22.505>will <00:06:22.680>need <00:06:22.855>to <00:06:23.030>be <00:06:23.205>recompiled.

142
00:06:24.315 --> 00:06:26.535
<00:06:24.315>Why? <00:06:24.594>Because <00:06:24.875>you <00:06:25.155>rely <00:06:25.435>on <00:06:25.715>commons.

143
00:06:26.545 --> 00:06:28.215
<00:06:26.545>Using <00:06:26.895>API <00:06:27.245>function, <00:06:27.595>it <00:06:27.945>means

144
00:06:28.215 --> 00:06:30.015
<00:06:28.215>that <00:06:28.414>it <00:06:28.614>leaks <00:06:28.815>the <00:06:29.015>design <00:06:29.215>commons <00:06:29.414>as <00:06:29.614>well.

145
00:06:30.475 --> 00:06:32.335
<00:06:30.475>So <00:06:30.708>it <00:06:30.941>needs <00:06:31.175>to <00:06:31.408>recompile <00:06:31.641>everything <00:06:31.875>together.

146
00:06:33.115 --> 00:06:36.935
<00:06:33.115>So <00:06:33.255>you <00:06:33.395>need <00:06:33.535>really <00:06:33.675>to <00:06:33.815>be <00:06:33.955>careful <00:06:34.095>when <00:06:34.235>you <00:06:34.375>use <00:06:34.515>API

147
00:06:36.935 --> 00:06:39.255
<00:06:36.935>because <00:06:37.090>you <00:06:37.246>know <00:06:37.401>that <00:06:37.557>it'll <00:06:37.712>come <00:06:37.868>with <00:06:38.023>some <00:06:38.179>trade <00:06:38.335>off.

148
00:06:40.915 --> 00:06:43.115
<00:06:40.915>But <00:06:41.195>we <00:06:41.475>need <00:06:41.755>to <00:06:42.035>ask <00:06:42.315>ourself,

149
00:06:43.175 --> 00:06:44.915
<00:06:43.175>do <00:06:43.455>all <00:06:43.735>modules <00:06:44.015>need <00:06:44.295>design <00:06:44.575>commands?

150
00:06:45.095 --> 00:06:47.835
<00:06:45.095>So <00:06:45.235>I <00:06:45.375>really <00:06:45.515>need <00:06:45.655>to <00:06:45.795>leak <00:06:45.935>it <00:06:46.075>to <00:06:46.215>all <00:06:46.355>the <00:06:46.495>modules.

151
00:06:48.225 --> 00:06:51.315
<00:06:48.225>This <00:06:48.365>is <00:06:48.505>the <00:06:48.645>first <00:06:48.785>question. <00:06:48.925>If <00:06:49.065>the <00:06:49.205>answer <00:06:49.345>is <00:06:49.485>no, <00:06:49.625>okay,

152
00:06:51.335 --> 00:06:53.355
<00:06:51.335>so <00:06:51.568>why <00:06:51.801>do <00:06:52.034>you <00:06:52.268>use <00:06:52.501>API <00:06:52.734>function?

153
00:06:53.415 --> 00:06:54.635
<00:06:53.415>You <00:06:53.598>don't <00:06:53.781>need <00:06:53.964>to <00:06:54.147>leak <00:06:54.330>it <00:06:54.513>anyway.

154
00:06:55.015 --> 00:06:58.155
<00:06:55.015>If <00:06:55.142>the <00:06:55.269>answer <00:06:55.396>is <00:06:55.524>yes, <00:06:55.651>why <00:06:55.778>don't <00:06:55.905>he <00:06:56.033>have <00:06:56.160>direct <00:06:56.287>relations <00:06:56.414>on

155
00:06:58.155 --> 00:07:01.275
<00:06:58.155>the <00:06:58.388>module <00:06:58.621>the <00:06:58.854>design <00:06:59.088>commands <00:06:59.321>in <00:06:59.554>instead

156
00:07:01.275 --> 00:07:02.355
<00:07:01.275>of <00:07:01.599>leaking <00:07:01.923>the <00:07:02.247>dependency.

157
00:07:02.415 --> 00:07:03.915
<00:07:02.415>So <00:07:02.752>it <00:07:03.090>really <00:07:03.427>doesn't <00:07:03.765>matter.

158
00:07:03.935 --> 00:07:05.195
<00:07:03.935>You <00:07:04.218>don't <00:07:04.502>need <00:07:04.785>really <00:07:05.069>API,

159
00:07:06.395 --> 00:07:07.975
<00:07:06.395>not <00:07:06.628>in <00:07:06.861>general <00:07:07.094>in <00:07:07.328>very <00:07:07.561>special <00:07:07.794>case,

160
00:07:07.995 --> 00:07:09.975
<00:07:07.995>but <00:07:08.170>you <00:07:08.345>need <00:07:08.520>really <00:07:08.695>to <00:07:08.870>think <00:07:09.045>deeply <00:07:09.220>about <00:07:09.395>it.

161
00:07:10.115 --> 00:07:12.215
<00:07:10.115>Do <00:07:10.290>you <00:07:10.465>really <00:07:10.640>need <00:07:10.815>to <00:07:10.990>leak <00:07:11.165>everything <00:07:11.340>or <00:07:11.515>not?

162
00:07:14.995 --> 00:07:16.255
<00:07:14.995>So <00:07:15.278>we <00:07:15.562>can <00:07:15.845>optimize <00:07:16.129>it.

163
00:07:16.435 --> 00:07:18.415
<00:07:16.435>If <00:07:16.668>the <00:07:16.901>bank <00:07:17.135>only <00:07:17.368>needs <00:07:17.601>design <00:07:17.835>commons,

164
00:07:18.555 --> 00:07:20.815
<00:07:18.555>the <00:07:18.755>post <00:07:18.955>SDK <00:07:19.155>only <00:07:19.355>needed, <00:07:19.555>you <00:07:19.755>can <00:07:19.955>have

165
00:07:21.515 --> 00:07:23.175
<00:07:21.515>direct <00:07:21.865>relation <00:07:22.215>in <00:07:22.565>the, <00:07:22.914>instead

166
00:07:23.175 --> 00:07:24.695
<00:07:23.175>of <00:07:23.517>just <00:07:23.859>leaking <00:07:24.201>everything <00:07:24.543>together.

167
00:07:25.595 --> 00:07:26.775
<00:07:25.595>And <00:07:25.807>also <00:07:26.019>this <00:07:26.232>will <00:07:26.444>help <00:07:26.657>you

168
00:07:26.775 --> 00:07:31.045
<00:07:26.775>because <00:07:26.950>maybe <00:07:27.125>you <00:07:27.299>need <00:07:27.474>the, <00:07:27.650>in <00:07:27.825>all <00:07:28.000>the <00:07:28.174>modules,

169
00:07:31.045 --> 00:07:32.605
<00:07:31.045>the <00:07:31.278>design <00:07:31.511>commons, <00:07:31.745>but <00:07:31.978>it <00:07:32.211>doesn't <00:07:32.445>mean

170
00:07:32.605 --> 00:07:35.125
<00:07:32.605>that <00:07:32.760>you <00:07:32.916>need <00:07:33.071>all <00:07:33.227>the <00:07:33.382>translative <00:07:33.538>dependencies <00:07:33.693>of <00:07:33.849>the <00:07:34.005>common

171
00:07:35.145 --> 00:07:37.045
<00:07:35.145>to <00:07:35.378>be <00:07:35.611>leaked <00:07:35.844>into <00:07:36.078>the <00:07:36.311>other <00:07:36.544>modules.

172
00:07:37.145 --> 00:07:41.045
<00:07:37.145>So <00:07:37.284>the <00:07:37.424>API <00:07:37.565>really <00:07:37.705>comes <00:07:37.844>with <00:07:37.984>lots <00:07:38.125>of <00:07:38.265>problems. <00:07:38.405>API <00:07:38.544>function.

173
00:07:41.945 --> 00:07:43.605
<00:07:41.945>So <00:07:42.100>you <00:07:42.256>just <00:07:42.411>need <00:07:42.567>to <00:07:42.722>think <00:07:42.878>a <00:07:43.033>lot <00:07:43.189>about <00:07:43.344>it.

174
00:07:44.265 --> 00:07:46.885
<00:07:44.265>Second <00:07:44.615>thing, <00:07:44.965>commons <00:07:45.315>in <00:07:45.664>general,

175
00:07:48.115 --> 00:07:50.555
<00:07:48.115>whenever <00:07:48.348>I <00:07:48.581>see <00:07:48.815>c**s <00:07:49.048>name <00:07:49.281>for <00:07:49.515>anything,

176
00:07:50.705 --> 00:07:52.795
<00:07:50.705>this <00:07:50.905>is <00:07:51.104>a <00:07:51.305>very <00:07:51.505>big <00:07:51.705>problem <00:07:51.905>to <00:07:52.104>me.

177
00:07:53.495 --> 00:07:55.675
<00:07:53.495>We <00:07:53.650>need <00:07:53.806>to <00:07:53.961>analyze <00:07:54.117>what <00:07:54.272>the <00:07:54.428>commons <00:07:54.583>module <00:07:54.739>really <00:07:54.895>have.

178
00:07:55.935 --> 00:07:58.995
<00:07:55.935>So <00:07:56.110>maybe <00:07:56.285>it <00:07:56.460>has <00:07:56.635>some <00:07:56.810>date <00:07:56.985>converters, <00:07:57.160>currency, <00:07:57.335>converters,

179
00:07:58.995 --> 00:08:02.875
<00:07:58.995>network <00:07:59.228>stuff, <00:07:59.461>security, <00:07:59.695>uh, <00:07:59.928>network <00:08:00.161>security <00:08:00.395>logic.

180
00:08:03.145 --> 00:08:05.395
<00:08:03.145>Okay, <00:08:03.320>great. <00:08:03.495>Maybe <00:08:03.669>make <00:08:03.844>sense <00:08:04.020>to <00:08:04.195>have <00:08:04.370>these <00:08:04.544>things

181
00:08:05.535 --> 00:08:06.635
<00:08:05.535>of <00:08:06.030>course <00:08:06.525>shared,

182
00:08:07.535 --> 00:08:11.235
<00:08:07.535>but <00:08:07.675>why <00:08:07.815>commons <00:08:07.955>in <00:08:08.095>general <00:08:08.235>to <00:08:08.375>have <00:08:08.515>everything <00:08:08.655>at <00:08:08.795>one <00:08:08.935>place?

183
00:08:11.895 --> 00:08:13.035
<00:08:11.895>So <00:08:12.151>whenever <00:08:12.408>I <00:08:12.664>see <00:08:12.921>c*m,

184
00:08:13.035 --> 00:08:15.155
<00:08:13.035>this <00:08:13.175>is <00:08:13.315>already <00:08:13.455>like <00:08:13.595>all <00:08:13.735>the <00:08:13.875>red <00:08:14.015>flags <00:08:14.155>in <00:08:14.295>the <00:08:14.435>world.

185
00:08:16.095 --> 00:08:17.995
<00:08:16.095>Why? <00:08:16.445>Because <00:08:16.795>first <00:08:17.145>of <00:08:17.495>all,

186
00:08:17.995 --> 00:08:20.635
<00:08:17.995>you <00:08:18.228>broke <00:08:18.461>the <00:08:18.695>s <00:08:18.928>responsibility <00:08:19.161>is <00:08:19.395>commons.

187
00:08:20.635 --> 00:08:22.795
<00:08:20.635>So <00:08:20.810>you <00:08:20.985>can <00:08:21.159>add <00:08:21.335>any <00:08:21.510>piece <00:08:21.685>of <00:08:21.860>codes <00:08:22.034>there.

188
00:08:23.095 --> 00:08:26.875
<00:08:23.095>Second <00:08:23.250>thing, <00:08:23.406>when <00:08:23.561>a <00:08:23.717>module <00:08:23.872>is <00:08:24.028>responsible <00:08:24.183>for <00:08:24.339>many <00:08:24.495>things,

189
00:08:27.575 --> 00:08:29.675
<00:08:27.575>it <00:08:27.775>means <00:08:27.974>that <00:08:28.175>it <00:08:28.375>has <00:08:28.575>very <00:08:28.775>high <00:08:28.974>chances

190
00:08:29.695 --> 00:08:32.795
<00:08:29.695>to <00:08:29.870>have <00:08:30.045>some <00:08:30.219>changes <00:08:30.395>there, <00:08:30.570>especially <00:08:30.745>when <00:08:30.920>it's <00:08:31.094>commons.

191
00:08:32.815 --> 00:08:34.515
<00:08:32.815>All <00:08:33.048>the <00:08:33.281>other <00:08:33.515>modules <00:08:33.748>depend <00:08:33.981>on <00:08:34.215>it.

192
00:08:34.535 --> 00:08:36.195
<00:08:34.534>It <00:08:34.735>means <00:08:34.934>all <00:08:35.135>the <00:08:35.334>other <00:08:35.534>modules <00:08:35.735>will <00:08:35.934>need

193
00:08:36.195 --> 00:08:38.715
<00:08:36.195>to <00:08:36.428>be <00:08:36.661>recompiled <00:08:36.895>every <00:08:37.128>time, <00:08:37.361>which <00:08:37.595>really

194
00:08:39.775 --> 00:08:41.795
<00:08:39.775>causes <00:08:40.008>in <00:08:40.241>the <00:08:40.475>end <00:08:40.708>longer <00:08:40.941>build <00:08:41.174>time.

195
00:08:42.815 --> 00:08:45.955
<00:08:42.815>So <00:08:43.015>better <00:08:43.215>approach, <00:08:43.415>maybe <00:08:43.615>you <00:08:43.815>have <00:08:44.015>still <00:08:44.215>comments,

196
00:08:46.135 --> 00:08:48.795
<00:08:46.135>but <00:08:46.368>specific, <00:08:46.601>so <00:08:46.835>you <00:08:47.068>have <00:08:47.301>design <00:08:47.535>comments,

197
00:08:48.945 --> 00:08:50.235
<00:08:48.945>date, <00:08:49.235>common <00:08:49.525>and <00:08:49.815>so <00:08:50.106>on.

198
00:08:50.495 --> 00:08:52.275
<00:08:50.495>And <00:08:50.728>only <00:08:50.961>use <00:08:51.195>these <00:08:51.428>in <00:08:51.661>the <00:08:51.895>modules

199
00:08:52.275 --> 00:08:54.075
<00:08:52.275>that <00:08:52.449>really <00:08:52.625>need <00:08:52.800>them <00:08:52.975>in <00:08:53.150>instead <00:08:53.324>of <00:08:53.500>having <00:08:53.675>comments

200
00:08:54.105 --> 00:08:55.365
<00:08:54.105>that <00:08:54.483>changed <00:08:54.861>every <00:08:55.239>day.

201
00:08:57.335 --> 00:08:58.475
<00:08:57.335>So <00:08:57.677>the <00:08:58.019>second <00:08:58.361>thing,

202
00:08:58.725 --> 00:09:01.355
<00:08:58.725>apply <00:08:58.958>the <00:08:59.191>senior <00:08:59.425>responsibility <00:08:59.658>principle <00:08:59.891>not <00:09:00.125>only

203
00:09:01.375 --> 00:09:02.795
<00:09:01.375>for <00:09:01.588>classes, <00:09:01.800>but <00:09:02.014>you <00:09:02.227>need <00:09:02.439>it <00:09:02.653>also

204
00:09:02.795 --> 00:09:04.315
<00:09:02.795>for <00:09:03.068>modules <00:09:03.342>because <00:09:03.615>it's <00:09:03.889>really <00:09:04.163>important.

205
00:09:06.655 --> 00:09:08.985
<00:09:06.655>Then <00:09:06.795>we <00:09:06.935>maybe <00:09:07.074>think <00:09:07.214>a <00:09:07.355>a <00:09:07.495>little <00:09:07.635>bit <00:09:07.775>about <00:09:07.915>the <00:09:08.055>bank.

206
00:09:09.045 --> 00:09:11.945
<00:09:09.045>We <00:09:09.185>have, <00:09:09.324>we <00:09:09.464>used <00:09:09.604>to <00:09:09.745>have <00:09:09.885>a <00:09:10.025>very <00:09:10.165>huge <00:09:10.305>bank <00:09:10.444>module

207
00:09:12.535 --> 00:09:15.785
<00:09:12.535>that <00:09:12.709>has <00:09:12.885>all <00:09:13.060>the <00:09:13.235>bank <00:09:13.410>logic, <00:09:13.584>which <00:09:13.760>is <00:09:13.935>like,

208
00:09:16.645 --> 00:09:18.865
<00:09:16.645>it <00:09:16.845>has <00:09:17.045>some <00:09:17.245>special <00:09:17.444>cases <00:09:17.645>for <00:09:17.845>some <00:09:18.045>countries.

209
00:09:18.975 --> 00:09:20.025
<00:09:18.975>Very, <00:09:19.290>very <00:09:19.605>special <00:09:19.920>logic.

210
00:09:20.025 --> 00:09:21.625
<00:09:20.025>Like <00:09:20.305>for <00:09:20.584>example, <00:09:20.865>Brazil <00:09:21.145>has <00:09:21.425>X,

211
00:09:21.925 --> 00:09:23.465
<00:09:21.925>we <00:09:22.122>don't <00:09:22.321>have <00:09:22.519>this <00:09:22.717>here <00:09:22.915>and <00:09:23.113>so <00:09:23.311>on.

212
00:09:23.885 --> 00:09:26.345
<00:09:23.885>It <00:09:24.060>has <00:09:24.235>also <00:09:24.410>business <00:09:24.585>accounts, <00:09:24.760>cards <00:09:24.935>and <00:09:25.110>so <00:09:25.285>on.

213
00:09:27.015 --> 00:09:29.905
<00:09:27.015>Meaning <00:09:27.215>that <00:09:27.415>this <00:09:27.615>module <00:09:27.814>changes <00:09:28.015>very <00:09:28.215>often, <00:09:28.415>meaning

214
00:09:29.905 --> 00:09:32.505
<00:09:29.905>that <00:09:30.060>you <00:09:30.216>also <00:09:30.371>need <00:09:30.527>to <00:09:30.682>build <00:09:30.838>this <00:09:30.993>module <00:09:31.149>every <00:09:31.305>time

215
00:09:33.765 --> 00:09:35.665
<00:09:33.765>and <00:09:33.965>all <00:09:34.165>the <00:09:34.365>modules <00:09:34.564>that <00:09:34.765>depend <00:09:34.965>on <00:09:35.165>it.

216
00:09:36.285 --> 00:09:39.385
<00:09:36.285>So <00:09:36.425>we <00:09:36.564>can <00:09:36.704>also <00:09:36.844>split <00:09:36.985>the <00:09:37.125>big <00:09:37.265>module <00:09:37.405>to <00:09:37.545>have <00:09:37.685>submodules.

217
00:09:39.385 --> 00:09:40.585
<00:09:39.385>So <00:09:39.601>you <00:09:39.817>still <00:09:40.033>have <00:09:40.249>bank <00:09:40.465>module,

218
00:09:40.645 --> 00:09:42.065
<00:09:40.645>but <00:09:40.964>you <00:09:41.284>have <00:09:41.603>smaller <00:09:41.923>projects.

219
00:09:42.455 --> 00:09:44.465
<00:09:42.455>Submodule <00:09:42.735>is <00:09:43.015>in <00:09:43.295>the <00:09:43.575>end <00:09:43.855>subproject.

220
00:09:44.565 --> 00:09:46.705
<00:09:44.565>So <00:09:44.765>if <00:09:44.965>the <00:09:45.165>submodule <00:09:45.365>change <00:09:45.565>it, <00:09:45.765>it <00:09:45.965>means

221
00:09:46.705 --> 00:09:49.825
<00:09:46.705>that <00:09:46.860>it'll <00:09:47.016>only <00:09:47.171>be <00:09:47.327>the <00:09:47.482>parts <00:09:47.638>that <00:09:47.793>will <00:09:47.949>be <00:09:48.105>recompiled

222
00:09:49.825 --> 00:09:52.105
<00:09:49.825>and <00:09:50.000>the <00:09:50.175>other <00:09:50.350>modules <00:09:50.525>rely <00:09:50.700>on <00:09:50.875>it <00:09:51.050>instead <00:09:51.225>of

223
00:09:52.765 --> 00:09:56.785
<00:09:52.765>having <00:09:52.905>one <00:09:53.045>module <00:09:53.185>that <00:09:53.324>has <00:09:53.465>big <00:09:53.605>chance <00:09:53.745>to <00:09:53.885>be, <00:09:54.025>uh, <00:09:54.165>recompiled.

224
00:09:57.285 --> 00:10:00.185
<00:09:57.285>To <00:09:57.459>simplify, <00:09:57.635>this <00:09:57.810>is <00:09:57.985>the <00:09:58.160>same <00:09:58.334>idea <00:09:58.510>of <00:09:58.685>modularization.

225
00:10:00.185 --> 00:10:02.265
<00:10:00.185>Like <00:10:00.359>instead <00:10:00.535>of <00:10:00.709>having <00:10:00.885>everything <00:10:01.060>in <00:10:01.234>the <00:10:01.410>app <00:10:01.584>module,

226
00:10:02.325 --> 00:10:04.545
<00:10:02.325>you <00:10:02.605>modularize <00:10:02.885>same <00:10:03.165>if <00:10:03.445>you <00:10:03.725>have

227
00:10:04.545 --> 00:10:05.905
<00:10:04.545>everything <00:10:04.851>in <00:10:05.156>the <00:10:05.463>bank <00:10:05.769>module.

228
00:10:05.925 --> 00:10:08.785
<00:10:05.925>You <00:10:06.080>need <00:10:06.236>also <00:10:06.391>to <00:10:06.547>split <00:10:06.702>it <00:10:06.858>into <00:10:07.013>pieces, <00:10:07.169>meaning <00:10:07.324>that

229
00:10:09.595 --> 00:10:11.985
<00:10:09.595>it'll <00:10:09.770>have <00:10:09.945>single <00:10:10.120>responsibilities <00:10:10.295>for <00:10:10.470>every <00:10:10.645>piece <00:10:10.820>as <00:10:10.995>well.

230
00:10:11.985 --> 00:10:13.945
<00:10:11.985>So <00:10:12.335>it'll <00:10:12.685>have <00:10:13.035>better <00:10:13.385>chances

231
00:10:13.945 --> 00:10:15.985
<00:10:13.945>that <00:10:14.145>it'll <00:10:14.345>not <00:10:14.545>be <00:10:14.745>recompiled <00:10:14.945>every <00:10:15.145>single <00:10:15.345>time.

232
00:10:17.445 --> 00:10:19.065
<00:10:17.445>So <00:10:17.678>if <00:10:17.911>the <00:10:18.145>module <00:10:18.378>is <00:10:18.611>too <00:10:18.845>big,

233
00:10:19.325 --> 00:10:20.745
<00:10:19.325>you <00:10:19.644>can't <00:10:19.964>consider <00:10:20.283>splitting <00:10:20.603>it.

234
00:10:21.855 --> 00:10:24.065
<00:10:21.855>Also, <00:10:22.055>another <00:10:22.255>thing, <00:10:22.455>uh, <00:10:22.655>of <00:10:22.855>the <00:10:23.055>bank <00:10:23.255>domain,

235
00:10:24.935 --> 00:10:28.045
<00:10:24.935>it's <00:10:25.109>a <00:10:25.285>huge <00:10:25.459>domain <00:10:25.635>that <00:10:25.810>has <00:10:25.984>lots <00:10:26.160>of <00:10:26.334>things.

236
00:10:28.825 --> 00:10:32.525
<00:10:28.825>So <00:10:29.000>what <00:10:29.175>if <00:10:29.350>we <00:10:29.525>can <00:10:29.700>test <00:10:29.875>it <00:10:30.050>differently <00:10:30.225>Instead

237
00:10:32.525 --> 00:10:35.205
<00:10:32.525>of <00:10:32.641>every <00:10:32.758>time <00:10:32.875>we <00:10:32.991>need <00:10:33.108>to <00:10:33.225>test <00:10:33.341>a <00:10:33.458>change <00:10:33.574>in <00:10:33.691>the <00:10:33.808>bank <00:10:33.925>domain,

238
00:10:35.665 --> 00:10:37.125
<00:10:35.665>we <00:10:35.884>need <00:10:36.103>to <00:10:36.322>run <00:10:36.540>the <00:10:36.760>whole <00:10:36.979>project.

239
00:10:38.025 --> 00:10:41.245
<00:10:38.025>So <00:10:38.180>maybe <00:10:38.336>a <00:10:38.491>sample <00:10:38.647>app <00:10:38.802>would <00:10:38.958>help <00:10:39.113>in <00:10:39.269>this <00:10:39.425>case.

240
00:10:41.825 --> 00:10:45.805
<00:10:41.825>So <00:10:41.952>for <00:10:42.079>big <00:10:42.206>domains, <00:10:42.334>you <00:10:42.461>can <00:10:42.588>have <00:10:42.715>sample <00:10:42.843>apps <00:10:42.970>for <00:10:43.097>the, <00:10:43.225>uh,

241
00:10:45.805 --> 00:10:49.005
<00:10:45.805>module <00:10:46.005>itself <00:10:46.204>that <00:10:46.405>test <00:10:46.604>this <00:10:46.805>module <00:10:47.005>functionality <00:10:47.204>meaning

242
00:10:49.005 --> 00:10:52.085
<00:10:49.005>that <00:10:49.238>whenever <00:10:49.471>your <00:10:49.705>team <00:10:49.938>needs <00:10:50.171>to <00:10:50.405>change

243
00:10:52.145 --> 00:10:55.525
<00:10:52.145>and <00:10:52.345>test <00:10:52.545>something, <00:10:52.745>you <00:10:52.944>only <00:10:53.145>build <00:10:53.345>sample <00:10:53.545>app

244
00:10:55.525 --> 00:10:57.765
<00:10:55.525>for <00:10:55.699>this <00:10:55.875>team <00:10:56.050>instead <00:10:56.225>of <00:10:56.400>building <00:10:56.574>the <00:10:56.750>whole <00:10:56.925>project.

245
00:10:57.825 --> 00:11:00.525
<00:10:57.825>And <00:10:57.952>you <00:10:58.079>can't <00:10:58.206>even <00:10:58.334>put <00:10:58.461>your <00:10:58.588>tests <00:10:58.715>based <00:10:58.843>on <00:10:58.970>this <00:10:59.097>sample <00:10:59.225>app.

246
00:11:00.525 --> 00:11:01.885
<00:11:00.525>It's <00:11:00.933>much <00:11:01.341>faster, <00:11:01.749>quicker.

247
00:11:01.945 --> 00:11:03.725
<00:11:01.945>It <00:11:02.178>doesn't <00:11:02.411>affect, <00:11:02.645>it <00:11:02.878>doesn't <00:11:03.111>take <00:11:03.345>time

248
00:11:03.745 --> 00:11:04.965
<00:11:03.745>to <00:11:04.019>build <00:11:04.294>the <00:11:04.568>whole <00:11:04.843>project.

249
00:11:07.545 --> 00:11:10.925
<00:11:07.545>So <00:11:07.719>also <00:11:07.895>another <00:11:08.069>thing <00:11:08.245>that <00:11:08.420>we <00:11:08.594>used <00:11:08.770>to <00:11:08.944>have,

250
00:11:10.945 --> 00:11:12.325
<00:11:10.945>we <00:11:11.255>had <00:11:11.566>like <00:11:11.876>user <00:11:12.187>module.

251
00:11:12.625 --> 00:11:15.965
<00:11:12.625>And <00:11:12.800>this <00:11:12.975>user <00:11:13.150>module <00:11:13.325>has <00:11:13.500>all <00:11:13.675>the <00:11:13.850>user <00:11:14.025>data,

252
00:11:16.105 --> 00:11:19.925
<00:11:16.105>the <00:11:16.245>user <00:11:16.385>details, <00:11:16.525>and <00:11:16.665>all <00:11:16.805>of <00:11:16.945>the, <00:11:17.085>uh, <00:11:17.225>user <00:11:17.365>related <00:11:17.505>stuff.

253
00:11:20.745 --> 00:11:23.005
<00:11:20.745>And <00:11:20.945>this <00:11:21.145>is <00:11:21.345>very <00:11:21.545>hard <00:11:21.745>to <00:11:21.945>split <00:11:22.145>it,

254
00:11:23.025 --> 00:11:24.805
<00:11:23.025>it <00:11:23.199>should <00:11:23.375>take <00:11:23.550>lots <00:11:23.725>of <00:11:23.900>time <00:11:24.074>to <00:11:24.250>be <00:11:24.425>split.

255
00:11:25.705 --> 00:11:29.565
<00:11:25.705>So <00:11:25.832>what <00:11:25.959>if <00:11:26.086>in <00:11:26.214>instead <00:11:26.341>of <00:11:26.468>having <00:11:26.595>user <00:11:26.723>that <00:11:26.850>changes <00:11:26.977>a <00:11:27.105>lot

256
00:11:29.665 --> 00:11:32.045
<00:11:29.665>and <00:11:29.839>all <00:11:30.015>the <00:11:30.189>modules <00:11:30.365>need <00:11:30.540>to <00:11:30.714>be <00:11:30.890>recompiled <00:11:31.064>just

257
00:11:32.045 --> 00:11:35.685
<00:11:32.045>because <00:11:32.185>it <00:11:32.324>changes <00:11:32.464>often <00:11:32.604>we <00:11:32.745>can <00:11:32.885>split <00:11:33.025>it <00:11:33.165>into <00:11:33.305>public <00:11:33.444>API

258
00:11:35.785 --> 00:11:36.845
<00:11:35.785>and <00:11:36.739>implementation.

259
00:11:37.785 --> 00:11:40.325
<00:11:37.785>Why <00:11:37.959>this <00:11:38.135>helps? <00:11:38.310>Because <00:11:38.485>if <00:11:38.660>you <00:11:38.834>have <00:11:39.010>public <00:11:39.185>APIs

260
00:11:40.325 --> 00:11:41.645
<00:11:40.325>that <00:11:40.721>only <00:11:41.117>has <00:11:41.513>interfaces,

261
00:11:42.705 --> 00:11:45.005
<00:11:42.705>you <00:11:42.938>very <00:11:43.171>rarely <00:11:43.405>change <00:11:43.638>the <00:11:43.871>public <00:11:44.105>API.

262
00:11:45.545 --> 00:11:47.365
<00:11:45.545>But <00:11:45.745>the <00:11:45.944>implementation, <00:11:46.145>you <00:11:46.344>can <00:11:46.545>change <00:11:46.745>a <00:11:46.944>lot.

263
00:11:47.465 --> 00:11:49.245
<00:11:47.465>You <00:11:47.745>can <00:11:48.025>have <00:11:48.305>new, <00:11:48.585>I <00:11:48.865>dunno,

264
00:11:49.265 --> 00:11:51.525
<00:11:49.265>new <00:11:49.498>method <00:11:49.731>in <00:11:49.965>the <00:11:50.198>user <00:11:50.431>details <00:11:50.665>class.

265
00:11:51.945 --> 00:11:53.525
<00:11:51.945>So <00:11:52.178>it <00:11:52.411>it, <00:11:52.645>it <00:11:52.878>can <00:11:53.111>change <00:11:53.345>often.

266
00:11:53.525 --> 00:11:56.445
<00:11:53.525>Like <00:11:53.652>there <00:11:53.779>is <00:11:53.906>a <00:11:54.034>big <00:11:54.161>team <00:11:54.288>called <00:11:54.415>identity <00:11:54.543>only <00:11:54.670>does <00:11:54.797>this <00:11:54.925>job.

267
00:11:57.145 --> 00:12:00.365
<00:11:57.145>So <00:11:57.300>if <00:11:57.456>you <00:11:57.611>split <00:11:57.767>it, <00:11:57.922>if <00:11:58.078>the <00:11:58.233>implementation <00:11:58.389>details <00:11:58.545>change,

268
00:12:00.365 --> 00:12:02.725
<00:12:00.365>it <00:12:00.565>only <00:12:00.765>the <00:12:00.965>API <00:12:01.165>needs <00:12:01.365>to <00:12:01.565>be <00:12:01.765>recompiled.

269
00:12:03.385 --> 00:12:06.645
<00:12:03.385>But <00:12:03.501>all <00:12:03.618>the <00:12:03.735>other <00:12:03.851>modules <00:12:03.968>that <00:12:04.085>rely <00:12:04.201>on <00:12:04.318>the <00:12:04.435>API <00:12:04.551>will <00:12:04.668>not <00:12:04.785>need

270
00:12:06.645 --> 00:12:10.045
<00:12:06.645>to <00:12:06.819>be <00:12:06.995>recompiled <00:12:07.170>anymore <00:12:07.345>because <00:12:07.520>the <00:12:07.694>inputs <00:12:07.870>didn't <00:12:08.045>change.

271
00:12:10.105 --> 00:12:12.045
<00:12:10.105>The <00:12:10.385>input <00:12:10.665>come <00:12:10.945>from <00:12:11.225>the <00:12:11.505>API.

272
00:12:12.545 --> 00:12:14.085
<00:12:12.545>So <00:12:12.776>it <00:12:13.007>doesn't <00:12:13.238>need <00:12:13.469>to <00:12:13.700>be <00:12:13.931>compiled.

273
00:12:14.085 --> 00:12:17.405
<00:12:14.085>Only <00:12:14.225>the <00:12:14.365>API <00:12:14.505>will <00:12:14.645>be <00:12:14.785>compiled, <00:12:14.925>which <00:12:15.065>will <00:12:15.205>already <00:12:15.345>cut <00:12:15.485>lots

274
00:12:17.405 --> 00:12:18.925
<00:12:17.405>of, <00:12:17.678>uh, <00:12:17.952>time <00:12:18.225>from <00:12:18.499>your <00:12:18.772>build.

275
00:12:20.545 --> 00:12:22.685
<00:12:20.545>So <00:12:20.719>if <00:12:20.895>the <00:12:21.069>module <00:12:21.245>already <00:12:21.420>represents <00:12:21.594>a <00:12:21.770>big <00:12:21.944>domain

276
00:12:22.685 --> 00:12:25.125
<00:12:22.685>that <00:12:22.812>you <00:12:22.939>can't <00:12:23.066>have <00:12:23.194>public <00:12:23.321>API <00:12:23.448>for <00:12:23.575>it, <00:12:23.703>that <00:12:23.830>would <00:12:23.957>be <00:12:24.084>great

277
00:12:25.125 --> 00:12:27.205
<00:12:25.125>because <00:12:25.252>it <00:12:25.379>will <00:12:25.506>save <00:12:25.634>you <00:12:25.761>lots <00:12:25.888>of <00:12:26.015>time <00:12:26.143>also <00:12:26.270>for <00:12:26.397>your <00:12:26.525>build.

278
00:12:29.715 --> 00:12:32.245
<00:12:29.715>Another <00:12:29.995>case, <00:12:30.275>we <00:12:30.555>have <00:12:30.835>support <00:12:31.115>module

279
00:12:32.555 --> 00:12:35.325
<00:12:32.555>that <00:12:32.729>contains <00:12:32.905>all <00:12:33.079>the <00:12:33.255>support <00:12:33.430>functionality <00:12:33.604>of <00:12:33.780>the <00:12:33.954>app

280
00:12:36.345 --> 00:12:39.245
<00:12:36.345>and <00:12:36.520>also <00:12:36.695>loss <00:12:36.870>of <00:12:37.045>screens <00:12:37.220>have <00:12:37.395>the <00:12:37.570>support <00:12:37.745>relation

281
00:12:39.245 --> 00:12:40.325
<00:12:39.245>just <00:12:39.488>because <00:12:39.731>it <00:12:39.974>falls <00:12:40.217>back.

282
00:12:40.345 --> 00:12:42.885
<00:12:40.345>So <00:12:40.545>for <00:12:40.745>example, <00:12:40.945>if <00:12:41.145>something <00:12:41.345>failed <00:12:41.545>transaction <00:12:41.745>failed

283
00:12:42.905 --> 00:12:45.365
<00:12:42.905>or <00:12:43.079>something, <00:12:43.255>you <00:12:43.430>fall <00:12:43.605>back <00:12:43.780>to <00:12:43.954>the <00:12:44.130>support <00:12:44.305>screen.

284
00:12:46.105 --> 00:12:47.805
<00:12:46.105>So <00:12:46.385>that's <00:12:46.665>why <00:12:46.945>many <00:12:47.225>modules <00:12:47.505>have

285
00:12:47.805 --> 00:12:49.485
<00:12:47.805>direct <00:12:48.155>relation <00:12:48.505>on <00:12:48.854>the <00:12:49.204>support.

286
00:12:50.115 --> 00:12:52.125
<00:12:50.115>Same <00:12:50.465>for <00:12:50.815>example, <00:12:51.165>for <00:12:51.515>MFA,

287
00:12:52.865 --> 00:12:55.765
<00:12:52.865>the <00:12:53.065>multifactor <00:12:53.265>authentication <00:12:53.465>the <00:12:53.665>bank <00:12:53.865>needs <00:12:54.065>it <00:12:54.265>invoices

288
00:12:55.765 --> 00:12:57.165
<00:12:55.765>sometimes <00:12:56.016>needs <00:12:56.269>it <00:12:56.521>and <00:12:56.773>so <00:12:57.025>on,

289
00:12:57.425 --> 00:13:00.165
<00:12:57.425>but <00:12:57.658>only <00:12:57.891>to <00:12:58.125>navigate <00:12:58.358>to <00:12:58.591>MFA <00:12:58.824>screen.

290
00:13:00.265 --> 00:13:01.805
<00:13:00.265>And <00:13:00.496>this <00:13:00.727>has <00:13:00.958>all <00:13:01.189>the <00:13:01.420>logics <00:13:01.651>there.

291
00:13:02.345 --> 00:13:03.925
<00:13:02.345>So <00:13:02.625>instead <00:13:02.905>of <00:13:03.185>having <00:13:03.465>this <00:13:03.745>relations

292
00:13:03.925 --> 00:13:07.365
<00:13:03.925>that <00:13:04.080>all <00:13:04.236>modules <00:13:04.391>will <00:13:04.547>need <00:13:04.702>to <00:13:04.858>use <00:13:05.013>this <00:13:05.169>module <00:13:05.324>only

293
00:13:07.385 --> 00:13:10.325
<00:13:07.385>to <00:13:07.540>navigate, <00:13:07.696>maybe <00:13:07.851>you <00:13:08.007>don't <00:13:08.162>need <00:13:08.318>this <00:13:08.473>relation <00:13:08.629>at <00:13:08.785>all

294
00:13:10.325 --> 00:13:11.725
<00:13:10.325>and <00:13:10.577>you <00:13:10.829>can't <00:13:11.081>have <00:13:11.333>navigation <00:13:11.585>system.

295
00:13:15.995 --> 00:13:19.025
<00:13:15.995>Navigation <00:13:16.170>system, <00:13:16.345>you <00:13:16.520>can <00:13:16.695>apply <00:13:16.870>directly <00:13:17.045>using <00:13:17.220>nav <00:13:17.395>graph

296
00:13:20.685 --> 00:13:24.865
<00:13:20.685>the <00:13:20.840>architectural <00:13:20.996>component <00:13:21.151>by <00:13:21.307>using <00:13:21.462>deep <00:13:21.618>links <00:13:21.773>in <00:13:21.929>the <00:13:22.084>end

297
00:13:25.285 --> 00:13:27.105
<00:13:25.285>and <00:13:25.635>have <00:13:25.985>this <00:13:26.334>nav <00:13:26.685>graph

298
00:13:27.135 --> 00:13:30.745
<00:13:27.135>that <00:13:27.310>already <00:13:27.485>knows <00:13:27.660>all <00:13:27.835>the <00:13:28.010>destinations <00:13:28.185>about <00:13:28.360>your <00:13:28.535>project.

299
00:13:31.005 --> 00:13:33.265
<00:13:31.005>And <00:13:31.180>whenever <00:13:31.355>you <00:13:31.530>want <00:13:31.705>to <00:13:31.880>navigate <00:13:32.055>from <00:13:32.230>one <00:13:32.405>module

300
00:13:33.325 --> 00:13:35.465
<00:13:33.325>to <00:13:33.558>another, <00:13:33.791>you <00:13:34.025>navigate <00:13:34.258>through <00:13:34.491>this <00:13:34.725>URI.

301
00:13:35.885 --> 00:13:39.265
<00:13:35.885>So <00:13:36.025>you <00:13:36.165>don't <00:13:36.305>need <00:13:36.444>to, <00:13:36.585>um, <00:13:36.725>depend <00:13:36.865>on <00:13:37.005>the <00:13:37.145>module <00:13:37.285>just

302
00:13:39.265 --> 00:13:44.025
<00:13:39.265>for <00:13:39.420>navigation <00:13:39.576>or <00:13:39.731>if <00:13:39.887>your <00:13:40.042>project <00:13:40.198>is <00:13:40.353>very, <00:13:40.509>um, <00:13:40.665>complicated

303
00:13:44.165 --> 00:13:45.185
<00:13:44.165>and <00:13:44.623>old <00:13:45.083>legacy

304
00:13:45.725 --> 00:13:48.425
<00:13:45.725>and <00:13:45.865>you <00:13:46.005>cannot <00:13:46.145>really <00:13:46.285>use <00:13:46.425>the <00:13:46.565>nav <00:13:46.705>graph, <00:13:46.845>maybe <00:13:46.985>it's <00:13:47.125>better

305
00:13:48.445 --> 00:13:50.105
<00:13:48.445>to <00:13:48.725>build <00:13:49.005>your <00:13:49.285>own <00:13:49.565>navigation <00:13:49.845>system.

306
00:13:50.535 --> 00:13:54.945
<00:13:50.535>What <00:13:50.662>took <00:13:50.789>us <00:13:50.916>like <00:13:51.044>six <00:13:51.171>months <00:13:51.298>to <00:13:51.425>build, <00:13:51.553>but <00:13:51.680>it's <00:13:51.807>worth <00:13:51.935>it.

307
00:13:55.085 --> 00:13:56.785
<00:13:55.085>So <00:13:55.318>in <00:13:55.551>the <00:13:55.785>end <00:13:56.018>we <00:13:56.251>build <00:13:56.485>something,

308
00:13:57.055 --> 00:13:58.505
<00:13:57.055>some <00:13:57.490>module <00:13:57.925>called <00:13:58.360>navigation.

309
00:13:59.045 --> 00:14:00.465
<00:13:59.045>Yes, <00:13:59.300>all <00:13:59.556>modules <00:13:59.811>depend <00:14:00.067>on <00:14:00.323>it,

310
00:14:00.465 --> 00:14:02.065
<00:14:00.465>but <00:14:00.698>it <00:14:00.931>doesn't <00:14:01.165>have <00:14:01.398>any <00:14:01.631>implementation <00:14:01.865>details,

311
00:14:02.065 --> 00:14:03.145
<00:14:02.065>so <00:14:02.308>it <00:14:02.551>doesn't <00:14:02.794>change <00:14:03.037>much.

312
00:14:04.285 --> 00:14:06.665
<00:14:04.285>But <00:14:04.459>in <00:14:04.635>the <00:14:04.810>end, <00:14:04.985>the <00:14:05.160>whole <00:14:05.334>idea <00:14:05.510>was <00:14:05.685>okay,

313
00:14:06.785 --> 00:14:10.865
<00:14:06.785>I <00:14:06.959>wanna <00:14:07.135>navigate <00:14:07.310>from, <00:14:07.485>for <00:14:07.660>example, <00:14:07.834>the <00:14:08.010>app, <00:14:08.185>uh,

314
00:14:10.865 --> 00:14:13.305
<00:14:10.865>or <00:14:11.005>from <00:14:11.145>the <00:14:11.285>support <00:14:11.425>to <00:14:11.565>bank <00:14:11.705>or <00:14:11.845>from <00:14:11.985>bank <00:14:12.125>to <00:14:12.265>support.

315
00:14:13.565 --> 00:14:15.865
<00:14:13.565>And <00:14:13.740>instead <00:14:13.915>of <00:14:14.090>having <00:14:14.265>this <00:14:14.440>relation <00:14:14.615>between <00:14:14.790>the <00:14:14.965>bank

316
00:14:16.005 --> 00:14:19.705
<00:14:16.005>and <00:14:16.205>support, <00:14:16.405>we <00:14:16.605>create <00:14:16.805>something <00:14:17.005>called <00:14:17.205>global <00:14:17.405>navigation.

317
00:14:19.965 --> 00:14:22.265
<00:14:19.965>That's <00:14:20.198>just <00:14:20.431>one <00:14:20.665>function. <00:14:20.898>You <00:14:21.131>tell <00:14:21.365>it.

318
00:14:22.385 --> 00:14:24.465
<00:14:22.385>I <00:14:22.665>wanna <00:14:22.944>go <00:14:23.225>from <00:14:23.505>this <00:14:23.785>activity,

319
00:14:24.565 --> 00:14:27.545
<00:14:24.565>the <00:14:24.720>activity <00:14:24.876>I <00:14:25.031>am <00:14:25.187>in <00:14:25.342>right <00:14:25.498>now <00:14:25.653>to <00:14:25.809>a <00:14:25.965>destination.

320
00:14:27.655 --> 00:14:30.865
<00:14:27.655>This <00:14:27.855>destination <00:14:28.055>is <00:14:28.255>just <00:14:28.454>object, <00:14:28.655>it's <00:14:28.855>lin <00:14:29.055>object,

321
00:14:31.295 --> 00:14:33.585
<00:14:31.295>like <00:14:31.528>it <00:14:31.761>can <00:14:31.995>be <00:14:32.228>business <00:14:32.461>account, <00:14:32.694>whatever,

322
00:14:34.005 --> 00:14:36.745
<00:14:34.005>but <00:14:34.160>in <00:14:34.316>the <00:14:34.471>end <00:14:34.627>it <00:14:34.782>belongs <00:14:34.938>to <00:14:35.093>this <00:14:35.249>parent <00:14:35.405>destination.

323
00:14:37.125 --> 00:14:40.145
<00:14:37.125>And <00:14:37.325>we <00:14:37.525>have <00:14:37.725>set <00:14:37.925>of <00:14:38.125>navigators, <00:14:38.325>global <00:14:38.525>navigators,

324
00:14:40.645 --> 00:14:42.865
<00:14:40.645>and <00:14:40.878>we <00:14:41.111>really <00:14:41.345>rely <00:14:41.578>heavily <00:14:41.811>on <00:14:42.045>health.

325
00:14:43.235 --> 00:14:45.985
<00:14:43.235>These <00:14:43.435>navigators <00:14:43.635>are <00:14:43.835>being <00:14:44.035>implemented <00:14:44.235>in <00:14:44.435>the <00:14:44.635>separate

326
00:14:46.055 --> 00:14:48.305
<00:14:46.055>modules, <00:14:46.288>bank <00:14:46.521>on <00:14:46.755>voices <00:14:46.988>and <00:14:47.221>so <00:14:47.454>on.

327
00:14:48.685 --> 00:14:50.065
<00:14:48.685>And <00:14:48.995>we <00:14:49.306>inject <00:14:49.616>into <00:14:49.927>set.

328
00:14:50.685 --> 00:14:53.245
<00:14:50.685>So <00:14:50.801>in <00:14:50.918>the <00:14:51.035>end <00:14:51.151>we <00:14:51.268>have <00:14:51.385>set <00:14:51.501>of <00:14:51.618>navigators <00:14:51.734>that <00:14:51.851>we <00:14:51.968>know <00:14:52.084>about,

329
00:14:53.305 --> 00:14:56.445
<00:14:53.305>and <00:14:53.479>then <00:14:53.655>we <00:14:53.829>see <00:14:54.005>which <00:14:54.180>navigator <00:14:54.354>handles <00:14:54.530>this <00:14:54.704>object

330
00:14:56.625 --> 00:14:57.965
<00:14:56.625>and <00:14:57.027>it <00:14:57.429>navigates <00:14:57.831>directly.

331
00:14:58.755 --> 00:15:01.485
<00:14:58.755>It's <00:14:58.910>complicated, <00:14:59.066>but <00:14:59.221>it'll <00:14:59.377>take <00:14:59.532>time <00:14:59.688>also <00:14:59.843>to <00:14:59.999>explain <00:15:00.155>more.

332
00:15:01.485 --> 00:15:03.445
<00:15:01.485>So <00:15:01.625>if <00:15:01.765>you <00:15:01.905>have <00:15:02.045>any <00:15:02.185>question <00:15:02.325>about <00:15:02.465>it, <00:15:02.605>it <00:15:02.745>can <00:15:02.885>be

333
00:15:03.445 --> 00:15:06.605
<00:15:03.445>after <00:15:03.620>the <00:15:03.795>presentation, <00:15:03.970>but <00:15:04.145>this <00:15:04.320>solve <00:15:04.495>the <00:15:04.670>problem <00:15:04.845>of

334
00:15:07.235 --> 00:15:11.445
<00:15:07.235>relying <00:15:07.515>on <00:15:07.795>gradle, <00:15:08.075>uh, <00:15:08.355>dependency, <00:15:08.635>just

335
00:15:11.445 --> 00:15:13.725
<00:15:11.445>to <00:15:11.600>navigate <00:15:11.756>from <00:15:11.911>a <00:15:12.067>module <00:15:12.222>to <00:15:12.378>another, <00:15:12.533>we <00:15:12.689>can <00:15:12.845>navigate

336
00:15:13.725 --> 00:15:16.165
<00:15:13.725>with <00:15:13.925>code <00:15:14.125>and <00:15:14.325>really <00:15:14.525>we <00:15:14.725>don't <00:15:14.925>need <00:15:15.125>to

337
00:15:16.265 --> 00:15:17.565
<00:15:16.265>to <00:15:16.499>increase <00:15:16.733>the <00:15:16.967>build <00:15:17.201>time <00:15:17.435>just

338
00:15:17.565 --> 00:15:19.245
<00:15:17.565>for <00:15:17.798>navigation <00:15:18.031>from <00:15:18.265>one <00:15:18.498>screen <00:15:18.731>to <00:15:18.965>another.

339
00:15:19.905 --> 00:15:22.205
<00:15:19.905>So <00:15:20.060>if <00:15:20.216>the <00:15:20.371>module <00:15:20.527>depends <00:15:20.682>on <00:15:20.838>another <00:15:20.993>only <00:15:21.149>to <00:15:21.305>navigate,

340
00:15:22.205 --> 00:15:25.005
<00:15:22.205>you <00:15:22.485>can <00:15:22.765>actually <00:15:23.045>delete <00:15:23.325>this, <00:15:23.605>uh,

341
00:15:25.095 --> 00:15:27.285
<00:15:25.095>dependency <00:15:25.445>from <00:15:25.795>your <00:15:26.145>gradle <00:15:26.495>file

342
00:15:27.305 --> 00:15:28.525
<00:15:27.305>and <00:15:27.670>update <00:15:28.036>your <00:15:28.403>architecture

343
00:15:28.525 --> 00:15:30.085
<00:15:28.525>to <00:15:28.758>use <00:15:28.991>navigation <00:15:29.225>system <00:15:29.458>in <00:15:29.691>a <00:15:29.925>seed.

344
00:15:31.305 --> 00:15:33.685
<00:15:31.305>So <00:15:31.479>in <00:15:31.655>the <00:15:31.829>end, <00:15:32.005>the <00:15:32.180>summary <00:15:32.354>is, <00:15:32.530>uh, <00:15:32.704>leaking.

345
00:15:33.685 --> 00:15:34.965
<00:15:33.685>Like <00:15:34.069>mainly, <00:15:34.453>please <00:15:34.837>try

346
00:15:34.965 --> 00:15:37.645
<00:15:34.965>to <00:15:35.120>not <00:15:35.276>use <00:15:35.431>API <00:15:35.587>only <00:15:35.742>when <00:15:35.898>it's <00:15:36.053>very, <00:15:36.209>very <00:15:36.365>needed.

347
00:15:38.265 --> 00:15:40.085
<00:15:38.265>Single <00:15:38.731>responsibility <00:15:39.198>for <00:15:39.665>modules.

348
00:15:40.675 --> 00:15:42.605
<00:15:40.675>When <00:15:40.830>the <00:15:40.986>module <00:15:41.141>is <00:15:41.297>too <00:15:41.452>big, <00:15:41.608>you <00:15:41.763>can <00:15:41.919>split <00:15:42.074>it.

349
00:15:42.825 --> 00:15:45.885
<00:15:42.825>If <00:15:43.000>the <00:15:43.175>domain <00:15:43.350>can <00:15:43.525>be <00:15:43.700>tested <00:15:43.875>separately, <00:15:44.050>it's <00:15:44.225>amazing

350
00:15:45.885 --> 00:15:47.965
<00:15:45.885>to <00:15:46.085>have <00:15:46.285>sample <00:15:46.485>app <00:15:46.685>because <00:15:46.885>it's <00:15:47.085>much <00:15:47.285>faster.

351
00:15:49.325 --> 00:15:51.185
<00:15:49.325>And <00:15:49.525>if <00:15:49.725>the <00:15:49.925>module <00:15:50.125>represents <00:15:50.325>a <00:15:50.525>big <00:15:50.725>domain,

352
00:15:51.185 --> 00:15:52.345
<00:15:51.185>you <00:15:51.445>can <00:15:51.707>have <00:15:51.968>public <00:15:52.229>API

353
00:15:52.345 --> 00:15:54.145
<00:15:52.345>and <00:15:52.625>implementation <00:15:52.905>details <00:15:53.185>that <00:15:53.465>are <00:15:53.745>hidden.

354
00:15:54.285 --> 00:15:56.825
<00:15:54.285>So <00:15:54.459>not <00:15:54.635>all <00:15:54.810>the <00:15:54.985>project <00:15:55.160>needs <00:15:55.334>to <00:15:55.510>be <00:15:55.685>recompiled.

355
00:15:56.825 --> 00:15:57.905
<00:15:56.825>Only <00:15:57.068>one <00:15:57.311>module <00:15:57.554>will <00:15:57.797>be,

356
00:15:58.485 --> 00:16:00.945
<00:15:58.485>and <00:15:58.640>if <00:15:58.796>the <00:15:58.951>module <00:15:59.107>depends <00:15:59.262>on <00:15:59.418>another <00:15:59.573>just <00:15:59.729>for <00:15:59.885>navigation,

357
00:16:01.245 --> 00:16:03.825
<00:16:01.245>you <00:16:01.420>can <00:16:01.595>really <00:16:01.770>consider <00:16:01.945>navigation <00:16:02.120>system <00:16:02.295>is <00:16:02.470>quite <00:16:02.645>helpful.

358
00:16:05.965 --> 00:16:09.025
<00:16:05.965>So, <00:16:06.165>uh, <00:16:06.365>we <00:16:06.565>talked <00:16:06.765>about <00:16:06.965>the <00:16:07.165>modules <00:16:07.365>relations,

359
00:16:09.245 --> 00:16:12.625
<00:16:09.245>and <00:16:09.372>this <00:16:09.499>is <00:16:09.626>mainly <00:16:09.754>my <00:16:09.881>experience <00:16:10.008>in <00:16:10.135>four <00:16:10.263>years <00:16:10.390>at <00:16:10.517>sum <00:16:10.645>up

360
00:16:12.625 --> 00:16:17.065
<00:16:12.625>and <00:16:12.765>the <00:16:12.905>hiccups <00:16:13.045>we <00:16:13.185>have <00:16:13.325>seen <00:16:13.465>together, <00:16:13.605>but <00:16:13.745>also <00:16:13.885>last <00:16:14.025>year

361
00:16:17.065 --> 00:16:18.905
<00:16:17.065>or <00:16:17.240>maybe <00:16:17.415>two <00:16:17.590>years <00:16:17.765>ago, <00:16:17.940>we <00:16:18.115>started <00:16:18.290>to <00:16:18.465>think,

362
00:16:19.085 --> 00:16:20.745
<00:16:19.085>why <00:16:19.318>don't <00:16:19.551>you <00:16:19.785>unify <00:16:20.018>our <00:16:20.251>build <00:16:20.485>system?

363
00:16:21.285 --> 00:16:24.985
<00:16:21.285>So <00:16:21.392>in <00:16:21.500>seed <00:16:21.608>of <00:16:21.715>like, <00:16:21.823>I <00:16:21.931>wanna <00:16:22.038>create <00:16:22.146>a <00:16:22.254>new <00:16:22.361>module <00:16:22.469>in <00:16:22.577>a <00:16:22.685>seed

364
00:16:24.985 --> 00:16:29.305
<00:16:24.985>of <00:16:25.140>caring <00:16:25.296>about <00:16:25.451>the <00:16:25.607>lenders, <00:16:25.762>about <00:16:25.918>uh, <00:16:26.073>putting <00:16:26.229>health <00:16:26.385>there

365
00:16:29.845 --> 00:16:31.225
<00:16:29.845>and <00:16:30.155>all <00:16:30.466>of <00:16:30.776>these <00:16:31.087>dependencies,

366
00:16:31.325 --> 00:16:33.945
<00:16:31.325>why <00:16:31.525>don't <00:16:31.725>we <00:16:31.925>have <00:16:32.125>our <00:16:32.325>own <00:16:32.525>convention <00:16:32.725>plugins

367
00:16:33.945 --> 00:16:35.545
<00:16:33.945>that <00:16:34.145>we <00:16:34.345>can't <00:16:34.545>just <00:16:34.745>share <00:16:34.945>in <00:16:35.145>any <00:16:35.345>module

368
00:16:35.725 --> 00:16:36.825
<00:16:35.725>and <00:16:36.055>you <00:16:36.385>just <00:16:36.715>need

369
00:16:36.825 --> 00:16:40.065
<00:16:36.825>to <00:16:36.952>care <00:16:37.079>about <00:16:37.206>the <00:16:37.334>other <00:16:37.461>business <00:16:37.588>in <00:16:37.715>this <00:16:37.843>module <00:16:37.970>in <00:16:38.097>a <00:16:38.225>seed

370
00:16:40.065 --> 00:16:43.025
<00:16:40.065>of <00:16:40.220>caring <00:16:40.376>a <00:16:40.531>lot <00:16:40.687>about <00:16:40.842>the <00:16:40.998>versions <00:16:41.153>and <00:16:41.309>so <00:16:41.465>on.

371
00:16:44.635 --> 00:16:47.695
<00:16:44.635>So <00:16:44.868>that <00:16:45.101>came <00:16:45.335>with, <00:16:45.568>uh, <00:16:45.801>convention <00:16:46.035>plugins.

372
00:16:47.755 --> 00:16:49.935
<00:16:47.755>You <00:16:47.930>just <00:16:48.105>build <00:16:48.280>once, <00:16:48.455>you <00:16:48.630>share <00:16:48.805>in <00:16:48.980>all <00:16:49.155>modules.

373
00:16:49.935 --> 00:16:51.455
<00:16:49.935>So <00:16:50.130>you <00:16:50.325>don't <00:16:50.521>need <00:16:50.716>to <00:16:50.912>rebuild <00:16:51.107>every <00:16:51.303>time,

374
00:16:51.965 --> 00:16:52.975
<00:16:51.965>rebuild <00:16:52.268>the <00:16:52.571>same <00:16:52.874>logic.

375
00:16:53.175 --> 00:16:56.295
<00:16:53.175>I <00:16:53.330>mean <00:16:53.486>you <00:16:53.641>maintain <00:16:53.797>all <00:16:53.952>the <00:16:54.108>modules <00:16:54.263>logic <00:16:54.419>at <00:16:54.574>once.

376
00:16:56.675 --> 00:16:59.055
<00:16:56.675>So <00:16:56.849>whenever <00:16:57.025>something <00:16:57.199>changes, <00:16:57.375>you <00:16:57.550>can <00:16:57.724>just <00:16:57.900>change <00:16:58.074>once.

377
00:16:59.055 --> 00:17:01.375
<00:16:59.055>And <00:16:59.210>instead <00:16:59.366>of <00:16:59.521>going <00:16:59.677>to <00:16:59.832>the <00:16:59.988>whole <00:17:00.143>project <00:17:00.299>and <00:17:00.454>change

378
00:17:01.375 --> 00:17:04.655
<00:17:01.375>and <00:17:01.530>chains <00:17:01.686>and <00:17:01.841>you <00:17:01.997>can <00:17:02.152>ensure <00:17:02.308>that <00:17:02.463>the <00:17:02.619>modules, <00:17:02.775>uh,

379
00:17:05.115 --> 00:17:06.575
<00:17:05.115>follow <00:17:05.553>the <00:17:05.991>same <00:17:06.429>configuration

380
00:17:07.395 --> 00:17:10.015
<00:17:07.395>and <00:17:07.569>the <00:17:07.744>modules <00:17:07.920>will <00:17:08.095>focus <00:17:08.270>on <00:17:08.444>just <00:17:08.619>the <00:17:08.795>requirements.

381
00:17:10.015 --> 00:17:11.975
<00:17:10.015>Instead <00:17:10.248>of <00:17:10.481>focusing <00:17:10.715>on <00:17:10.948>how <00:17:11.181>to <00:17:11.415>build

382
00:17:11.975 --> 00:17:14.455
<00:17:11.974>and <00:17:12.175>copy <00:17:12.375>paste <00:17:12.574>from <00:17:12.774>the <00:17:12.974>other <00:17:13.175>gradle <00:17:13.375>files.

383
00:17:16.085 --> 00:17:19.785
<00:17:16.085>Just <00:17:16.240>in <00:17:16.396>the <00:17:16.551>end, <00:17:16.707>what <00:17:16.862>we <00:17:17.018>wanted <00:17:17.173>to <00:17:17.329>achieve <00:17:17.485>is

384
00:17:19.785 --> 00:17:21.985
<00:17:19.785>to <00:17:19.985>have <00:17:20.185>plugins <00:17:20.385>and <00:17:20.585>we <00:17:20.785>just <00:17:20.985>say, <00:17:21.185>okay,

385
00:17:22.255 --> 00:17:23.305
<00:17:22.255>come <00:17:22.444>to <00:17:22.633>some <00:17:22.822>of <00:17:23.011>the <00:17:23.200>health.

386
00:17:23.415 --> 00:17:24.865
<00:17:23.415>This <00:17:23.632>will <00:17:23.849>apply <00:17:24.067>the <00:17:24.285>health <00:17:24.502>for <00:17:24.720>us.

387
00:17:25.335 --> 00:17:27.785
<00:17:25.335>Come <00:17:25.462>to <00:17:25.589>some <00:17:25.716>of <00:17:25.844>the <00:17:25.971>detect <00:17:26.098>will <00:17:26.225>apply <00:17:26.353>all <00:17:26.480>the <00:17:26.607>detect <00:17:26.735>tools

388
00:17:27.845 --> 00:17:32.635
<00:17:27.845>and <00:17:28.000>so <00:17:28.156>on <00:17:28.311>for <00:17:28.467>every <00:17:28.622>module, <00:17:28.778>how <00:17:28.933>to <00:17:29.089>build <00:17:29.245>some,

389
00:17:32.815 --> 00:17:34.235
<00:17:32.815>uh, <00:17:33.454>convention <00:17:34.092>plugins.

390
00:17:34.235 --> 00:17:35.795
<00:17:34.235>You <00:17:34.435>need <00:17:34.635>to <00:17:34.834>have <00:17:35.034>a <00:17:35.235>module, <00:17:35.435>this <00:17:35.635>module

391
00:17:35.845 --> 00:17:37.155
<00:17:35.845>maybe <00:17:36.080>you <00:17:36.316>call <00:17:36.552>it <00:17:36.788>Build <00:17:37.024>Logic.

392
00:17:37.935 --> 00:17:39.995
<00:17:37.935>And <00:17:38.135>then <00:17:38.335>you <00:17:38.534>need <00:17:38.735>to <00:17:38.935>have <00:17:39.135>another <00:17:39.335>module.

393
00:17:40.135 --> 00:17:41.275
<00:17:40.135>You <00:17:40.306>don't <00:17:40.477>need <00:17:40.648>to <00:17:40.819>have <00:17:40.990>another <00:17:41.161>module.

394
00:17:41.335 --> 00:17:42.875
<00:17:41.335>You <00:17:41.533>can't <00:17:41.731>put <00:17:41.929>everything <00:17:42.127>in <00:17:42.325>the <00:17:42.523>build <00:17:42.721>logic.

395
00:17:42.895 --> 00:17:45.115
<00:17:42.895>But <00:17:43.050>for <00:17:43.206>us, <00:17:43.361>we <00:17:43.517>needed <00:17:43.672>to <00:17:43.828>create <00:17:43.983>another <00:17:44.139>module <00:17:44.295>called

396
00:17:45.115 --> 00:17:47.395
<00:17:45.115>convention <00:17:45.395>because <00:17:45.675>we <00:17:45.955>have <00:17:46.235>two <00:17:46.515>plugins.

397
00:17:47.395 --> 00:17:49.965
<00:17:47.395>We <00:17:47.628>have <00:17:47.861>settings, <00:17:48.095>plugins <00:17:48.328>and <00:17:48.561>convention <00:17:48.795>plugins.

398
00:17:49.965 --> 00:17:52.045
<00:17:49.965>We'll <00:17:50.165>talk <00:17:50.365>about <00:17:50.564>it <00:17:50.764>later, <00:17:50.965>but <00:17:51.165>for <00:17:51.365>now,

399
00:17:52.135 --> 00:17:53.365
<00:17:52.135>convention <00:17:53.242>submodules.

400
00:17:53.365 --> 00:17:56.005
<00:17:53.365>And <00:17:53.520>then <00:17:53.676>you <00:17:53.831>can <00:17:53.987>create <00:17:54.142>just <00:17:54.298>your <00:17:54.453>first <00:17:54.609>plugin, <00:17:54.765>how

401
00:17:57.165 --> 00:18:00.295
<00:17:57.165>it's <00:17:57.305>very <00:17:57.445>easy, <00:17:57.585>you <00:17:57.725>just <00:17:57.865>create <00:17:58.004>a <00:17:58.145>plugin, <00:17:58.284>uh, <00:17:58.425>lin <00:17:58.565>function,

402
00:18:00.555 --> 00:18:04.415
<00:18:00.555>uh, <00:18:00.730>Kotlin <00:18:00.905>class <00:18:01.080>that, <00:18:01.255>for <00:18:01.430>example, <00:18:01.605>view <00:18:01.780>binding <00:18:01.955>plugin.

403
00:18:04.635 --> 00:18:06.935
<00:18:04.635>And <00:18:04.868>this <00:18:05.101>extends <00:18:05.335>from <00:18:05.568>plugin <00:18:05.801>for <00:18:06.035>project.

404
00:18:07.125 --> 00:18:08.695
<00:18:07.125>Project <00:18:07.475>is <00:18:07.825>the <00:18:08.175>Gradle <00:18:08.525>project,

405
00:18:09.155 --> 00:18:11.015
<00:18:09.155>and <00:18:09.355>you <00:18:09.555>can <00:18:09.754>apply <00:18:09.955>whatever <00:18:10.155>with <00:18:10.355>the <00:18:10.555>target,

406
00:18:11.015 --> 00:18:12.255
<00:18:11.015>which <00:18:11.294>is <00:18:11.573>the <00:18:11.852>project <00:18:12.131>itself.

407
00:18:12.555 --> 00:18:15.935
<00:18:12.555>So <00:18:12.730>you <00:18:12.905>can <00:18:13.080>for <00:18:13.255>example, <00:18:13.430>say <00:18:13.605>just <00:18:13.780>view <00:18:13.955>binding

408
00:18:15.935 --> 00:18:17.175
<00:18:15.935>equal <00:18:16.214>through <00:18:16.493>to <00:18:16.772>enable <00:18:17.051>it.

409
00:18:17.635 --> 00:18:22.455
<00:18:17.635>And <00:18:17.790>whenever <00:18:17.946>you <00:18:18.101>apply <00:18:18.257>this <00:18:18.412>plug <00:18:18.568>into <00:18:18.723>the <00:18:18.879>modules, <00:18:19.035>it'll

410
00:18:23.115 --> 00:18:24.855
<00:18:23.115>you, <00:18:23.290>you <00:18:23.465>don't <00:18:23.640>need <00:18:23.815>to <00:18:23.990>add <00:18:24.165>this <00:18:24.340>code <00:18:24.515>again.

411
00:18:24.855 --> 00:18:28.135
<00:18:24.855>It's <00:18:24.995>just <00:18:25.135>added <00:18:25.275>ones. <00:18:25.415>Same <00:18:25.555>for <00:18:25.695>example, <00:18:25.835>for <00:18:25.975>here <00:18:26.115>for <00:18:26.255>health.

412
00:18:28.275 --> 00:18:31.095
<00:18:28.275>You <00:18:28.475>can <00:18:28.675>apply <00:18:28.875>all <00:18:29.075>the <00:18:29.275>health <00:18:29.475>stuff, <00:18:29.675>uh,

413
00:18:31.275 --> 00:18:32.335
<00:18:31.275>and <00:18:31.752>the <00:18:32.229>dependencies,

414
00:18:32.995 --> 00:18:36.615
<00:18:32.995>and <00:18:33.122>then <00:18:33.249>you <00:18:33.376>will <00:18:33.504>just <00:18:33.631>have <00:18:33.758>a <00:18:33.885>health <00:18:34.013>plugins <00:18:34.140>that <00:18:34.267>you <00:18:34.395>can

415
00:18:37.135 --> 00:18:38.615
<00:18:37.135>register <00:18:37.579>in <00:18:38.023>your <00:18:38.467>settings.

416
00:18:38.615 --> 00:18:40.215
<00:18:38.615>So <00:18:38.848>now <00:18:39.081>you <00:18:39.315>have <00:18:39.548>Build <00:18:39.781>Logic <00:18:40.015>module.

417
00:18:40.515 --> 00:18:44.655
<00:18:40.515>In <00:18:40.655>this <00:18:40.795>Build <00:18:40.935>Logic <00:18:41.075>module, <00:18:41.215>you <00:18:41.355>have, <00:18:41.495>uh, <00:18:41.635>build <00:18:41.775>Gradle, <00:18:41.915>uh,

418
00:18:44.655 --> 00:18:46.175
<00:18:44.655>uh, <00:18:44.928>build <00:18:45.202>Gradle <00:18:45.475>file <00:18:45.749>in <00:18:46.023>general

419
00:18:46.175 --> 00:18:49.055
<00:18:46.175>because <00:18:46.375>every <00:18:46.575>module <00:18:46.774>has <00:18:46.975>its <00:18:47.175>own <00:18:47.375>gradle <00:18:47.575>files.

420
00:18:49.595 --> 00:18:51.335
<00:18:49.595>So <00:18:49.795>in <00:18:49.995>this <00:18:50.195>Gradle <00:18:50.395>file, <00:18:50.595>you <00:18:50.795>just <00:18:50.995>need

421
00:18:51.335 --> 00:18:54.175
<00:18:51.335>to <00:18:51.462>register <00:18:51.589>the <00:18:51.716>plugin <00:18:51.844>you <00:18:51.971>created <00:18:52.098>and <00:18:52.225>you <00:18:52.353>give <00:18:52.480>it <00:18:52.607>an <00:18:52.735>id.

422
00:18:54.835 --> 00:18:56.975
<00:18:54.835>For <00:18:55.010>example, <00:18:55.185>here <00:18:55.360>it's <00:18:55.535>comm <00:18:55.710>to <00:18:55.885>summit <00:18:56.060>Do <00:18:56.235>health

423
00:18:57.635 --> 00:19:00.815
<00:18:57.635>or <00:18:57.790>comm <00:18:57.946>do <00:18:58.101>summit <00:18:58.257>Do <00:18:58.412>detect <00:18:58.568>and <00:18:58.723>you <00:18:58.879>register <00:18:59.035>it

424
00:19:00.875 --> 00:19:02.535
<00:19:00.875>and <00:19:01.108>you <00:19:01.341>can <00:19:01.575>just <00:19:01.808>use <00:19:02.041>it <00:19:02.275>anywhere.

425
00:19:03.235 --> 00:19:05.615
<00:19:03.235>But <00:19:03.409>before <00:19:03.584>you <00:19:03.760>use <00:19:03.935>it, <00:19:04.110>like <00:19:04.284>every <00:19:04.459>other <00:19:04.635>module,

426
00:19:06.005 --> 00:19:07.535
<00:19:06.005>when <00:19:06.177>you <00:19:06.349>create <00:19:06.521>a <00:19:06.693>module, <00:19:06.865>you <00:19:07.037>need <00:19:07.209>to <00:19:07.382>go

427
00:19:07.535 --> 00:19:09.855
<00:19:07.535>to <00:19:07.768>the <00:19:08.001>project <00:19:08.235>route <00:19:08.468>settings, <00:19:08.701>uh, <00:19:08.935>gradle,

428
00:19:09.855 --> 00:19:11.415
<00:19:09.855>and <00:19:10.088>you <00:19:10.321>need <00:19:10.555>to <00:19:10.788>include <00:19:11.021>the <00:19:11.255>module.

429
00:19:11.875 --> 00:19:13.375
<00:19:11.875>But <00:19:12.100>here <00:19:12.325>you <00:19:12.550>need <00:19:12.775>to <00:19:13.000>include <00:19:13.225>build

430
00:19:13.375 --> 00:19:16.175
<00:19:13.375>because <00:19:13.550>it <00:19:13.725>goes <00:19:13.900>in <00:19:14.075>the <00:19:14.250>build <00:19:14.425>files, <00:19:14.600>not <00:19:14.775>direct,

431
00:19:16.365 --> 00:19:17.855
<00:19:16.365>like <00:19:16.700>not <00:19:17.035>just <00:19:17.370>normal <00:19:17.706>module.

432
00:19:20.275 --> 00:19:23.855
<00:19:20.275>And <00:19:20.391>in <00:19:20.508>the <00:19:20.625>end <00:19:20.741>you <00:19:20.858>can <00:19:20.975>just, <00:19:21.091>in <00:19:21.208>any, <00:19:21.325>any, <00:19:21.441>uh, <00:19:21.558>set <00:19:21.675>uh,

433
00:19:23.995 --> 00:19:25.535
<00:19:23.995>any <00:19:24.456>build <00:19:24.919>gradle <00:19:25.381>file,

434
00:19:25.535 --> 00:19:27.895
<00:19:25.535>you <00:19:25.710>can <00:19:25.885>just <00:19:26.060>use <00:19:26.235>the <00:19:26.410>plugins <00:19:26.585>directly <00:19:26.760>by <00:19:26.935>id.

435
00:19:28.475 --> 00:19:31.015
<00:19:28.475>And <00:19:28.675>whenever <00:19:28.875>you <00:19:29.074>want <00:19:29.274>to <00:19:29.475>change <00:19:29.675>something <00:19:29.875>in

436
00:19:31.015 --> 00:19:32.055
<00:19:31.015>health, <00:19:31.249>you <00:19:31.483>change <00:19:31.717>it <00:19:31.951>once.

437
00:19:32.155 --> 00:19:33.335
<00:19:32.155>It <00:19:32.420>affects <00:19:32.686>the <00:19:32.951>whole <00:19:33.217>project.

438
00:19:33.795 --> 00:19:36.855
<00:19:33.795>For <00:19:33.950>example, <00:19:34.106>we <00:19:34.261>don't <00:19:34.417>just <00:19:34.572>use <00:19:34.728>it <00:19:34.883>for <00:19:35.039>health <00:19:35.195>detect

439
00:19:36.855 --> 00:19:38.495
<00:19:36.855>and <00:19:37.030>so <00:19:37.205>on <00:19:37.380>because <00:19:37.555>this <00:19:37.730>is <00:19:37.905>kind <00:19:38.080>of <00:19:38.255>useless.

440
00:19:38.495 --> 00:19:41.295
<00:19:38.495>We <00:19:38.695>use <00:19:38.895>more <00:19:39.094>like <00:19:39.294>come <00:19:39.495>summit, <00:19:39.695>do <00:19:39.895>library.

441
00:19:41.835 --> 00:19:45.775
<00:19:41.835>That's <00:19:42.010>for <00:19:42.185>example, <00:19:42.360>a <00:19:42.535>big <00:19:42.710>module <00:19:42.885>that's <00:19:43.060>almost <00:19:43.235>SDK

442
00:19:45.775 --> 00:19:48.535
<00:19:45.775>and <00:19:45.950>doesn't <00:19:46.125>have <00:19:46.300>lots <00:19:46.475>of <00:19:46.650>features <00:19:46.825>is <00:19:47.000>library <00:19:47.175>module.

443
00:19:49.075 --> 00:19:51.975
<00:19:49.075>And <00:19:49.230>then <00:19:49.386>we <00:19:49.541>have <00:19:49.697>all <00:19:49.852>of <00:19:50.008>these <00:19:50.163>things <00:19:50.319>already <00:19:50.475>predefined.

444
00:19:51.975 --> 00:19:54.015
<00:19:51.975>So <00:19:52.149>we <00:19:52.324>just <00:19:52.500>apply <00:19:52.675>com <00:19:52.850>to <00:19:53.024>summit, <00:19:53.199>do <00:19:53.375>library,

445
00:19:54.115 --> 00:19:56.535
<00:19:54.115>and <00:19:54.290>already <00:19:54.465>the <00:19:54.640>module <00:19:54.815>has <00:19:54.990>everything <00:19:55.165>that <00:19:55.340>we <00:19:55.515>need.

446
00:19:56.535 --> 00:19:59.615
<00:19:56.535>We <00:19:56.710>can't <00:19:56.885>just <00:19:57.060>care <00:19:57.235>about <00:19:57.410>the <00:19:57.585>module <00:19:57.760>related <00:19:57.935>stuff

447
00:19:59.615 --> 00:20:01.215
<00:19:59.615>after <00:19:59.965>that, <00:20:00.315>not <00:20:00.665>the <00:20:01.015>configuration.

448
00:20:02.805 --> 00:20:05.415
<00:20:02.805>Okay, <00:20:03.038>so <00:20:03.271>summary, <00:20:03.505>to <00:20:03.738>build <00:20:03.971>this, <00:20:04.205>you,

449
00:20:05.435 --> 00:20:07.935
<00:20:05.435>you <00:20:05.610>just <00:20:05.784>create <00:20:05.960>build <00:20:06.135>logic <00:20:06.310>module, <00:20:06.485>convention <00:20:06.659>sub <00:20:06.835>module

450
00:20:08.635 --> 00:20:11.295
<00:20:08.635>at <00:20:08.790>the, <00:20:08.946>in <00:20:09.101>the <00:20:09.257>settings, <00:20:09.412>gradle, <00:20:09.568>uh, <00:20:09.723>of <00:20:09.879>the <00:20:10.035>route.

451
00:20:11.315 --> 00:20:14.295
<00:20:11.315>You <00:20:11.490>include <00:20:11.665>the <00:20:11.840>build <00:20:12.015>and <00:20:12.190>you <00:20:12.365>create <00:20:12.540>your <00:20:12.715>plugin.

452
00:20:14.295 --> 00:20:15.655
<00:20:14.295>For <00:20:14.539>example, <00:20:14.784>some <00:20:15.029>of <00:20:15.274>base <00:20:15.519>plugin

453
00:20:16.395 --> 00:20:19.535
<00:20:16.395>and <00:20:16.628>you <00:20:16.861>apply, <00:20:17.095>uh, <00:20:17.328>all <00:20:17.561>your, <00:20:17.795>uh,

454
00:20:19.725 --> 00:20:21.015
<00:20:19.725>plugins <00:20:20.015>that <00:20:20.305>you <00:20:20.595>already <00:20:20.886>created.

455
00:20:21.235 --> 00:20:24.335
<00:20:21.235>We <00:20:21.409>created <00:20:21.584>detect, <00:20:21.760>we <00:20:21.935>created <00:20:22.110>let's <00:20:22.284>say <00:20:22.459>a <00:20:22.635>coco.

456
00:20:24.635 --> 00:20:27.455
<00:20:24.635>So <00:20:24.775>we <00:20:24.915>can <00:20:25.055>have <00:20:25.195>some <00:20:25.335>of <00:20:25.475>base <00:20:25.615>plugins <00:20:25.754>that <00:20:25.895>has <00:20:26.035>everything

457
00:20:28.295 --> 00:20:31.275
<00:20:28.295>and <00:20:28.422>then <00:20:28.549>we <00:20:28.676>need <00:20:28.804>to <00:20:28.931>register <00:20:29.058>it <00:20:29.185>in, <00:20:29.313>uh, <00:20:29.440>the <00:20:29.567>build <00:20:29.695>gradle,

458
00:20:32.575 --> 00:20:35.515
<00:20:32.575>and <00:20:32.715>then <00:20:32.855>we <00:20:32.995>can <00:20:33.135>just, <00:20:33.275>uh, <00:20:33.415>use <00:20:33.555>it <00:20:33.695>in <00:20:33.835>any <00:20:33.975>module.

459
00:20:38.825 --> 00:20:41.245
<00:20:38.825>And <00:20:39.058>register <00:20:39.291>is <00:20:39.525>just, <00:20:39.758>uh, <00:20:39.991>a <00:20:40.225>function

460
00:20:41.245 --> 00:20:43.765
<00:20:41.245>that <00:20:41.400>defines <00:20:41.556>new <00:20:41.711>object, <00:20:41.867>but <00:20:42.022>only <00:20:42.178>when <00:20:42.333>you <00:20:42.489>need <00:20:42.645>it.

461
00:20:44.345 --> 00:20:45.925
<00:20:44.345>It, <00:20:44.625>it <00:20:44.905>doesn't <00:20:45.185>matter <00:20:45.465>most <00:20:45.745>likely.

462
00:20:45.955 --> 00:20:49.405
<00:20:45.955>Like <00:20:46.110>these <00:20:46.266>things <00:20:46.421>you <00:20:46.577>copy <00:20:46.732>paste, <00:20:46.888>it's <00:20:47.043>on <00:20:47.199>the <00:20:47.355>internet

463
00:20:51.305 --> 00:20:54.005
<00:20:51.305>And <00:20:51.460>that's <00:20:51.616>it, <00:20:51.771>and <00:20:51.927>you <00:20:52.082>just <00:20:52.238>have <00:20:52.393>your <00:20:52.549>greater <00:20:52.705>plugin

464
00:20:54.005 --> 00:20:55.245
<00:20:54.005>that <00:20:54.284>you <00:20:54.563>can <00:20:54.841>work <00:20:55.120>on.

465
00:20:56.185 --> 00:20:59.965
<00:20:56.185>But <00:20:56.360>this <00:20:56.534>only <00:20:56.710>works <00:20:56.885>for <00:20:57.060>the <00:20:57.235>convention, <00:20:57.409>uh, <00:20:57.585>plugin.

466
00:20:59.985 --> 00:21:03.085
<00:20:59.985>So <00:21:00.112>you <00:21:00.239>need <00:21:00.366>to <00:21:00.494>say, <00:21:00.621>okay, <00:21:00.748>I <00:21:00.875>need <00:21:01.003>to <00:21:01.130>initialize <00:21:01.257>my <00:21:01.385>module,

467
00:21:03.285 --> 00:21:07.285
<00:21:03.285>I <00:21:03.425>need <00:21:03.565>the <00:21:03.705>dagger, <00:21:03.845>uh, <00:21:03.985>the <00:21:04.125>detect, <00:21:04.265>all <00:21:04.405>of <00:21:04.545>these <00:21:04.685>things.

468
00:21:08.505 --> 00:21:11.765
<00:21:08.505>But <00:21:08.660>what <00:21:08.816>if <00:21:08.971>you <00:21:09.127>want <00:21:09.282>also <00:21:09.438>to <00:21:09.593>unify <00:21:09.749>the <00:21:09.905>versions

469
00:21:11.765 --> 00:21:13.005
<00:21:11.765>of <00:21:12.044>the <00:21:12.323>libraries <00:21:12.602>you <00:21:12.881>use

470
00:21:13.305 --> 00:21:16.645
<00:21:13.305>and <00:21:13.480>the <00:21:13.655>libraries <00:21:13.830>you <00:21:14.005>use, <00:21:14.180>the <00:21:14.355>dependencies <00:21:14.530>you <00:21:14.705>can,

471
00:21:16.665 --> 00:21:19.005
<00:21:16.665>in <00:21:16.898>this <00:21:17.131>case <00:21:17.365>use <00:21:17.598>maybe <00:21:17.831>version <00:21:18.065>catalogs,

472
00:21:19.455 --> 00:21:22.165
<00:21:19.455>which <00:21:19.582>is <00:21:19.709>now <00:21:19.836>quite <00:21:19.964>easy <00:21:20.091>and <00:21:20.218>I <00:21:20.345>think <00:21:20.473>it <00:21:20.600>comes <00:21:20.727>by <00:21:20.855>default.

473
00:21:22.185 --> 00:21:24.285
<00:21:22.185>Now <00:21:22.385>when <00:21:22.585>you <00:21:22.784>create, <00:21:22.985>uh, <00:21:23.185>end <00:21:23.385>Android <00:21:23.585>project,

474
00:21:24.475 --> 00:21:27.405
<00:21:24.475>something <00:21:24.708>like <00:21:24.941>Libs, <00:21:25.175>uh, <00:21:25.408>Android <00:21:25.641>execute <00:21:25.875>browser,

475
00:21:27.515 --> 00:21:29.805
<00:21:27.515>this <00:21:27.715>will <00:21:27.915>have <00:21:28.115>all <00:21:28.315>the <00:21:28.515>version <00:21:28.715>definitions <00:21:28.915>already

476
00:21:29.835 --> 00:21:32.765
<00:21:29.835>pre-created <00:21:30.010>in <00:21:30.185>the <00:21:30.360>version <00:21:30.535>catalog, <00:21:30.710>how <00:21:30.885>to <00:21:31.060>create <00:21:31.235>it.

477
00:21:33.425 --> 00:21:37.555
<00:21:33.425>So <00:21:33.565>you <00:21:33.705>can <00:21:33.845>have <00:21:33.985>a <00:21:34.125>total <00:21:34.264>file <00:21:34.405>that <00:21:34.544>has <00:21:34.685>the <00:21:34.825>versions,

478
00:21:37.655 --> 00:21:39.835
<00:21:37.655>the <00:21:37.935>libraries, <00:21:38.215>the <00:21:38.495>bundles, <00:21:38.774>the <00:21:39.055>plugins,

479
00:21:40.045 --> 00:21:41.395
<00:21:40.045>everything <00:21:40.450>in <00:21:40.855>one <00:21:41.260>file.

480
00:21:41.535 --> 00:21:42.875
<00:21:41.535>So <00:21:41.776>you <00:21:42.017>have <00:21:42.258>all <00:21:42.499>the <00:21:42.741>definitions

481
00:21:43.015 --> 00:21:45.555
<00:21:43.015>and <00:21:43.170>you <00:21:43.326>can <00:21:43.481>just <00:21:43.637>use <00:21:43.792>it <00:21:43.948>everywhere <00:21:44.103>in <00:21:44.259>every <00:21:44.415>module.

482
00:21:45.875 --> 00:21:47.755
<00:21:45.875>Whenever <00:21:46.075>you <00:21:46.275>want <00:21:46.475>to, <00:21:46.675>uh, <00:21:46.875>add <00:21:47.075>a <00:21:47.275>dependency,

483
00:21:47.765 --> 00:21:50.555
<00:21:47.765>dependency <00:21:47.998>like <00:21:48.231>Android <00:21:48.465>X <00:21:48.698>browser <00:21:48.931>for <00:21:49.165>example,

484
00:21:52.855 --> 00:21:56.155
<00:21:52.855>you <00:21:52.995>can <00:21:53.135>create <00:21:53.275>it <00:21:53.415>from <00:21:53.555>the <00:21:53.695>toil <00:21:53.835>file <00:21:53.975>by <00:21:54.115>just <00:21:54.255>going

485
00:21:56.215 --> 00:21:58.755
<00:21:56.215>to <00:21:56.448>the <00:21:56.681>settings, <00:21:56.915>uh, <00:21:57.148>the <00:21:57.381>root <00:21:57.615>settings

486
00:21:58.895 --> 00:22:02.635
<00:21:58.895>and <00:21:59.070>uh, <00:21:59.245>settings <00:21:59.420>look <00:21:59.595>Gradle <00:21:59.770>and <00:21:59.945>you <00:22:00.120>create <00:22:00.295>lips

487
00:22:03.135 --> 00:22:05.395
<00:22:03.135>and <00:22:03.310>you <00:22:03.485>just <00:22:03.660>tell, <00:22:03.835>tell <00:22:04.010>it <00:22:04.185>from <00:22:04.360>which <00:22:04.535>file.

488
00:22:05.485 --> 00:22:07.555
<00:22:05.485>It'll <00:22:05.659>create <00:22:05.834>the <00:22:06.010>version <00:22:06.185>catalog <00:22:06.360>and <00:22:06.534>it'll <00:22:06.709>create <00:22:06.885>it.

489
00:22:07.615 --> 00:22:11.875
<00:22:07.615>But <00:22:07.755>also <00:22:07.895>if <00:22:08.035>you <00:22:08.175>have <00:22:08.315>the <00:22:08.455>version <00:22:08.595>catalog, <00:22:08.735>the <00:22:08.875>toil <00:22:09.015>file,

490
00:22:12.495 --> 00:22:15.395
<00:22:12.495>uh, <00:22:12.650>lips <00:22:12.806>versions <00:22:12.961>do <00:22:13.117>toil, <00:22:13.272>it'll <00:22:13.428>be <00:22:13.583>created <00:22:13.739>by <00:22:13.895>default.

491
00:22:15.395 --> 00:22:17.795
<00:22:15.395>You <00:22:15.535>don't <00:22:15.675>need <00:22:15.815>also <00:22:15.955>to <00:22:16.095>define <00:22:16.235>it. <00:22:16.375>This <00:22:16.514>will <00:22:16.655>just <00:22:16.795>work.

492
00:22:23.425 --> 00:22:26.165
<00:22:23.425>And <00:22:23.565>you <00:22:23.705>can <00:22:23.845>also <00:22:23.985>create <00:22:24.125>it <00:22:24.264>from <00:22:24.405>the <00:22:24.544>settings <00:22:24.685>file <00:22:24.825>directly.

493
00:22:26.165 --> 00:22:28.485
<00:22:26.165>Instead <00:22:26.365>of <00:22:26.565>having <00:22:26.764>toil <00:22:26.965>file <00:22:27.165>by <00:22:27.365>coline <00:22:27.565>code,

494
00:22:28.485 --> 00:22:30.845
<00:22:28.485>you <00:22:28.659>just <00:22:28.834>add <00:22:29.010>your <00:22:29.185>definitions, <00:22:29.360>you <00:22:29.534>create <00:22:29.709>the <00:22:29.885>slips

495
00:22:30.845 --> 00:22:33.365
<00:22:30.845>and <00:22:31.020>you <00:22:31.195>add <00:22:31.370>your <00:22:31.545>definitions, <00:22:31.720>which <00:22:31.895>will <00:22:32.070>also <00:22:32.245>work,

496
00:22:33.385 --> 00:22:35.285
<00:22:33.385>but <00:22:33.585>it's <00:22:33.785>not <00:22:33.985>very <00:22:34.185>scalable, <00:22:34.385>I <00:22:34.585>would <00:22:34.785>say.

497
00:22:36.825 --> 00:22:41.525
<00:22:36.825>So <00:22:37.058>creating <00:22:37.291>custom <00:22:37.525>gradle <00:22:37.758>plugin <00:22:37.991>that <00:22:38.225>settings,

498
00:22:41.645 --> 00:22:43.605
<00:22:41.645>plugins <00:22:41.878>in <00:22:42.111>the <00:22:42.345>seed <00:22:42.578>of <00:22:42.811>convention <00:22:43.045>plugin.

499
00:22:43.775 --> 00:22:46.885
<00:22:43.775>First <00:22:43.891>of <00:22:44.008>all, <00:22:44.125>why <00:22:44.241>do <00:22:44.358>we <00:22:44.475>need <00:22:44.591>this? <00:22:44.708>Why <00:22:44.825>do <00:22:44.941>we <00:22:45.058>need <00:22:45.175>this?

500
00:22:48.105 --> 00:22:49.885
<00:22:48.105>You <00:22:48.455>have <00:22:48.805>already <00:22:49.155>version <00:22:49.505>catalogs

501
00:22:49.885 --> 00:22:52.285
<00:22:49.885>that <00:22:50.060>you <00:22:50.235>can <00:22:50.410>share <00:22:50.585>all <00:22:50.760>dependencies <00:22:50.935>across <00:22:51.110>all <00:22:51.285>modules,

502
00:22:52.285 --> 00:22:53.365
<00:22:52.285>so <00:22:52.771>that's <00:22:53.257>fine.

503
00:22:53.425 --> 00:22:55.365
<00:22:53.425>And <00:22:53.625>you <00:22:53.825>don't <00:22:54.024>need <00:22:54.225>settings <00:22:54.425>plugin <00:22:54.625>for <00:22:54.825>the,

504
00:22:55.505 --> 00:22:56.965
<00:22:55.505>but <00:22:55.767>for <00:22:56.030>our <00:22:56.293>case, <00:22:56.556>don't <00:22:56.819>forget

505
00:22:56.965 --> 00:22:59.685
<00:22:56.965>that <00:22:57.165>I <00:22:57.365>said <00:22:57.564>we <00:22:57.764>have <00:22:57.965>polio <00:22:58.165>ripple <00:22:58.365>pattern.

506
00:23:00.025 --> 00:23:03.765
<00:23:00.025>So <00:23:00.165>we <00:23:00.305>have <00:23:00.445>also <00:23:00.585>other <00:23:00.725>repositories <00:23:00.865>that <00:23:01.005>we <00:23:01.145>need <00:23:01.285>to <00:23:01.425>share

507
00:23:04.345 --> 00:23:08.285
<00:23:04.345>all <00:23:04.500>our <00:23:04.656>versions <00:23:04.811>to <00:23:04.967>it, <00:23:05.122>to <00:23:05.278>not <00:23:05.433>have <00:23:05.589>different <00:23:05.745>versions

508
00:23:08.285 --> 00:23:10.645
<00:23:08.285>and <00:23:08.518>different <00:23:08.751>repositories <00:23:08.985>of <00:23:09.218>the <00:23:09.451>same <00:23:09.685>dependency,

509
00:23:10.655 --> 00:23:12.045
<00:23:10.655>which <00:23:10.905>was <00:23:11.155>a <00:23:11.405>very <00:23:11.655>big <00:23:11.906>problem.

510
00:23:12.915 --> 00:23:15.365
<00:23:12.915>Usually <00:23:13.115>it <00:23:13.315>ends <00:23:13.514>with <00:23:13.715>build <00:23:13.915>air, <00:23:14.115>build <00:23:14.315>issues

511
00:23:15.425 --> 00:23:18.645
<00:23:15.425>or <00:23:15.625>runtime <00:23:15.825>issues <00:23:16.024>that <00:23:16.225>are <00:23:16.425>very, <00:23:16.625>very <00:23:16.825>unexpected.

512
00:23:19.345 --> 00:23:21.925
<00:23:19.345>So <00:23:19.500>it, <00:23:19.656>for <00:23:19.811>this, <00:23:19.967>we <00:23:20.122>needed <00:23:20.278>to <00:23:20.433>have <00:23:20.589>settings, <00:23:20.745>plugins

513
00:23:21.955 --> 00:23:23.365
<00:23:21.955>that <00:23:22.272>share <00:23:22.589>our <00:23:22.906>version <00:23:23.224>catalog.

514
00:23:23.945 --> 00:23:25.685
<00:23:23.945>You <00:23:24.145>can <00:23:24.345>do <00:23:24.544>the <00:23:24.745>same. <00:23:24.945>You <00:23:25.145>have <00:23:25.345>the

515
00:23:25.685 --> 00:23:26.805
<00:23:25.685>Build <00:23:26.021>Logic <00:23:26.357>module <00:23:26.693>already.

516
00:23:27.865 --> 00:23:31.485
<00:23:27.865>So <00:23:28.040>you <00:23:28.215>can <00:23:28.390>have, <00:23:28.565>um, <00:23:28.740>settings, <00:23:28.915>uh, <00:23:29.090>sub <00:23:29.265>module

517
00:23:32.855 --> 00:23:34.035
<00:23:32.855>and <00:23:33.120>also <00:23:33.386>include <00:23:33.651>the <00:23:33.917>build.

518
00:23:34.095 --> 00:23:36.555
<00:23:34.095>And <00:23:34.295>then <00:23:34.495>in <00:23:34.695>this <00:23:34.895>settings <00:23:35.095>you <00:23:35.295>can <00:23:35.495>apply

519
00:23:37.255 --> 00:23:40.705
<00:23:37.255>the <00:23:37.455>version <00:23:37.655>catalogs <00:23:37.855>there <00:23:38.055>for <00:23:38.255>settings <00:23:38.455>project, <00:23:38.655>uh,

520
00:23:40.705 --> 00:23:42.065
<00:23:40.705>for <00:23:40.908>settings <00:23:41.113>in <00:23:41.317>the <00:23:41.521>seed <00:23:41.725>of <00:23:41.929>project.

521
00:23:42.485 --> 00:23:45.685
<00:23:42.485>And <00:23:42.659>you <00:23:42.834>just <00:23:43.010>create <00:23:43.185>the <00:23:43.360>version, <00:23:43.534>uh, <00:23:43.709>the <00:23:43.885>plugin

522
00:23:46.945 --> 00:23:50.285
<00:23:46.945>and <00:23:47.120>you <00:23:47.294>can <00:23:47.470>add <00:23:47.645>comm <00:23:47.820>some <00:23:47.995>base, <00:23:48.169>plugin, <00:23:48.345>whatever.

523
00:23:50.345 --> 00:23:53.205
<00:23:50.345>And <00:23:50.500>this <00:23:50.656>will <00:23:50.811>apply <00:23:50.967>all <00:23:51.122>the <00:23:51.278>definitions <00:23:51.433>in <00:23:51.589>any <00:23:51.745>project

524
00:23:53.235 --> 00:23:57.525
<00:23:53.235>that <00:23:53.584>you <00:23:53.935>want <00:23:54.284>and <00:23:54.635>create.

525
00:23:57.585 --> 00:23:59.445
<00:23:57.585>It <00:23:57.865>creates <00:23:58.145>item. <00:23:58.425>Create <00:23:58.705>creates <00:23:58.985>things

526
00:23:59.445 --> 00:24:01.805
<00:23:59.445>because <00:23:59.620>it's <00:23:59.794>settings, <00:23:59.970>plugins, <00:24:00.145>it <00:24:00.320>needs <00:24:00.495>to <00:24:00.669>be <00:24:00.845>pre-created.

527
00:24:01.805 --> 00:24:02.805
<00:24:01.805>It's <00:24:02.030>not <00:24:02.255>only <00:24:02.480>on <00:24:02.705>demand.

528
00:24:04.545 --> 00:24:06.845
<00:24:04.545>And <00:24:04.778>then <00:24:05.011>when <00:24:05.245>you <00:24:05.478>create <00:24:05.711>a <00:24:05.945>plugin,

529
00:24:06.845 --> 00:24:08.245
<00:24:06.845>any <00:24:07.097>plugin, <00:24:07.349>you <00:24:07.601>can <00:24:07.852>publish <00:24:08.105>it.

530
00:24:08.385 --> 00:24:11.085
<00:24:08.385>So <00:24:08.618>there <00:24:08.851>is <00:24:09.085>already <00:24:09.318>extension <00:24:09.551>from, <00:24:09.785>um,

531
00:24:11.885 --> 00:24:13.245
<00:24:11.885>Koland <00:24:12.129>DSL <00:24:12.374>that <00:24:12.619>you <00:24:12.864>can <00:24:13.109>publish.

532
00:24:13.665 --> 00:24:15.285
<00:24:13.665>So <00:24:13.898>we <00:24:14.131>can't <00:24:14.365>just <00:24:14.598>publish <00:24:14.831>this <00:24:15.065>plugin

533
00:24:15.285 --> 00:24:17.965
<00:24:15.285>and <00:24:15.460>you <00:24:15.635>can <00:24:15.810>apply <00:24:15.985>it <00:24:16.160>in <00:24:16.335>any <00:24:16.510>other <00:24:16.685>repositories

534
00:24:18.065 --> 00:24:19.085
<00:24:18.065>and <00:24:18.371>just <00:24:18.677>use <00:24:18.983>it.

535
00:24:23.075 --> 00:24:25.735
<00:24:23.075>Uh, <00:24:23.275>you <00:24:23.475>don't <00:24:23.675>have <00:24:23.875>time <00:24:24.075>to <00:24:24.275>share <00:24:24.475>this

536
00:24:26.315 --> 00:24:28.855
<00:24:26.315>and <00:24:26.515>just <00:24:26.715>got <00:24:26.915>a <00:24:27.115>warning, <00:24:27.315>uh, <00:24:27.515>like <00:24:27.715>that.

537
00:24:28.855 --> 00:24:31.455
<00:24:28.855>We <00:24:29.010>have <00:24:29.166>three <00:24:29.321>minutes. <00:24:29.477>This <00:24:29.632>was <00:24:29.788>a <00:24:29.943>bonus <00:24:30.099>topic, <00:24:30.255>like

538
00:24:31.455 --> 00:24:34.215
<00:24:31.455>how <00:24:31.629>we <00:24:31.804>shared, <00:24:31.980>uh, <00:24:32.155>the <00:24:32.330>settings, <00:24:32.504>plugins <00:24:32.679>in <00:24:32.855>all

539
00:24:34.215 --> 00:24:35.575
<00:24:34.215>of <00:24:34.459>the <00:24:34.704>repositories <00:24:34.949>and <00:24:35.194>so <00:24:35.439>on.

540
00:24:36.235 --> 00:24:39.045
<00:24:36.235>But <00:24:36.935>you <00:24:37.635>can,

541
00:24:39.145 --> 00:24:42.045
<00:24:39.145>if <00:24:39.320>you <00:24:39.495>are <00:24:39.670>interested <00:24:39.845>in <00:24:40.020>solving <00:24:40.195>the <00:24:40.370>dependency <00:24:40.545>issues

542
00:24:42.185 --> 00:24:43.285
<00:24:42.185>in <00:24:42.514>polio <00:24:42.845>repo <00:24:43.175>pattern.

543
00:24:43.695 --> 00:24:45.965
<00:24:43.695>There <00:24:43.895>was <00:24:44.095>Android <00:24:44.294>talk <00:24:44.495>last <00:24:44.695>year <00:24:44.895>I <00:24:45.095>gave,

544
00:24:46.025 --> 00:24:47.845
<00:24:46.025>it <00:24:46.305>was <00:24:46.585>only <00:24:46.865>about <00:24:47.145>this <00:24:47.425>topic,

545
00:24:47.945 --> 00:24:50.005
<00:24:47.945>so <00:24:48.145>you <00:24:48.345>can <00:24:48.544>just, <00:24:48.745>uh, <00:24:48.945>find <00:24:49.145>it <00:24:49.345>there.

546
00:24:50.765 --> 00:24:52.285
<00:24:50.765>I <00:24:50.960>don't <00:24:51.155>know <00:24:51.351>if <00:24:51.546>the <00:24:51.742>QR <00:24:51.937>code <00:24:52.133>works.

547
00:24:52.445 --> 00:24:54.045
<00:24:52.445>I <00:24:52.645>hope <00:24:52.845>it <00:24:53.044>works, <00:24:53.245>but <00:24:53.445>if <00:24:53.645>it <00:24:53.845>doesn't,

548
00:24:54.045 --> 00:24:56.805
<00:24:54.045>you'll <00:24:54.245>find <00:24:54.445>it <00:24:54.645>on <00:24:54.845>Android, <00:24:55.045>um, <00:24:55.245>con, <00:24:55.445>um,

549
00:24:58.075 --> 00:24:59.605
<00:24:58.075>website <00:24:58.304>on <00:24:58.534>the, <00:24:58.763>in <00:24:58.993>the <00:24:59.222>videos <00:24:59.452>there.

550
00:25:02.345 --> 00:25:03.525
<00:25:02.345>And <00:25:02.876>that's <00:25:03.407>it.