Hi everyone, my name is Hyokyokui. I'm a software engineer at NTT Communications and I'm in charge of developing network provision system, especially for transport network, to configure some optical devices like transponder, rodent, and layer-to-switching network. I'm also a member of DevOps platform team and I'm working on developing Kubernetes-based CACD platform. And now I'm really interested in bringing my knowledge and experiences of Kubernetes and cloud-native application development to the modernization of the transport network provisioning system. So these days I'm mainly focusing on developing a new network provisioning system, leveraging cloud-native open-sources and application development practices. Thank you for having me at this great conference. I really appreciate Open Source Time to Japan community giving me this opportunity to share with you my recent activities about this cloud-native network provision system. Okay, so before we get into the main topic, let me share the scope of this presentation. The network provisioning system I will share with you is one that receives intent-based higher-level network provisioning request from the Northbound API, then it compiles the request to its actual device config and deploys it to the Southbound devices. It is just focused on the network configuration already and its target is only configuration plan, not control plan. So some topics like config generation from high-level intent, decorative configuration and programming, get-offs with the scope of this presentation. But other topics related to esteem control plan work for engine or API orchestration to integrate with other systems, monitoring till-touch provisioning out of the scope of this presentation. And today's session consists of the following four topics. First, I will share with you the legacy network provisioning system and the practical problems of it. Then I will introduce the cloud-native technologies helpful to develop network provisioning systems. And I will show you the brand-new network provisioning system, leveraging cloud Kubernetes and some other cloud-native open-source technologies. Finally, I will show you a demonstration of what I developed. Okay, so let's get into the main session. I will show the following two cases and explain the practical problems we will face at the production-level system development, API automation, and gate-based continuous delivery. So first, API automation. These days, most network devices or their management system have REST API to configure them through API automatically without human operation. In addition to that, and several modules and Python libraries for network automation are prepared as open-source. So thanks to these open technologies, we can develop a network element provisioner relatively easy. The network element provisioner receives an intent-based API request from the northbound, maps it to the actual device config, then sends a request to update device config of the southbound devices. If you want to provide some kind of on-demand network services using the devices and provisioner, you might need an API orchestrator or a workflow engine to collaborate with other systems, like inventory management, accounting, and so on. And in the network element provisioner, in most cases, some kind of configuration store is needed to store northbound service intents and to cache the actual device config for data reconciliation, when some cases for better performance. In my opinion, this is rarely simple, but the typical basic architecture of the telecom network service. As for entity communications, some products are structured like this architecture. However, you will face some critical problems if you want to develop production quality network services. First, Ansible is a great product, but if we want to integrate minor devices or develop complex use cases, there might be no Ansible modules you can use as an out-of-box solution, and you might have to implement network provisioning script from scratch. If you get into transport network application development, it is the case you are facing. And if you write simple network provisioning script by yourself, you might select text templating or like Ginger. Ginger text templating is useful, and it is enough when you implement the small use case and the configuration that there are no relationship and dependence between much request from northbound. But if you get into the complex use cases consisting of Android and Android network, lots of BGP connections, your strategy to use text templating will be broke. In addition, if you want to check what is actually provisioned to the network devices, these configurations are generated dynamically by network element provisioning, so you have to invoke get command as a network device directory to see what is actually deployed. And in terms of data sync, configuration drift might be caused in the case that the network operates to configure network devices directly without using network element provisioning for some troubleshooting. Or the case that the application version is updated and mapping logic from northbound intent to suspect device config is changed. You have to reconcile in such situation when configuration drift occurred. But if you have thousands of inter-based service orders, the minor data sync or reconciliation is already troublesome. Okay, so let's move on to the next use case. Get and get repository services are good choices for content department of infrastructure as a code. Most engines are familiar with get operation. So it improves developer experience and we can get lots of benefits from the get-based tools and practices that are elaborated for application development. Even in the network community, almost all engineers know the advantage of get-based operation. So recently, lots of network operators are eager to introduce get-based continuous delivery into the network operation using an simple script as a provision and using networks to manage infrastructure debt. But the get-based continuous delivery in the network community is a little bit different from the crowd-native get-offs approach and there are some critical problems in this use case as well. First, if there's no end-sever modules you can use and you choose the simple script and text templating, it is difficult to test whether the generated configuration is correct without deploying it to the actual device. The generated configuration is just a simple text and there are no models and schema so you cannot perform any static analysis or any other model-based tests like policy check. All you can do is go to file testing that the reviewer checks the difference between the previous snapshot and the newly generated one. As you know, it is very painful for a reviewer to check the overall config updates with his or her eyes and might miss some critical errors. It just depends on the reviewer's scale so it's very painful and we should try to change this situation. Even if the reviewer checks perfectly and there are no errors, unfortunately the actual mapped config might be different from the shared testing results. There are some reasons for this configuration dwarfed. One is that the management data stored at networks is changed from the one that is used as the shared testing time and also config storage will be occurred when the network element provisionals application version is different from the one installed in the shared environment. There is another problem. The config mapping logic of the network element provisionals depends on an external system like networks.  It's also needed to restore external service to the corresponding version. The network operation is not close to the git operation so operators must ensure the right version of the configuration at the right to both git repositories and external services like networks. As for security, this architecture selects the fresh based approach. So that's the all secrets like login password or credentials are stored at the network element provision. As you know, it increases the security risk and should be corrected. I've introduced some problems of the current network provisioning system. So from here, I will explain the cloud-native technologies that are helpful to solve these problems. There are lots of great technologies and also these in the cloud-net run scape. Today I'd like to share these four topics that is especially helpful for development of network provisioning system. As you know, Kubernetes is the most famous container orchestration tool in the world and it contains excellent mechanisms for automation, reconciliation loop and operator pattern. Kubernetes reconciliation loop is an engine to converge the actual state of the delivery target infrastructure to the declaratory described manifest by running the procedure implemented in recon-serial repeatedly. All Kubernetes resources are managed by its approach so that Kubernetes has some great features like resiliency and out-hearing. In addition, we can extend Kubernetes behavior by implementing custom resource definition and custom controller to manage external application or your own resources without modifying Kubernetes itself. Kubernetes operator patterns ecosystem is growing rapidly and there are some great approaches to write to your own custom operators like KubeBuild and Operator SDK. Next, get-offs. There are some important principles in get-offs that should be satisfied. The configurations of the system and the infrastructure must be described declaratively as an infrastructure's code and system configuration should be deployed when new get-committed is pushed or get-for-request merged to the main branch. And also, the concept of single-source of tools is really important for get-offs. Get-manifestor repository must be single-source of tools or configuration that must be aggregated to the manifestor repository. And get-offs controllers must support full-based approach to ensure the configuration that is stored as a single-source of tools repository will be deployed as it is without any modifications. And next, KubeLanguage. Kube is a powerful data configuration language and it has great features that change our relationship practice to handle declarative configurations significant. The following is a brief overview of Kube's features. Kube is specialized in data unification. It enables us to unify multiple data in the arbitrary layer. And since Kube is commutative and associative, so we can get the same result when performing a composite of multiple data regardless of the order of evaluation. In terms of types, Kube does not distinguish values, types, and value constraints. Even types and constraints are the kind of value, so the only difference between them is that types and constraints do not have concrete value. Due to this novel approach, we can declare constraints and schemer simply and effectively in the configuration data itself. Kube is also highly programmable. It supports software coding practices like templating and module, so we can take the same level of advantages as if we use general proofs language. In addition, you can generate Q-type differences from Go API, Open API, and Protobuf. So, you know, Q is a use case agnostic language, and it can support any data models by generating Q-types according to these API schemers. Now, leveraging cloud-native technologies I mentioned before and Q-rank, you can construct the sort of modern shear-shell pipe line like this. The declarative described manifest and system configuration is written by Q, and the configurations written in Q have types and schemer, so you will be able to perform static analysis like type validation. In addition to that, you can implement the logic of Porsche enforcement using Q, so you can perform Porsche tests with API as well using Q. You can set a proof-based get-offs using Algo CD or Flux CD. It performs pouring of the get-commit of the manifest level, and when it detects changes, the latest Q manifest is compiled to the YAML manifest, and then deployed to the Kubernetes cluster. In fact, as of now, Q is not widely used as far as I know. Customized or HEM is commonly used as configuration tool, but in my opinion, Q has the capability to repress them in the near future. In order to compare this modern shear-shell CD pipeline to the legacy network provisioning system, I have arranged modern shear-shell CD pipeline above and legacy network provisioning system below. They look similar, but there are some significant difference between them, and the legacy network provisioning system is behind in some points. As I mentioned before, there is no models and schema in the text-templating configuration, so there is no way to perform static analysis except for golden file testing. The configuration data stored in the manifest level is not single source of tools, so you need an extra operation in addition to running Get Checkout to execute rollback. And since simple procedure scripts and text-templating are included in the delivery flow, so the modification of the device config by the scripts might cause an error or a configuration derived. And it uses a pressure-based approach like shear-shell so all device secrets are stored at the network element provisioner, which increases security risk. All these issues are critical and should be addressed, and we can improve them much better by adapting the cloud-network technologies and practice to the network provisioning systems as well, I think. So let me introduce you to what I have created, the new network provisioning system leveraging cloud-network technologies. These are the basic requirements of this new network provisioning system. To improve testability and programmability, I need typed programming of network configuration, not simple text-templating. In the network configuration ecosystem, there is a good schema differential language called YANG, so it is better that the typed definitions are generated from a YANG schema automatically. And in addition to the programmability of network provisioning system itself, it is also important to improve the programmability of the Northbound application that calls Northbound API. In order to achieve this, it is needed to be able to provide an abstract, intent-based, however, cloud API easily and automatically without implementing a detailed merge or a deletion strategy. In my opinion, if this provisioning system can expose intent-based high-level cloud API, it is really helpful for developers of the Northbound application, since they can perform domain-driven development by using this network provisioning system as a repetitive layer of the DDD architecture. In order to achieve auto-generation of the high-level cloud API, the configuration language must have the ability to perform composite of multiple types of documentaries to be able to do that the characteristics commutative and associative required.  So, I decided to select Q as the configuration language for this network provisioning system. And, you know, also GetOps is the key concept of this network provisioning system. And I've implemented this feature using FlexCD source controller. And for other fundamental requirements of the network provisioning system, we need a feature-like transaction of distributed network devices in support of multi-pender, multi-person devices. And I've implemented these features as a Kubernetes custom operator. And I selected QBuilder to implement Kubernetes custom operators. I've implemented several custom operators for this network provisioning system. It was rarely helpful for me. And I focused on the core logic of the custom operator. This is overall design of this new network provisioning system I've implemented. But this diagram is a bit too busy to explain, so I will explain the details in parts. This is the API server. When it receives intent-based northbound API requests, it compiles a high-level model data to the low-level after-device config by evaluating Q configuration. Users of the system have to write the data mapper to map high-level model data to a low-level device config and it's very easy due to Q's high programmability. During the config compilation, Q performs the type validation and even policy check in the case that you write policy enforcement logic in data mapper. The API server exposes this GNMI API to the northbound, so operator or northbound application can deal with this system through GNMI. In order to generate the entire device config document from the multiple northbound request, it performs the composite of multiple compiled device configs. This composition is achieved by using Q's characteristics that is committed and associative. The compilation result sent to the Git manifest repository. The compilation result includes entire network device configuration so that this manifest repository is single source of tools so we can perform rollback the entire network configuration by already running Git checkout and we can also get the entire device config from Git repository without invoking show command on the network devices directory. As for shear testing we can perform shear test with the entire actual device config and we can also run static analysis like type validation and policy check which improves the testing quality. In this current cluster Flux-CD source controller device loader operator and device driver operators of each vendors on each versions are installed in advance. When prerequisite merged, Flux-CD source controller detects the configuration update and proves the latest configuration to the cluster. Flux-CD source controller updates the corresponding device loader to custom resource then the configuration update transaction starts. Device loader controller is responsible for transaction management. It acts as a commander of the transaction of distributed network devices. So if any device provision is failed all devices will rollback to the previous state. All device drivers are to be implemented as Kubernetes custom operator so you can easily extend to support multi-bender and multi-person devices by implementing device drivers as Kubernetes custom operator. As for secret since this network provision system uses Kubernetes cluster as its infrastructure it can use Kubernetes secret resources to store the device secrets. As you know there are some great open sources like external secrets operator and secret storage driver. We can easily integrate with secret managed services of public cloud. The secret merging integration is still in the conceptual stage it's a huge work. After all by integrating all components I've introduced to you we can make up the new network provision system like this. The new network provision system platform is already prepared but in order to use this system we need to create the diverse driver custom operator and the Q type definition for type validation. If the provision trigger device supports open config style young module and you want to configure the devices by open config model you can use open source y got which means young center code tools provided from the open config community. By using y got you can generate the code struct from young module and also you can generate Q type definition from the code struct by performing Q get command. You can use the code struct in order to implement the diverse driver custom operator and the Q type definitions to implement mapping logic from northbound to southbound device config inside the API server. As I mentioned we can get lots of benefits from open config and y got the diverse driver and mapping logic implementation but if you want to configure any other network devices which do not support young and open config we have to seek another way to generate them. It's also future work. Ok so I'll show you demonstration of this network provisioning system. So let's move on to the demonstration. I'll show you the simple demonstration that the network provisioning system config used to open config based GNMI emulator. All network provisioning components are installed in the single Kubernetes cluster so you can see all active containers by running get deployment. There are seven deployments. This is the API server and this is named network controller as the tentative name of this application. And the flux-shitty source controller and the Kubernetes custom controller for device-lowered resource and the custom controller as well for the device driver and two GNMI effects servers for the demonstration. You can also check the custom resource definitions like this. There are device-lowered custom resource definitions one for the open config demo device driver and flux-shitty get-represed custom resource is installed as well. There is one flux-shitty get-represed resource named network-shitty testbedder and it is addressed to this testing get-represed. And there is also one device-lowered custom resource that is named the same as flux-shitty source controller. Its current provision state is healthy which means that the provision transaction has been completed successfully. And the two open config custom resources are installed as the device driver in order to configure the apparatus. And these open config demo custom resources are registered to the device-lowered resource. In this mine list, there are two devices config 01 and config 02 and some data to manage merge device transaction is also stored at this mine first. So let's try to call northbound API and configure the fake devices. First, let me introduce the data mapping logic to convert the intent-based northbound service model to the southbound device model written in Q. This is data mapping provision logic and there are two fields input and template. And in this input field, there is a type definition and the northbound interface is exposed using this schema. In the template field, the main mapping logic is written. It has an input and output field and output field stored the key var pair. The key is the device and the var is the device config that should be configured to each device. This is just a conceptual demonstration and the use case in the configuration is also fake. Only brilliant sub-interface and brilliant definitions are provisioned. And you can configure using this interface and mapping logic from the northbound API by setting this request payload which means defined input interface. For the demonstration, let me set port forward to the API server and also set what to the device over to customer resource to show the update of its transaction state. I want to set VRN999 in this demonstration. So let me check there is no existing configuration of VRN999. You can get the entire device configuration by using GNM like this. And also check there is no existing configuration by graph. OK, fine. And so everything is prepared. Let me send the set request to the northbound API of the API server. There are no errors and API server make git comment and push it to the git repository then device robot customer resource receives the changes and conduct the transaction management and it changes to the running state it changes to the running state and the transaction is completed. OK. So let me check whether the VRN999 configuration is configured. The device config that is generated by evaluating mapping template working by Q is provisioned to the average to success free. And if you go to the git repository you can find the commit which has the same git revision. And VRN999 open config service model is configured then to device config generated from the northbound service model is also added. And you can see the detail is provisioned to the devices from the git console or by conducting it that is the end of this demonstration. OK. So let me check whether the requirements are satisfied by this network provision system. Reverging Q-RUN we got great programmability and testability compared to text templating. In addition, Q's characteristics, commutative and associative gave us the ability to perform composite of multiple pressure document trees. As a result, it enables us to create a high level abstraction model and expose graph interface. All these requirements are satisfied by adopting Q-RUN. As for GitOps and other requirements, fundamental requirement like single source of tools, tool-based approach, multi-device transaction are satisfied by adopting FoxGD and installs Kubernetes custom operator. But there are some remaining future works like secret manager integration and test with actual network devices. So now we are planning to perform an integration test with actual devices. At first, we are trying to do some field trial with transport white box transformers using open conveyor GNMI and as you can see, we need to conduct much more integration test cases with actual network devices to improve the quality of this system and also we'd like to release this network provision system as an open source, so we are actively developing missing free tools. Now, the system is just a Peeroshi quality, so we have to take much effort. These are the takeaways for my presentation. First, I've developed a new network provision system leveraging some cloud-nit open source technologies and Kubernetes. And the Kubernetes operator pattern is well designed for automation. It's really helpful to manage even external resources and can be upright even for the network configuration. Finally, Q is a great language that has the potential to be a game changer and we might be able to change our network provisioning operation drastically by integrating Q. This is the end of my presentation. Thank you for listening.


In Rhode Island, 1842, politician Thomas W. Doar, calling himself the people's governor, threatened civil war throughout New England. His main target was the famous colonial charter issued by King Charles II in 1663. In the 19th century, the document was of world historical importance, the planet's oldest existing written constitution at the time, and surely the most liberal in its own day. General Jacksonian and America's first professional historian, George Bancroft, declared, "'Nowhere in the world have life, liberty, and property been safer than in Rhode Island.'" Yet by 1841, the Union's smallest state was no longer a republic, and Bancroft was convinced that America's libertarian destiny required a revolution in Rogue's Island. Welcome to Liberty Chronicles, a project of libertarianism.org. I'm Anthony Comegna. Almost since its founding, Rhode Island was a democracy in decline. Thanks to Roger Williams and Anne Hutchinson's battles with Puritans in Massachusetts Bay, the state's founding principles were absolute religious liberty and peaceful cooperative interactions between peoples. In 1655, some small towns allowed as much as 90 percent of white males to vote. By 1725 to 1776, that shrunk to an average of 75 percent. When the revolution came, most states held constitutional conventions. Rhode Islanders kept their old charter, and still probably had the most democratic government in the world. It was the last ex-colony to ratify the Constitution, and the initial referendum lost by a huge margin. After federalist-dominated providence threatened to secede from the state, the countryside fell in line and joined the Union. Throughout the 1790s, entrepreneurs and capitalists introduced industrialization to North America, first in Rhode Island, and a large, landless, urban and immigrant population came with it. By 1829, so few people owned land that there were only about 8,400 freemen, and over 12,000 non-freemen. In the 1790s and the 1830s, every other state significantly extended voting rights, or entirely abolished land-holding requirements. But in Rhode Island, the charter provided no method of amendment. There literally was no legal way to change the document, unless you happen to have a king handy to issue a new one. And the government stubbornly refused any change in voting qualifications. By 1841, not even most white men could vote, and Rhode Island was a republic in name only. Such a serious situation called for a hero! But what Rhode Islanders got was Thomas Wilson Doar. Doar was born in Providence on November 5, 1805, to one of the state's leading families. He was a brilliant, privileged young man who studied law and looked destined to become governor one day. But in a by then crusty conservative state like Rhode Island, Doar had a problem. He was a radical liberal, a republican revolutionary. From a young age, Doar was captivated with the liberal and nationalist movements that spread across Europe after Napoleon's empire crashed. There were unification movements in Italy and Germany, independence movements in Ireland, Greece and Poland, and in France's July Revolution of 1830, the Paris masses forced King Charles X to abdicate. Doar believed that what the American Revolution first started was now spreading around the globe, extinguishing old regimes with the unstoppable force of destiny. Yet, even if global republicanism was mankind's inevitable future, people here and now, today, have to choose to make the future happen. Doar kept up a lively correspondence with European friends like railroad engineer William Bridges Adams, who often wrote for the liberal reform press and was praised by John Stuart Mill in On Liberty. When Adams sent Doar a copy of his 1832 essay on ethics and politics, Doar's reply voiced support for wide-ranging reforms in Britain and a liberal politics very nearly approaching modern libertarianism. Thomas Wilson Doar to Mr. William B. Adams of London, May 28th, 1832. Dear sir, we had the news a few days ago that the reform bill has passed a second reading in the Lords and will soon be discussed in committee. At this distance, it seems improbable that it can become a law without essential alterations depriving it of much of its vigor, unless the liberal portion of the House of Lords shall be strongly reinforced. Earl Grey seems to have incurred a great hazard in going to the vote on the second reading without a new creation of peers. Had the bill been lost, the disastrous consequences would have been an ever-lasting reproach to his memory. I say memory because his head would probably have been lost also, unless Englishmen are made of different stuff than what we give them credit for. It seems most reasonable to presume that he had positive assurance of a small majority. If your ministers were very much in earnest, would they not make straight quick work of the bill? There is ground for suspicion, but after all that has been said, written, and done out of parliament by the people, it is improbable to doubt that a reform equal to the necessities of the nation will be had in some way or other, and that speedily. For the sake of peace and humanity, it is to be hoped that the wisdom of the House of Lords will not come too late. Your rights of morality contains many just statements and reflections, but I agree with your critics in thinking that you have laid yourself open to a charge of agrarianism and that the class for whom the book is intended will understand you as teaching such a doctrine. It was doubtless the intention of the beneficent creator that all the individuals of the vast human family should subsist by the fruits of the earth, and there is certainly room enough for all who are sent into this breathing world, but fraud, violence, ignorance, accident and perverse human policy have contradicted and postponed the true interests of mankind for ages. It rejoices every philanthropic heart that there is now a strong tendency toward the natural arrangement. The perverse system of which I speak assigns to one man or to a few men vast tracks of land. To a large body, only such small portions as barely suffice to subsist them, and to the majority absolutely no share at all of the earth's surface.  These vast estates are accumulated by impolitic laws of entail and primogeniture. Vested rights of property exist under these laws. They are bad and should be repealed and the evil thus gradually corrected. The poor man, who does not now enjoy his share of the fruits of the earth, according to the benign provision of his maker, will then in time receive a portion of the divided estate of the overgrown proprietor. Comfort, intelligence and enterprise will denote that the greatest number has become happy and God meant they should be. Now I complain that the poor man may be led to think, by your book, that he has a present right to a portion of the great heritage and may help himself without waiting for the slow process of legislation. True, you tell him to be careful lest he make his condition worse by attempting to do himself justice, but his reply will be, concede my right, and I will take the risk of the consequences. Though most historians have ignored the fact, Thomas Wilson Doerr was also a loco-foco. He was a convert to America's first libertarian movement. The loco-focos fought Tammany Hall for control of the Democratic Party's nominating processes in the mid-1830s. They won at least a partial victory and succeeded in creating a more laissez-faire, more intellectually committed Democratic Party that emphasized absolute equal rights for all. The loco-foco message was captivating for young men like Doerr. As early as 1833, he wanted anti-corporate banking reform, prison and education reforms, and a new state constitution. In 1835, after a Charleston mob, burned abolitionist mail, and the administration did nothing in response, New York editorialist William Leggett lashed out at this violation of equal rights. The Democratic Party officially excommunicated Leggett, and people like Doerr took notice. He became an abolitionist, convinced that the Democratic Party, guided by loco-foco philosophy, could effectively deliver universal suffrage to Rhode Islanders. For a more libertarian loco-foco future, Doerr looked back into Rhode Island's legendary founding. In a letter to America's first professional historian, George Bancroft, Doerr invoked the life and ideas of Roger Williams as a source for inspiration in the here and now. Thomas Wilson Doerr, letter to George Bancroft, November 25th, 1835. As Rhode Island men, we like the great and liberal views you have taken of the character and life of Roger Williams, and it gives us pleasure to see the founder of our state in his own time, a poor, oppressed servant of God, called by the multitude who cast him out, a heretic, and disturber of the peace in church and state, taking his historical place as the illustrious advocate of religious and civil liberty. The writings and aspirations of such a man are in the nature of prophecy. His just perception of the native and inalienable right of man in a gloomy and unpropitious age was an evidence of the capacity and worthiness not merely of his own, but of the human mind to exist in a condition of greater freedom than was then known in the social state. And this mind is capable of nothing to which it does not tend. Every discovery of a principle, therefore, conformable to the laws of its nature, he asserted in an age of ignorance and oppression and combatted and overcome by the strong hand of prevalent tyranny, is a prophecy of the destiny of mankind and better. And it may be in remote times to recognize, adopt, and realize that principle in its full extent. The prophecy of Williams is now fulfilled in the constitutions of our states and in that of the United States. It is being fulfilled in the progress of equal rights and Republican principles in the country from which he came. The word of history is that nothing is good for a great and honest mind in a dark period of the world that is not ultimately good for the mind of the race and that is not promised to its efforts for light and emancipation. The noble conceptions of the great men of the past are now in course of a rapid fulfillment. They did without the sight, but the present and generations to come will take care of their memory. Their anti-slavery tendencies were always a thorny political problem for the Dorites. They were smack in the middle of the northern state with the deepest and darkest ties to southern slavery. Rhode Island was the single greatest source of slave trade capital, sailors, and shipping during the 18th century. And this legacy provided the basis of wealth for many of the state's great families. This was a deeply racist society. And while white males may have liked Dor's rhetoric about universal equal rights, they hardly believed African Americans were qualified for the same sort of citizenship as themselves. A strong majority of Rhode Islanders, including Dorites, believed their whiteness by itself elevated them above black people. So all this talk about equal political rights clearly did not apply to them. Dorites like Charles Peckham outright refused to even run for office, fearing that his various heresies, atheism and abolitionism, would set him up as a political punching bag for both parties to hurt the larger movement. Charles Peckham, letter to Thomas Wilson Dor, April 11, 1836. Friend Dor, I was informed by a constitutionalist that my name was placed in the list of senators. And while it cannot be but a pleasure to me, thus to have the good opinion of the committee who have placed me on the constitutional ticket, I think at my duty to the committee and to myself to state the objections which can be argued against me. So that if it be too late to substitute another name in my place before the coming elections, and that without giving me the least offense, it shall be deemed necessary in advancing the general good which we would deserve. In the first place then, in objection of the logical heterodoxy, might be argued against me by religionists, for after much examination and love lost all faith in the supernatural, and as I am one who firmly believes that truth is a friend, an error the enemy of man, I have never hesitated to utter the deep convictions of my heart, be the consequences to myself when they might. Of course, I have had some cruel wounds inflicted upon me. The next objection which may be brought against me is my utter abhorrence of negro slavery, and I am in favor of the free discussion of the whole matter, however much the despots peace may be disturbed. My lesson of abolitionism was learned in a slave holding state before a single press had uttered a voice in the north, and I know from my own seeing that the enormities of slavery are too great to be overlooked, and the system so forcible as to admit of no palliation. I have discovered nothing in historic or philosophic truth unfavorable to immediate emancipation, and in so far as it can be brought about by moral means, my whole heart and soul are devoted. In 1837, Dorr wrote to the Rhode Island State Anti-Slavery Society declaring his full support for abolitionism. He wanted abolition in Washington, D.C., repeal of the gag rule that prevented anti-slavery discussion in Congress, and he opposed annexing Texas. Still, he agreed with people like Peckham and thought that anti-slavery politics was best left to the transcendentalists and poetic dreamers. As proof, he had letters from supporters like C.W. Needham who asked, and why should we undertake to settle the question of slavery? We have nothing to do with it. By 1840, Dorr and most of his suffragists settled in with Martin Van Buren's Democrats. In letters to Boston's resident Loco-Foco Intellectual Orestis Brownson and Jacksonian political boss Amos Kendall, Dorr wrote that the Whigs had to be fought because they meant to roll back everything Loco-Foco Democrats had gained throughout the country in recent years. They were the staunch enemies of all things reform, and any political route to a new state constitution would have to go through the Democratic Party. As early as September 1839, in fact, Loco-Foco Levi Slam joined the Crusade for equal rights in Rhode Island. Slam argued that the U.S. Constitution guaranteed citizens a Republican form of government, and the people possessed an absolute right to alter or abolish their existing governments at will. On March 27th, 1840, Dorrites and abolitionists founded the Rhode Island Suffrage Association, and a little over a year later, they called for a People's Constitutional Convention. The convention met in October and crafted a new constitution for Rhode Island on the basis of universal white male suffrage. Race remained the sharpest dividing line at the People's Convention, with delegates like Dorr opposed to the race qualification, and the majority in favor 46-18. The People's Constitution officially affirmed its spontaneous popular revolutionary origins, guaranteed by a host of Loco-Foco reforms, and provided for further amendment. The vote took place from the 27th to the 29th of December, 1841. Voters overwhelmingly approved it, almost 14,000 in favor, and Amiga 52 opposed. That even included a majority of free holders, almost 5,000 out of 8,000. The state assembly responded to the Dorrites' irregular, unsanctioned convention, with an authorized one of their own in February 1842. Dorr attended as a delegate and tried to convince them to abandon their project and pledge themselves to the People's Constitution. The landholders bitterly refused. Their proposed constitution agreed to universalize suffrage for native-born white males, but it kept the landholding requirement for naturalized immigrants. In March, the landholders' constitution lost 8,689 to 8,013. Over 8,000 Dorrites either abstained or were excluded by the voting qualifications. The People's Constitution, meanwhile, called for elections in April, and Rhode Islanders divided themselves up into warring camps. Everywhere, towns and even families violently ruptured into political conflict, none more so than Dorr's own. In April, his parents wrote to him to express their deepest shame and regret, but their son, who was once so promising, was now about to plunge their state into civil war. Henry and Lydia Dorr to their son, April 8, 1842. We hear with great pain that you are about publishing a proclamation at the head of which you are named governor of the state, which is a violation of the lawful authority of the state. It grieves us to the heart to know that a son of ours arrived at so mature an age and so well versed in the laws of his country should be a participant in acts calculated to bring the state into destruction. Arouse passions which you cannot allay and which God forbid produce civil strife attended with bloodshed and murders. We beseech you.  We again beg entreat and pray you to retire from the strife you are inciting, for the law must prevail or all government is at an end. If your heart is sensible to the parental anguish we have and now suffer, we pray our Heavenly Father will vouch safe and awaken in yours a corresponding feeling for our sufferings and influence you to renounce the course you are pursuing and restore us to a peace of mind which has for a long time been a stranger to us. May God in his infinite mercy prompt you to a decision which only can restore you to the good opinion of your friends and fellow citizens whose esteem is worth the cultivation and preserve our gray hairs from that shame and disgrace which will attend forever if successful your present course and hurry is a sorrowing to the grave. Your affectionate parents and best friends, Sullivan Door, Lydia Door. In the 18th of April People's Elections, Door got 6604 votes for Governor, a significant plunge of support from the December vote on the People's Constitution. Many people thought the Assembly was open to negotiation and actual fighting would only hurt the People's Case. Door still claimed a majority of voters supported the People's Constitution and their governor. Meanwhile the charter election put Samuel Ward King in office for his fourth term as Rhode Island's governor and by May 1842 there were two state governments. Can you imagine a worse situation? Governor King declared the doorites treasonous and the Assembly passed acts criminalizing the People's Regime. President Tyler added to the combustible mix by guaranteeing federal troops to put down any rebellion. Door and his supporters reacted with a frenzy of networking activity, looking to drum up support from out of state. Ideally they could still cobble together a national coalition in Congress to recognize their government. He and many others wrote back and forth to top Democrats around the country making their case. By far, Door's greatest support came from New York's Loco Focos. William Bouch pledged military aid from the city's workmen in April. Alan Sniffin, one of the original Loco Focos who conspired against Tammany Hall in the military and civic hotel, promised full regiments. Perhaps more importantly, he vowed to champion the cause openly before Tammany Hall. Smelling rebellion all around him, Governor King declared martial law in late April and the doorites planned to assault state buildings in response. The legislature officially requested federal support on the 4th of May and President Tyler sent military advisors. This weak display of commitment encouraged the suffragists, but Door expected he'd be captured and fled the state. He sailed into New York City on May 8th and spent days visiting prominent Loco Focos like Levi Slam, hatching plans for an invasion. He believed that Rhode Island may be tiny and its people weak on their own, but a struggle built around class divisions could provide the force necessary to put him in the governor's mansion. If the common people were awakened to the fact that a small band of aristocrats were risking civil war to unjustly hold on to their power, all exploited Americans would rise up to support their natural allies, the suffragists. Flurries of letters from New York Loco Focos convinced him that they were fully behind the Rhode Islanders. Alexander Ming Jr. and Alexander Craston to Thomas Wilson Door, 13 May 1842. Dear sir, several military companies of the city and vicinity having tendered their services to us to form a military escort to accompany you to Providence. We have the honor to apprise you of the fact. This honor which they so much desire, we hope will meet with your cheerful acceptance. Quartermaster Slam will await your reply. With sentiments of the highest respect, we are respectfully Alexander Ming Jr., Colonel, 13th Regiment, New York State Artillery, Alexander Craston, Lieutenant Colonel of the 236th Regiment, New York Infantry. In New York City, a park meeting of Loco Focos elected emissaries to Rhode Island that would travel back with Door. They chose Leave I Slam and several others and as quickly as that, Door left. He did not have a proper army together yet, but he was certain the moral force of justice was on his side. The people's governor, back in Providence, ordered his forces to attack and seize the state arsenal on May 19th. His own father and brother were inside, training cannons on their radical relative. The Civil War everyone had been fearing for months was on. Next week on Liberty Chronicles, we light up those cannons and see what the rights were really made of. Liberty Chronicles is a project of Libertarianism.org. It is produced by Test Terrible. If you've enjoyed this episode of Liberty Chronicles, please rate, review and subscribe to us on iTunes. For more information on Liberty Chronicles, visit Libertarianism.org.