Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Roadplan for CruiseControl.NET #264

Open
savornicesei opened this issue Apr 19, 2019 · 10 comments
Open

Roadplan for CruiseControl.NET #264

savornicesei opened this issue Apr 19, 2019 · 10 comments

Comments

@savornicesei
Copy link
Contributor

savornicesei commented Apr 19, 2019

Hi @RubenWillems, @obones
Based on your discussion, I would love to continue the discussion where CC.NET could go given the current state of the development tools and the advent of CI/CD.

Some questions that I have:

  1. What's the relation with ThoughtWorks ? Even the license is not a well-known OSS license but a "ThoughtWorks Open Source Software License".
  2. Can the license be changed to MIT/ Apache 2.0? I think agreement from all contributors is needed.
  3. How come the latest releases (up to 1.8.5) and release tags are missing from GitHub?
  4. There are pull requests waiting to be incorporated in the code base. It would be nice to do a new CC.NET release
  5. We could configure CC.NET to be automatically build in appveyor / travis. No need for additional infrastructure except GitHub and its OSS-friendly (aka free) ecosystem
  6. The UI is sooo static
  7. The build log is sooo hard to follow (perhaps there's an xslt template for pretty view)

I'm more familiar with Jenkins. The current project I'm working on is using svn and CC.NET but the plan is to move to Git and Bamboo as CI server.
But as a .NET developer (and a linux user) I would love to have more CI-related tools build in .NET instead of java (like Jenkins, Bamboo, SonarQube, Nexus).

Best,
Simo

@RubenWillems
Copy link
Member

RubenWillems commented Apr 19, 2019 via email

@savornicesei
Copy link
Contributor Author

savornicesei commented Apr 22, 2019

Hi @RubenWillems

1.9 release

It was stated in the 1.8.5 release that the next will be 1.9 but ...
Where is the 1.9 branch? Currently there's no 1.9 branch in GH and quite a lot of differences between 1.8 branch and master. The tags also stop at ccnet_1_4_5_CTP.
I suppose the branching strategy in SVN was to create a next-release branch and work on it.
On git, we should have the master as the main development line - containing only finished features. Is it possible to acomplish this for 1.9? or just release 1.9 from its svn branch?

vNext release (2.0)

This should bring .NET Core 3.0 to the table and any other unfinished feature still lingering around.
Plus:

  • MIT license or Apache 2.0 - signoff from all contributors I think is needed
  • change ThoughtWorks namespaces to ... ccnet!?! CruiseControlNet?
  • cleanup code (remove obsolete fields, unused code, commented code, etc)
  • evaluate if it's worth switching from Sandcastle to DocFx
  • Include Sandcastle documentation to main site
  • some new UI prototype that works side by side with the existing one
    • brainstorming resulting in mockups
    • we can inspire from Jenkins that slowly introduced their new UI redesign called Ocean Blue (supporting pipelines)
    • decide on a front-end library: Angular, react, vue,
  • replace Gendarme with Roslyn
  • ....

Next steps (IMHO)

  • decide branching strategy (can we merge 1.9 in master? Can we take out unfinished features from master? Or better work on 1.9 branch, release it and then merge it to master ?)

  • make it build

  • replace all build scripts with a cake one (that's also cross platform)

  • use GitVersion for versioning

  • Add TravisCI and AppVeyor ci scripts for master branch (and 1.9 if needed)

  • Have AppVeyor publish nightly builds to JFrog bintray or any other hosting with free plan for OSS projects. Perhaps SourceForge? Or?

  • update tools, especially NAnt to 0.92 + contrib extension (there are some goodies there for .NET projects)

  • Decide what pull-requests to be merged into 1.9. There is a PR targeting 1.6 but most of them are targeting master and several are targeting 1.8

  • update to .NET 4.5

  • use libraries from NuGet instead of \lib folder if possible

  • Cleanup documentation and migrate it to jekyll site that's supported by GitHub Pages. Perhaps move it to a gh-pages branch?

  • Extract confluence.public.thoughtworks.org pages from internet archive and add relevant content to current documentation

Misc

Do you still have a backup of the old site (running on ChilliProject)? I'm more interested in the list of tickets and their status, including feature requests.
Is it possible to have the SVN still available in sourceforge but in read-only mode? And a note on the site's frontend that it moved to github? Again, it would he helpful to get a copy of the old SVN repository.

Best,
Simo

@mintsoft
Copy link
Contributor

mintsoft commented Apr 23, 2019

Just to chime in here, I think all of those look like steps that are worth taking. I'd suggest that for 1.9 it'd make the most sense to base it on master. I use a fork of ccnet with a few additions built from master and it's absolutely fine. I don't think there's any regressions that I've come across vs 1.8.5 that would preclude it from being regarded as stable enough for release.

@mintsoft
Copy link
Contributor

mintsoft commented Apr 23, 2019

@savornicesei
Copy link
Contributor Author

@mintsoft Let's not forget git ones: #206, #254, #258. For #163 - a decision is required.

Perhaps it will be easier to merge all on master, stabilize it and release 1.9 from it.

Digging through web archive seems like the project switched several systems until landing on GitHub that's why there are PRs but no tickets related to them. I would really like to know what tickets were left behind. Or just recreate/import them here, on GH.

@mintsoft
Copy link
Contributor

Perhaps it will be easier to merge all on master, stabilize it and release 1.9 from it.

Yeah I think that's definitely the easiest approach

@RubenWillems
Copy link
Member

The master branch contains the code for 1.9.

In the past we developped in the main branch, and when we decided that all features where done for a release, we made a release specific branch. From that point on, only bugfixes and small tweaks like UI were done in that branch, and ported back to the main. Development could continue in the main branch of course.
I see a there seems to be intrest in a new release, the question will be what items would be included?
if they are not breaking with 1.8.5 we could make them in the 1.8 branch and release 1.8.6.
For all the other stuff, like build on Linux, use .Net core, I would place those in the main branch, and when things look ready, we can decide when to make a branch for 2.0. The 1.9 can be a nightly build range.
Or we can leave the 1.8 as is, clean up the 1.9 branch (basically revert to 1.8.5 I think) and merge in the most wanted items. That way there is not a problem with compatibility. And when 1.9 is out, do all the core rework (making a 1.9 branch for bugfixing)
I personally prefer cleaning up the main / 1.9 branch, and merge the most wanted items in there.

@RubenWillems
Copy link
Member

There 2 new projects added one for the 1.9 release and one for the 2.0 release.
As suggested a 1.9 release with the most wanted improvements,
and a 2.0 for the major rework.
Any commnents are welcome.

@RubenWillems
Copy link
Member

I'm trying to port CCNet to .NEt Core.
Stuff done so far :
° netreflector + tests
° CCNet
* Objection + tests
* Remote (dropped the remoting part because that does not exist in .Net Core)

Now the problem starts with the tests, because we used various mocking libraries
through the years :-(

Questions :
° should we still use mocking libraries, or do we write our own fakes ?
this ensures that we do not have this problem again in the future,
but it can be a lot of work
° if we use a mocking library, which one?
the only one I could find after a quick search was : MOQ
https://github.com/moq/moq
I never used it though
--> learning this library can also be a lot of work

any preferences ?

any second thoughts, suggestions

@obones
Copy link
Contributor

obones commented Jun 5, 2019

Here at work, we are using MOQ 4.10 (https://github.com/moq/moq4) with .Net Core, so I would feel right at home.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants