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

Create 'fcalib' Github Project #58

Open
JanFK opened this issue Jun 10, 2013 · 1 comment
Open

Create 'fcalib' Github Project #58

JanFK opened this issue Jun 10, 2013 · 1 comment
Milestone

Comments

@JanFK
Copy link
Contributor

JanFK commented Jun 10, 2013

This is how I imagine the course of action:

  • Merge fcalib & fcaapi into just fcalib and create the respective Github project in the fcatools organization
  • Copy everything that is reusable & fca-related from our project into fcalib (i.e. also the association related code, as well as the burmeister code etc.)
  • Export this new fcalib as a jar (or better put it in the maven central repository), use it as a dependency in ConExp-NG & remove the code that we moved to fcalib
  • Initiate a discussion on what the API currently provides and what not (e.g. is the complexity burden of generics worth it?)

This is as much as I would do as I don't have time anymore. But after the above steps are done there is still a lot of things to do. I would create the following two milestones with the according issues in the fcalib project if Baris agrees:

  • Milestone 1 - "Freeze the semantics / Make the current functionality testable"
    • Make our <String,String>-specialised code generic (solely a Sisyphean task I imagine)
    • Create (a lot of) unit tests for all the functionality fcalib provides
    • Create a thorough benchmark suite to be able to measure performance improvements/regressions
    • Improve the documentation
  • Milestone 2 - "Make the code harder, better, faster"
    • Improve the efficiency of the current code by e.g.
      • changing the API a bit and rewriting our inefficent implementations to take advantage of these changes
      • looking at Colibri
      • reading through Fast FCA
      • and, of course, measuring and documenting the improvements with the benchmark suite without breaking the semantics using the unit tests as an assistance
    • Try to improve the API further by e.g.
      • thinking about the benefits/disadvantages of generics (find use cases and if there aren't any remove them)
      • looking at best practices in Java
      • watching How To Design A Good API and Why it Matters
      • getting input from users (also asking Baris Sertkaya)
      • looking at other "fcalib"-projects in possibly different programming languages
      • and, of course, trying to use the api e.g. by creating small tutorials / user documentation
    • Try to add useful new fca methods/code by e.g.
      • looking at other "fcalib"-projects in possibly different programming languages, e.g. conexp-clj
      • looking at some FCA papers

I (@eugenkiss) feel this would be a perfect task that Mr.Jäschke (@rjoberon) could write out for someone to work on. I'd actually love to do it myself but I wouldn't be able to stark the task before summer 2014 (before that I'll be very busy and I haven't even participated in Mr.Jäschke's FCA lecture!). Of course, as the author Baris Sertkaya needs to agree with the plan as well as Mr.Jäschke. Anyway, I just wanted to write down my ideas.

@ghost ghost assigned eugenkiss Jun 10, 2013
@eugenkiss
Copy link
Contributor

This won't happen during our remaining development cycle. What a pity, but it can still be finished in the future.

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

No branches or pull requests

2 participants