Skip to content

Commit

Permalink
Merge pull request #275 from red-gate/split-libraries-from-radar
Browse files Browse the repository at this point in the history
Split libraries from radar
  • Loading branch information
fffej authored Jul 18, 2019
2 parents 38e0c2b + d428a6f commit d18146f
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 20 deletions.
20 changes: 0 additions & 20 deletions radar.csv
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,8 @@ Delphi,endure,languages and frameworks,false,"SQL Backup engine is written in De
JavaScript (pre ES6),endure,languages and frameworks,true,"We don't use older versions of JavaScript. ES6 features like promises, modules and classes significantly improve the JavaScript experience, and tools like BabelJS allow us to adopt this with confidence. We will update older JavaScript implementations when possible, but will not actively retire them across our codebase."
JavaScript (ES6+),adopt,languages and frameworks,false,"We use JavaScript for rapid prototyping of ideas because it allows us to go faster. In code bases where we already have significant JavaScript we will continue to use modern JavaScript."
TypeScript,adopt,languages and frameworks,false,"TypeScript provides an advanced type system on top of JavaScript. We have a preference for TypeScript in production code because the optional type safety can help and improved tool support."
Autofac,adopt,languages and frameworks,false,"Autofac is an Inversion of Control container for .NET Core, ASP.NET Core, .NET 4.5.1+ and our preferred IoC container choice. Autofac allows you to register components and express dependencies through its flexible module system and simple extension points."
Ninject,endure,languages and frameworks,false,"Ninject is a dependency injector for .NET applications. However, Autofac is our preferred IoC container."
NUnit 2,endure,languages and frameworks,false,"NUnit is our default framework for writing unit and integration tests. NUnit 2 is working well in most projects that use it, but consider upgrading to NUnit 3 for newer features."
NUnit 3,adopt,languages and frameworks,false,"NUnit is our default framework for writing unit and integration tests. We use NUnit 3 by default for new projects."
FsCheck,explore,languages and frameworks,true,"<a href='https://fscheck.github.io/FsCheck/'>FsCheck</a> is a framework for property-based testing."
Pester,adopt,languages and frameworks,false,"Pester is our default framework for writing tests in PowerShell. We use Pester by default for new PowerShell tests."
Balsamiq,adopt,tools,false,"Balsamiq gives us the ability to create quick low-fidelity wireframes to describe workflows."
Git,adopt,tools,false,"Git is our defacto VCS, and all repositories are stored on GitHub."
Expand All @@ -33,10 +30,7 @@ Edge,adopt,platforms,false,"Edge is Microsoft's evergreen browser. We support it
IE 11,endure,platforms,true,"IE 11 is the default browser on Windows 10 and makes up approximately 8% of the visits to Redgate.com. It is also the only browser available by default on the server versions of Windows (including Windows Server 2019). Even though, for new products, it does not need to be supported. For products that are supporting IE 11 and feeling the pain, the next major version is the point you can drop the support (when confirmed with the Product Owner). Consider supporting IE 11 for admin interfaces or initial setup that is supposed to be done directly on the server."
IE 10 and under,endure,platforms,true,"We do not support IE10 and under. Any implementation to support IE10 can be removed, but there is no strong drive to do so across our codebase."
Raven DB,retire,tools,false,"We previously used Raven DB in DLM Dashboard but our experience was not positive."
NSubsitute,adopt,languages and frameworks,false,"NSubstitute is our default mocking library of choice. We feel it's got less setup cost than Moq and requires fewer .Object calls."
Moq,endure,languages and frameworks,false,"Moq is a great framework for mocking, but we prefer NSubstitute's simplicity. We see no benefit in having a common mocking framework across solutions."
Fakes,explore,techniques,false,"We've experimented using <a href='https://github.com/testdouble/contributing-tests/wiki/Test-Double'>Fakes</a> in the Redgate Usage Client - fakes used in the test can reduce the amount of mocking is required and can make the tests simpler."
Rhino Mocks,endure,languages and frameworks,true,"Rhino Mocks is no longer actively maintained, nor does it support .NET Core / .NET Standard. We have some tests that use RhinoMocks. While we shouldn't write any more, we have no plans to actively replace these uses."
Wix 3,adopt,tools,false,"Windows Installer XML Toolset 3 (WiX), is a free software toolset that builds Windows Installer packages from XML. We only use Wix v3."
Inno Setup,endure,tools,false,"SQL Backup uses divergent installer technology."
RedGate.Usage.Client,adopt,tools,false,"Redgate's standard tool for Product and Feature usage reporting."
Expand Down Expand Up @@ -64,21 +58,16 @@ WPF,adopt,languages and frameworks,false,"Windows Presentation Foundation (WPF)
Electron,adopt,languages and frameworks,false,"Electron is an open-source desktop UI framework. It's developed/maintained by GitHub, and used by Microsoft for VS Code. It's one of our prefered desktop UI technologies, especially for standalone desktop tools."
Check for Updates (CfU),endure,tools,false,"Redgate's established mechanism for distributing product upgrades. The update process is manual and intrusive for users, leading to slow version uptake and version fragmentation in production. We're keen to explore alternatives."
"Release Management: User-controlled background updates",explore,techniques,false,"Allowing a user to kick off a background upgrade of products, from the UI. The only drawback of the current mechanism is the lack of support for changelogs and alerts for breaking changes. Being explored by ICloneable&lt;Sheep&gt; on SQL Clone."
Log4Net,endure,languages and frameworks,false,"Log4Net is no longer actively maintained. We've also had problems with our use of it by having a single static root. We don't recommend this for new applications, but can tolerate existing usages."
SeriLog,adopt,languages and frameworks,false,"Serilog is our preferred logging framework. It's well maintained, supports structured event data and is portable between .NET platforms."
Oracle database,explore,platforms,false,"Oracle database is a strong rival to SQL Server. Redgate has legacy tools for this suite (Oracle Compare & Source Control), and the space is under ongoing investigation by Foundry (with support from TKomp)."
SQL Server on Linux,explore,platforms,false,"SQL Server has had growing support on Linux for some time, but Linux is not a platform that Redgate actively targets. Current windows-based tools support connecting to a SSoL database, and further value is being explored in Foundry."
Azure DB Studio,explore,platforms,false,"Azure DB Studio is Microsoft's aspirational replacement for SSMS. Potential Redgate tooling support is being investigated by Foundry."
SQL Change Automation,explore,tools,false,"Redgate SQL Change Automation is our commerical offering to help people manage the state of databases as part of application deployment. We should investigate if/how to use our own tools as part of our development activities. Versioning Teams to investigate this by looking at how CORE manage databases."
React,adopt,languages and frameworks,false,"React is our web framework of choice. It's popular, it's easy to understand and it's got great tooling support."
Honeycomb Web Toolkit,adopt,languages and frameworks,false,"Honeycomb is our design system and the web toolkit makes adopting this in your own projects easy."
SignalR,adopt,languages and frameworks,false,"SignalR allows server code to send asynchronous notifications to client-side web applications."
Webpack,adopt,languages and frameworks,false,"Webpack is a module bundler. It's main purpose is to bundle JavaScript files for usage in a browser."
Babel,adopt,languages and frameworks,false,"Babel is a JavaScript compiler allowing you to confidently use the latest JavaScript features in all browsers."
Enzyme,adopt,languages and frameworks,false,"Enzyme is a JavaScript Testing utility for React that makes it easier to assert, manipulate and traverse your React Components' output."
Redux,adopt,languages and frameworks,false,"Redux is a predictable state container for JavaScript apps. We recommend this when state management becomes complicated with React alone."
Knockout.js,endure,languages and frameworks,false,"Knockout is a minimilast library for binding data to web views. We prefer React now though existing usages of knockout.js are fine."
JQuery,endure,languages and frameworks,true,"Modern browsers and advances in JavaScript means we don't get value by using jQuery any more."
"Release Management: Release scripts",adopt,techniques,false,"Using a single powershell script (basic-release.ps1 or using RG.Release) to manage your entire release process is a good trade off between saving effort, and security and accountability for each release."
"Continuous Delivery",adopt,techniques,true,"From Accelerate: a development practice where software is in a deployable state throughout its lifecycle, and the team prioritizes keeping the software in a deployable state over working on new features. Fast feedback on the quality and deployability of the system is available to all team members, and when they get reports that the system isn't deployable, fixes are made quickly. Finally, the system can be deployed to production or end users at any time, on demand."
"Octopus Deploy (internal deployments)",adopt,techniques,true,"Octopus Deploy is used for deploying software within Redgate. Whenever we deploy something running on Redgate's infrastructure, it should be deployed through Octopus. This can be configured with ITOps."
Expand All @@ -95,7 +84,6 @@ Physical whiteboards,adopt,tools,false,"Some teams use physical whiteboards for
"Redgate Installer",adopt,tools,false,"Redgate Installer is our standard installer which we should use in preference to other installer technologies because it allows us to ship products together, provides a consistent experience, and integrates with our release, licensing and update systems."
"TeamCity",adopt,tools,false,"We build all of our projects on TeamCity because it's simpler to use one CI system across the company. Our use of build scripts rather than complex TeamCity configuration reduces coupling of our builds to TeamCity itself."
"Prettier",adopt,tools,false,"Prettier automates consistent code styling for web languages by providing as few formatting options as possible."
"RedGate.Legacy.*",endure,languages and frameworks,false,"We have a collection of old technologies in the 'RedGate.Legacy' packages, as the name suggests these are old and should not be adopted. But moving away from them can be expensive so we don't think its worth the cost."
"Dogfooding",adopt,techniques,false,"As a general principle we should use our own tools to solve problems. This process is known as <a href='https://en.wikipedia.org/wiki/Eating_your_own_dog_food'>dog-fooding</a>. We should do this even if we feel our products don't solve our own problems perfectly because doing so is the best way to learn how to improve our products."
"Java",endure,languages and frameworks,false,"Typically we don't use Java, but we will when necessary. Examples include the SQL Change Automation plugins for TeamCity, Bamboo and Jenkins."
"PowerShell Core 6",adopt,languages and frameworks,true,"For internal automation we use PowerShell Core 6."
Expand All @@ -117,15 +105,10 @@ Physical whiteboards,adopt,tools,false,"Some teams use physical whiteboards for
"Ranorex",endure,languages and frameworks,false,"Ranorex is a commercial GUI test automation framework that was used for various Redgate products in the past. It only remains in-use with SQL Source Control, and should not be adopted any further."
"UIAutomation/System.Windows.Automation",endure,languages and frameworks,false,"UI Automation is an accessibility framework, while System.Windows.Automation supports automation of WPF clients. Microsoft recommend use of Appium and WinAppDriver rather than building your own automation framework with these tools."
"Appium with WinAppDriver",adopt,languages and frameworks,false,"<a href='https://github.com/Microsoft/WinAppDriver'>WinAppDriver</a> is a service to support Selenium-like UI Test Automation on Windows Applications. It is Microsoft's recommendation for automated UI-driven functional testing for Windows applications."
"DotNetZip",retire,languages and frameworks,false,"<a href='https://github.com/haf/DotNetZip.Semverd'>DotNetZip</a> is an opensource .NET library for handling ZIP files. We prefer the capabilities provided by the .Net framework in System.IO.Compression."
"7Zip",endure,languages and frameworks,false,"<a href='https://www.7-zip.org/'>7Zip</a> is an open source file archiver and compression tool. We prefer the capabilities provided by the .Net framework in System.IO.Compression."
"System.IO.Compression",adopt,languages and frameworks,false,"System.IO.Compression is the .Net Framework/Core provided set of compression and decompression services for streams."
"ReSpeller using AmE",adopt,tools,false,"<a href='https://www.jetbrains.com/help/resharper/Spell_Checking.html'>ReSpeller</a> is a spell-checking engine integrated with ReSharper. We use American English to be consistent with .NET Framework and other 3rd party libraries. Additional words are stored in a solution team-shared settings file (*.sln.DotSettings)."
"Time-based estimation",endure,techniques,false,"We've found time-based estimation to be costly, difficult to be accurate with, and difficult to apply to non-repeatable tasks. Broad brush estimates, such as 'few days', 'couple of weeks', 'month or more', can be useful to set expectations with non technical people."
"User Stories",explore,techniques,false,"User stories are short, simple description of a feature as described from the perspective of end users. They typically follow a simple template, As a X, I want Y to achieve Z. Both Versioning & Automation and the Prompt are using this approach."
"Open API specification",adopt,techniques,false,"Our public web-based APIs are exposed through the <a href='https://www.openapis.org/'>Open API</a> specification interface as being the description for REST APIs, which allows both humans and computers to discover and understand the capabilities of a service without requiring access to source code, additional documentation, or inspection of network traffic."
"NSwag",explore,languages and frameworks,false,"An implementation of the Open API specification currently being explored by the Data Catalog team."
"Swashbuckle",explore,languages and frameworks,false,"An implementation of the Open API specification currently being explored by the Versioning teams for providing the out-of-process APIs."
"Value Stream Mapping",explore,techniques,false,"<a href='https://en.wikipedia.org/wiki/Value_stream_mapping'>Value Stream mapping</a> is a technique to visualize the steps needed in a process. By doing so we can use a <a href='https://en.wikipedia.org/wiki/Systems_theory'>systems thinking</a> mindset to look for optimizations and perform small experiments to learn what to optimize. The Oracle/V&A teams will look at exploring this technique."
"Automated Code Style Settings",adopt,techniques,false,"Each team should automate their coding style using a team shared R# settings file."
"Stop the line when master is red",adopt,techniques,false,"A red build of the master branch should be teams' top priority. When it happens, all the work in a team halts and team members agree who is fixing it. This ensures that the problem is visible and it's the whole team's responsibility to solve it. This approach also encourages teams to fix flaky tests."
Expand All @@ -145,13 +128,10 @@ Physical whiteboards,adopt,tools,false,"Some teams use physical whiteboards for
"ASP.NET 4.x",retire,languages and frameworks,false,"ASP.NET 4.x and below should be retired (slowly as it's a major undertaking). New development is on ASP.NET Core, and future versions of <a href='https://blogs.msdn.microsoft.com/webdev/2018/10/29/a-first-look-at-changes-coming-in-asp-net-core-3-0/'>ASP.NET will only support .NET Core</a> so it makes sense to retire this in products we expect to stick around."
"Chocolatey",adopt,tools,false,"<a href='https://chocolatey.org/'>Chocolatey</a> is a package manager for Windows. We use this internally to install tools such as Vagrant and Virtual Box and as part of our test infrastructure."
"OWASP Dependency-Check",explore,tools,true,"<a href='https://github.com/jeremylong/DependencyCheck'>Dependency-Check</a> is a Software Composition Analysis (SCA) tool that attempts to detect publicly disclosed vulnerabilities contained within a project's dependencies. Its value to Redgate is being explored by the coaches and the Toolbelt Team."
"FluentAssertions",adopt,languages and frameworks,false,"<a href='https://fluentassertions.com'>FluentAssertions</a> is an assertion framework that allow you to more naturally specify the expected outcome of a TDD or BDD-style unit tests. Much more readable than Assert.That()."
"Shoudly",endure,languages and frameworks,false,"<a href='https://shouldly.readthedocs.io/en/latest/'>Shouldly</a> is an assertion framework similar to FluentAssertions. We decided to adopt the latter."
"Postman",explore,tools,true,"<a href='https://www.getpostman.com/'>Postman</a> is an API development environment. Currently being explored by the versioning teams."
"KeePass",adopt,tools,true,"<a href='https://keepass.info/'>KeePass</a> allows to store all passwords in one encrypted file in GitHub, so you need to care about one master password only, rather than multiple passwords to multiple resources."
"Semantic UI",explore,languages and frameworks,true,"<a href='https://react.semantic-ui.com/'>Semantic UI</a> is a library of web controls for modern web development, similar to Bootstrap, that has an official React library."
"honeycomb-semantic-ui-theme",explore,languages and frameworks,true,"An <a href='https://github.com/red-gate/honeycomb-semantic-ui-theme'>NPM package</a> to theme <a href='https://semantic-ui.com/'>Semantic UI</a> in the style of Honeycomb."
"Task Parallel Library (TPL)",retire,languages and frameworks,true,"The <a href='https://docs.microsoft.com/en-us/dotnet/standard/parallel-programming/task-parallel-library-tpl'>Task Parallel Library (TPL)</a> is a System.Threading a backport library for .NET Framework 3.5. Since we should be adopting .Net Framework 4.7+/.Net Core everywhere, there is no a need for TPL as an extra dependency."
"Semantic Versioning",adopt,techniques,true,"<a href='https://semver.org/'>Semantic Versioning</a> is a de-facto industry standard for versioning applications. We should strive to use it, at least for internal libraries. For user-facing products SemVer may conflict with marketing needs."
"ActiPro WPF controls",endure,languages and frameworks,true,"<a href='https://www.actiprosoftware.com/'>ActiPro</a> is a set of WPF controls. Currently being used in SQL Prompt, SQL Multiscript, ANTS Profiler and Oracle Tools."
"Hybrid boards",explore,techniques,true,"<a href='https://medium.com/@johnpcutler/hybrid-boards-for-roadmapping-736a0514d3d8'>Hybrid boards</a> are an attempt to model the reality of complex work onto a Kanban-like board. They are being explored by the SQL Prompt team and Provisioning teams."
Expand Down
Loading

0 comments on commit d18146f

Please sign in to comment.